diff --git a/src/main/java/net/mcreator/superbwarfare/client/ClickHandler.java b/src/main/java/net/mcreator/superbwarfare/client/ClickHandler.java index bd4c28db2..b5127ffe5 100644 --- a/src/main/java/net/mcreator/superbwarfare/client/ClickHandler.java +++ b/src/main/java/net/mcreator/superbwarfare/client/ClickHandler.java @@ -6,14 +6,18 @@ import net.mcreator.superbwarfare.entity.ICannonEntity; import net.mcreator.superbwarfare.entity.MortarEntity; import net.mcreator.superbwarfare.init.ModItems; import net.mcreator.superbwarfare.init.ModMobEffects; +import net.mcreator.superbwarfare.init.ModSounds; import net.mcreator.superbwarfare.init.ModTags; import net.mcreator.superbwarfare.network.ModVariables; import net.mcreator.superbwarfare.network.message.*; import net.mcreator.superbwarfare.tools.TraceTool; import net.minecraft.client.Minecraft; +import net.minecraft.sounds.SoundSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.event.InputEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -44,7 +48,7 @@ public class ClickHandler { ModUtils.PACKET_HANDLER.sendToServer(new FireMessage(1)); } if (button == GLFW.GLFW_MOUSE_BUTTON_RIGHT) { - if (Minecraft.getInstance().player.hasEffect(ModMobEffects.SHOCK.get())) { + if (player.hasEffect(ModMobEffects.SHOCK.get())) { event.setCanceled(true); } @@ -59,7 +63,6 @@ public class ClickHandler { Player player = Minecraft.getInstance().player; if (player == null) return; - if (player.isSpectator()) return; ItemStack stack = player.getMainHandItem(); @@ -67,7 +70,7 @@ public class ClickHandler { int button = event.getButton(); if (button == GLFW.GLFW_MOUSE_BUTTON_LEFT) { - if (Minecraft.getInstance().player.hasEffect(ModMobEffects.SHOCK.get())) { + if (player.hasEffect(ModMobEffects.SHOCK.get())) { event.setCanceled(true); return; } @@ -75,7 +78,7 @@ public class ClickHandler { event.setCanceled(true); ModUtils.PACKET_HANDLER.sendToServer(new DroneFireMessage(0)); } - if (player.getVehicle() != null && (player.getVehicle() instanceof ICannonEntity)) { + if (player.getVehicle() != null && player.getVehicle() instanceof ICannonEntity) { event.setCanceled(true); ModUtils.PACKET_HANDLER.sendToServer(new VehicleFireMessage(0)); return; @@ -87,17 +90,17 @@ public class ClickHandler { } if (button == GLFW.GLFW_MOUSE_BUTTON_RIGHT) { - if (Minecraft.getInstance().player.hasEffect(ModMobEffects.SHOCK.get())) { + if (player.hasEffect(ModMobEffects.SHOCK.get())) { event.setCanceled(true); } - if (player.getMainHandItem().is(ModTags.Items.GUN) || (player.isPassenger() && (player.getVehicle() instanceof ICannonEntity))) { + if (player.getMainHandItem().is(ModTags.Items.GUN) || (player.isPassenger() && player.getVehicle() instanceof ICannonEntity)) { event.setCanceled(true); ModUtils.PACKET_HANDLER.sendToServer(new ZoomMessage(0)); } } if (button == GLFW.GLFW_MOUSE_BUTTON_MIDDLE) { - if (Minecraft.getInstance().player.hasEffect(ModMobEffects.SHOCK.get())) { + if (player.hasEffect(ModMobEffects.SHOCK.get())) { event.setCanceled(true); } } @@ -114,7 +117,7 @@ public class ClickHandler { double scroll = event.getScrollDelta(); - if (stack.is(ModTags.Items.GUN) && (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).zoom) { + if (stack.is(ModTags.Items.GUN) && player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables()).zoom) { var tag = stack.getOrCreateTag(); if (tag.getDouble("min_zoom") != 0 && tag.getDouble("max_zoom") != 0) { ModUtils.PACKET_HANDLER.sendToServer(new AdjustZoomFovMessage(scroll)); @@ -134,7 +137,17 @@ public class ClickHandler { } } - private static void setKeyState(int key, int state) { + private static void setKeyState(InputEvent.Key event) { + int key = event.getKey(); + int state; + if (event.getAction() == InputConstants.PRESS) { + state = 1; + } else if (event.getAction() == InputConstants.RELEASE) { + state = 0; + } else { + return; + } + Player player = Minecraft.getInstance().player; if (player == null) return; @@ -151,16 +164,34 @@ public class ClickHandler { public static void onKeyPressed(InputEvent.Key event) { if (notInGame()) return; - boolean clicked; - if (event.getAction() == InputConstants.PRESS) { - clicked = true; - } else if (event.getAction() == InputConstants.RELEASE) { - clicked = false; - } else { + Player player = Minecraft.getInstance().player; + if (player == null) return; + if (player.isSpectator()) return; + + setKeyState(event); + + int key = event.getKey(); + if (key == Minecraft.getInstance().options.keyJump.getKey().getValue()) { + handleDoubleJump(player); + } + } + + private static void handleDoubleJump(Player player) { + Level level = player.level(); + double x = player.getX(); + double y = player.getY(); + double z = player.getZ(); + + if (!level.isLoaded(player.blockPosition())) { return; } - setKeyState(event.getKey(), clicked ? 1 : 0); + if (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables()).playerDoubleJump) { + player.setDeltaMovement(new Vec3(player.getLookAngle().x, 0.8, player.getLookAngle().z)); + level.playLocalSound(x, y, z, ModSounds.DOUBLE_JUMP.get(), SoundSource.BLOCKS, 1, 1, false); + + ModUtils.PACKET_HANDLER.sendToServer(new DoubleJumpMessage(false)); + } } } \ No newline at end of file diff --git a/src/main/java/net/mcreator/superbwarfare/event/PlayerEventHandler.java b/src/main/java/net/mcreator/superbwarfare/event/PlayerEventHandler.java index f96d33dcb..6192ed0e1 100644 --- a/src/main/java/net/mcreator/superbwarfare/event/PlayerEventHandler.java +++ b/src/main/java/net/mcreator/superbwarfare/event/PlayerEventHandler.java @@ -87,13 +87,14 @@ public class PlayerEventHandler { handlePlayerSprint(player); handleWeaponLevel(player); handleAmmoCount(player); - handleGround(player); handlePrepareZoom(player); handleSpecialWeaponAmmo(player); handleChangeFireRate(player); handleBocekPulling(player); handleGunRecoil(player); } + + handleGround(player); handleDistantRange(player); handleSimulationDistance(player); handleCannonTime(player); diff --git a/src/main/java/net/mcreator/superbwarfare/init/ModKeyMappings.java b/src/main/java/net/mcreator/superbwarfare/init/ModKeyMappings.java index 99bedb61d..fbbb1bc99 100644 --- a/src/main/java/net/mcreator/superbwarfare/init/ModKeyMappings.java +++ b/src/main/java/net/mcreator/superbwarfare/init/ModKeyMappings.java @@ -26,22 +26,6 @@ public class ModKeyMappings { } }; - public static final KeyMapping DOUBLE_JUMP = new KeyMapping("key.superbwarfare.double_jump", GLFW.GLFW_KEY_SPACE, "key.categories.superbwarfare") { - private boolean isDownOld = false; - - @Override - public void setDown(boolean isDown) { - super.setDown(isDown); - if (isDownOld != isDown && isDown) { - ModUtils.PACKET_HANDLER.sendToServer(new DoubleJumpMessage(0)); -// if (Minecraft.getInstance().player != null) { -// DoubleJumpMessage.pressAction(Minecraft.getInstance().player, 0); -// } - } - isDownOld = isDown; - } - }; - public static final KeyMapping FIRE_MODE = new KeyMapping("key.superbwarfare.fire_mode", GLFW.GLFW_KEY_N, "key.categories.superbwarfare") { private boolean isDownOld = false; @@ -201,7 +185,6 @@ public class ModKeyMappings { @SubscribeEvent public static void registerKeyMappings(RegisterKeyMappingsEvent event) { event.register(RELOAD); - event.register(DOUBLE_JUMP); event.register(FIRE_MODE); event.register(SENSITIVITY_INCREASE); event.register(SENSITIVITY_REDUCE); @@ -221,7 +204,6 @@ public class ModKeyMappings { public static void onClientTick(TickEvent.ClientTickEvent event) { if (Minecraft.getInstance().screen == null) { RELOAD.consumeClick(); - DOUBLE_JUMP.consumeClick(); FIRE_MODE.consumeClick(); SENSITIVITY_INCREASE.consumeClick(); SENSITIVITY_REDUCE.consumeClick(); diff --git a/src/main/java/net/mcreator/superbwarfare/network/message/DoubleJumpMessage.java b/src/main/java/net/mcreator/superbwarfare/network/message/DoubleJumpMessage.java index 55ee2f4cb..daa4f2a1a 100644 --- a/src/main/java/net/mcreator/superbwarfare/network/message/DoubleJumpMessage.java +++ b/src/main/java/net/mcreator/superbwarfare/network/message/DoubleJumpMessage.java @@ -7,24 +7,23 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundSource; import net.minecraft.world.level.Level; -import net.minecraft.world.phys.Vec3; import net.minecraftforge.network.NetworkEvent; import java.util.function.Supplier; public class DoubleJumpMessage { - private final int type; + private final boolean canDoubleJump; - public DoubleJumpMessage(int type) { - this.type = type; + public DoubleJumpMessage(boolean canDoubleJump) { + this.canDoubleJump = canDoubleJump; } public static DoubleJumpMessage decode(FriendlyByteBuf buffer) { - return new DoubleJumpMessage(buffer.readInt()); + return new DoubleJumpMessage(buffer.readBoolean()); } public static void encode(DoubleJumpMessage message, FriendlyByteBuf buffer) { - buffer.writeInt(message.type); + buffer.writeBoolean(message.canDoubleJump); } public static void handler(DoubleJumpMessage message, Supplier contextSupplier) { @@ -42,21 +41,12 @@ public class DoubleJumpMessage { return; } - if (message.type == 0) { - if (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables()).playerDoubleJump) { - player.setDeltaMovement(new Vec3(player.getLookAngle().x, 0.8, player.getLookAngle().z)); - if (!level.isClientSide()) { - level.playSound(null, BlockPos.containing(x, y, z), ModSounds.DOUBLE_JUMP.get(), SoundSource.BLOCKS, 1, 1); - } else { - level.playLocalSound(x, y, z, ModSounds.DOUBLE_JUMP.get(), SoundSource.BLOCKS, 1, 1, false); - } + level.playSound(null, BlockPos.containing(x, y, z), ModSounds.DOUBLE_JUMP.get(), SoundSource.BLOCKS, 1, 1); - player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { - capability.playerDoubleJump = false; - capability.syncPlayerVariables(player); - }); - } - } + player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.playerDoubleJump = message.canDoubleJump; + capability.syncPlayerVariables(player); + }); } }); context.setPacketHandled(true); diff --git a/src/main/resources/assets/superbwarfare/lang/en_us.json b/src/main/resources/assets/superbwarfare/lang/en_us.json index f3a64384d..cb86f7622 100644 --- a/src/main/resources/assets/superbwarfare/lang/en_us.json +++ b/src/main/resources/assets/superbwarfare/lang/en_us.json @@ -268,7 +268,6 @@ "key.categories.superbwarfare": "Superb Warfare", "key.superbwarfare.reload": "Reload", - "key.superbwarfare.double_jump": "Double Jump", "key.superbwarfare.fire_mode": "Fire Mode", "key.superbwarfare.sensitivity_increase": "Increase Sensitivity", "key.superbwarfare.sensitivity_reduce": "Reduce Sensitivity", diff --git a/src/main/resources/assets/superbwarfare/lang/zh_cn.json b/src/main/resources/assets/superbwarfare/lang/zh_cn.json index 42776690b..8320015ca 100644 --- a/src/main/resources/assets/superbwarfare/lang/zh_cn.json +++ b/src/main/resources/assets/superbwarfare/lang/zh_cn.json @@ -268,7 +268,6 @@ "key.categories.superbwarfare": "卓越前线", "key.superbwarfare.reload": "装填子弹", - "key.superbwarfare.double_jump": "二段跳", "key.superbwarfare.fire_mode": "开火模式", "key.superbwarfare.sensitivity_increase": "增加灵敏度", "key.superbwarfare.sensitivity_reduce": "减少灵敏度",