为什么 mc.gameSettings.keyBindAttack.setPressed(true) 不起作用?

问题描述 投票:0回答:0

我有一些用于 Forge 的 Minecraft Mod 1.16.5 的代码。 无论如何 mc.gameSettings.keyBindAttack.setPressed(true) 似乎没有做它应该做的事情。 当我按下左键(攻击)时,这行代码也没有任何反应。 但是对于其他一些属性(例如 mc.gameSettings.keyBindUseItem....),这可以正常工作。

有人可以帮助我吗?

@SubscribeEvent(priority = HIGHEST)
    public void tickEvent(TickEvent.ClientTickEvent event)
    {

        if (event.phase != TickEvent.Phase.START) return;
        if (mc.currentScreen instanceof MainMenuScreen || mc.currentScreen instanceof ChatScreen) return;
        assert mc.player != null;

        mc.gameSettings.keyBindAttack.setPressed(true);

        if (keyBinding == null) return;

        else{


            ArrayList<String> list = new ArrayList<String>();

            Minecraft minecraft = Minecraft.getInstance();
            ClientPlayerEntity player= minecraft.player;
            ClientWorld level = minecraft.world;

            assert player != null;
            RayTraceResult block =  player.pick(200.0D, 0.0F, false);
            RayTraceResult fluid =  player.pick(200.0D, 0.0F, true);


            if(block.getType() == RayTraceResult.Type.BLOCK)
            {
                BlockPos blockpos = ((BlockRayTraceResult)block).getPos();
                assert level != null;
                BlockState blockstate = level.getBlockState(blockpos);
                LOGGER.info("Looking at: "+blockstate.getBlock()+"\nPosition= "+ blockpos.getX() + ", " + blockpos.getY() + ", " + blockpos.getZ());
                mc.player.connection.getNetworkManager().sendPacket(new CPlayerDiggingPacket(CPlayerDiggingPacket.Action.START_DESTROY_BLOCK, blockpos, Direction.SOUTH));

            }

            if(fluid.getType() == RayTraceResult.Type.BLOCK)
            {
                BlockPos blockpos = ((BlockRayTraceResult)fluid).getPos();
                assert level != null;
                BlockState blockstate = level.getBlockState(blockpos);
                LOGGER.info("Looking at: "+blockstate.getBlock()+"\nPosition= "+ blockpos.getX() + ", " + blockpos.getY() + ", " + blockpos.getZ());
                mc.player.connection.getNetworkManager().sendPacket(new CPlayerDiggingPacket(CPlayerDiggingPacket.Action.START_DESTROY_BLOCK, blockpos, Direction.SOUTH));

            }

        }
        if (i++ < delay) return;
        i = 0;



        //if (delay == 0) KeyBinding.setKeyBindState(keyBinding.getKey(), true);
        //KeyBinding.onTick(keyBinding.getKey());


    }
minecraft forge
© www.soinside.com 2019 - 2024. All rights reserved.