diff --git a/src/main/java/net/mcreator/superbwarfare/client/ClickHandler.java b/src/main/java/net/mcreator/superbwarfare/client/ClickHandler.java index 52cbd2603..9054220d4 100644 --- a/src/main/java/net/mcreator/superbwarfare/client/ClickHandler.java +++ b/src/main/java/net/mcreator/superbwarfare/client/ClickHandler.java @@ -160,25 +160,7 @@ public class ClickHandler { setKeyState(event.getKey(), clicked ? 1 : 0); - int button = event.getKey(); - if (button == GLFW.GLFW_KEY_A) { - ModUtils.PACKET_HANDLER.sendToServer(new DroneMovementMessage(0, clicked)); - } - if (button == GLFW.GLFW_KEY_D) { - ModUtils.PACKET_HANDLER.sendToServer(new DroneMovementMessage(1, clicked)); - } - if (button == GLFW.GLFW_KEY_W) { - ModUtils.PACKET_HANDLER.sendToServer(new DroneMovementMessage(2, clicked)); - } - if (button == GLFW.GLFW_KEY_S) { - ModUtils.PACKET_HANDLER.sendToServer(new DroneMovementMessage(3, clicked)); - } - if (button == GLFW.GLFW_KEY_SPACE) { - ModUtils.PACKET_HANDLER.sendToServer(new DroneMovementMessage(4, clicked)); - } - if (button == GLFW.GLFW_KEY_LEFT_SHIFT) { - ModUtils.PACKET_HANDLER.sendToServer(new DroneMovementMessage(5, clicked)); - } + } } \ No newline at end of file diff --git a/src/main/java/net/mcreator/superbwarfare/entity/DroneEntity.java b/src/main/java/net/mcreator/superbwarfare/entity/DroneEntity.java index 2e9e66422..f913f905d 100644 --- a/src/main/java/net/mcreator/superbwarfare/entity/DroneEntity.java +++ b/src/main/java/net/mcreator/superbwarfare/entity/DroneEntity.java @@ -244,7 +244,7 @@ public class DroneEntity extends PathfinderMob implements GeoEntity { droneDrop(player); } if (this.entityData.get(KAMIKAZE)) { - kamikazeExplosion(player); + this.hurt(new DamageSource(level().registryAccess().registryOrThrow(Registries.DAMAGE_TYPE).getHolderOrThrow(DamageTypes.EXPLOSION),player), 10000); } } this.getPersistentData().putBoolean("firing", false); @@ -263,17 +263,6 @@ public class DroneEntity extends PathfinderMob implements GeoEntity { } } - private void kamikazeExplosion(Player player) { - CustomExplosion explosion = new CustomExplosion(this.level(), this, - ModDamageTypes.causeProjectileBoomDamage(this.level().registryAccess(), player, player), 150, - this.getX(), this.getY(), this.getZ(), 12.5f, Explosion.BlockInteraction.KEEP).setDamageMultiplier(1); - explosion.explode(); - net.minecraftforge.event.ForgeEventFactory.onExplosionStart(this.level(), explosion); - explosion.finalizeExplosion(false); - ParticleTool.spawnMediumExplosionParticles(this.level(), this.position()); - this.hurt(new DamageSource(level().registryAccess().registryOrThrow(Registries.DAMAGE_TYPE).getHolderOrThrow(DamageTypes.EXPLOSION)), 10000); - } - @Override public InteractionResult mobInteract(Player player, InteractionHand hand) { super.mobInteract(player, hand); @@ -401,13 +390,11 @@ public class DroneEntity extends PathfinderMob implements GeoEntity { Monitor.disLink(stack); } }); - if (this.entityData.get(KAMIKAZE)){ - destroyExplosion(player); - } - } else { - if (this.entityData.get(KAMIKAZE)){ - destroyExplosion2(); - } + } + + + if (this.entityData.get(KAMIKAZE)){ + kamikazeExplosion(source.getEntity()); } if (level() instanceof ServerLevel) { @@ -417,25 +404,16 @@ public class DroneEntity extends PathfinderMob implements GeoEntity { } - private void destroyExplosion(Player player) { + private void kamikazeExplosion(Entity source) { CustomExplosion explosion = new CustomExplosion(this.level(), this, - ModDamageTypes.causeProjectileBoomDamage(this.level().registryAccess(), player, player), 40, - this.getX(), this.getY(), this.getZ(), 10f, Explosion.BlockInteraction.KEEP).setDamageMultiplier(1); + ModDamageTypes.causeProjectileBoomDamage(this.level().registryAccess(), source, source), 150, + this.getX(), this.getY(), this.getZ(), 12.5f, Explosion.BlockInteraction.KEEP).setDamageMultiplier(1); explosion.explode(); net.minecraftforge.event.ForgeEventFactory.onExplosionStart(this.level(), explosion); explosion.finalizeExplosion(false); ParticleTool.spawnMediumExplosionParticles(this.level(), this.position()); } - private void destroyExplosion2() { - CustomExplosion explosion = new CustomExplosion(this.level(), this, - ModDamageTypes.causeProjectileBoomDamage(this.level().registryAccess(), this, this), 40, - this.getX(), this.getY(), this.getZ(), 10f, Explosion.BlockInteraction.KEEP).setDamageMultiplier(1); - explosion.explode(); - net.minecraftforge.event.ForgeEventFactory.onExplosionStart(this.level(), explosion); - explosion.finalizeExplosion(false); - ParticleTool.spawnMediumExplosionParticles(this.level(), this.position()); - } @Override public EntityDimensions getDimensions(Pose p_33597_) { diff --git a/src/main/java/net/mcreator/superbwarfare/init/ModKeyMappings.java b/src/main/java/net/mcreator/superbwarfare/init/ModKeyMappings.java index bd146b649..4262eec27 100644 --- a/src/main/java/net/mcreator/superbwarfare/init/ModKeyMappings.java +++ b/src/main/java/net/mcreator/superbwarfare/init/ModKeyMappings.java @@ -98,6 +98,111 @@ public class ModKeyMappings { } }; + public static final KeyMapping FORWARD = new KeyMapping("key.superbwarfare.forward", GLFW.GLFW_KEY_W, "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 DroneMovementMessage(2, true)); + FORWARD_LASTPRESS = System.currentTimeMillis(); + } else if (isDownOld != isDown) { + int dt = (int) (System.currentTimeMillis() - FORWARD_LASTPRESS); + ModUtils.PACKET_HANDLER.sendToServer(new DroneMovementMessage(2, false)); + } + isDownOld = isDown; + } + }; + public static final KeyMapping BACKWARD = new KeyMapping("key.superbwarfare.backward", GLFW.GLFW_KEY_S, "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 DroneMovementMessage(3, true)); + BACKWARD_LASTPRESS = System.currentTimeMillis(); + } else if (isDownOld != isDown) { + int dt = (int) (System.currentTimeMillis() - BACKWARD_LASTPRESS); + ModUtils.PACKET_HANDLER.sendToServer(new DroneMovementMessage(3, false)); + } + isDownOld = isDown; + } + }; + public static final KeyMapping LEFT = new KeyMapping("key.superbwarfare.left", GLFW.GLFW_KEY_A, "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 DroneMovementMessage(0, true)); + LEFT_LASTPRESS = System.currentTimeMillis(); + } else if (isDownOld != isDown) { + int dt = (int) (System.currentTimeMillis() - LEFT_LASTPRESS); + ModUtils.PACKET_HANDLER.sendToServer(new DroneMovementMessage(0, false)); + } + isDownOld = isDown; + } + }; + public static final KeyMapping RIGHT = new KeyMapping("key.superbwarfare.right", GLFW.GLFW_KEY_D, "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 DroneMovementMessage(1, true)); + RIGHT_LASTPRESS = System.currentTimeMillis(); + } else if (isDownOld != isDown) { + int dt = (int) (System.currentTimeMillis() - RIGHT_LASTPRESS); + ModUtils.PACKET_HANDLER.sendToServer(new DroneMovementMessage(1, false)); + } + isDownOld = isDown; + } + }; + public static final KeyMapping UP = new KeyMapping("key.superbwarfare.up", 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 DroneMovementMessage(4, true)); + UP_LASTPRESS = System.currentTimeMillis(); + } else if (isDownOld != isDown) { + int dt = (int) (System.currentTimeMillis() - UP_LASTPRESS); + ModUtils.PACKET_HANDLER.sendToServer(new DroneMovementMessage(4, false)); + } + isDownOld = isDown; + } + }; + public static final KeyMapping DOWN = new KeyMapping("key.superbwarfare.down", GLFW.GLFW_KEY_LEFT_SHIFT, "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 DroneMovementMessage(5, true)); + DOWN_LASTPRESS = System.currentTimeMillis(); + } else if (isDownOld != isDown) { + int dt = (int) (System.currentTimeMillis() - DOWN_LASTPRESS); + ModUtils.PACKET_HANDLER.sendToServer(new DroneMovementMessage(5, false)); + } + isDownOld = isDown; + } + }; + private static long FORWARD_LASTPRESS = 0; + private static long BACKWARD_LASTPRESS = 0; + private static long LEFT_LASTPRESS = 0; + private static long RIGHT_LASTPRESS = 0; + private static long UP_LASTPRESS = 0; + private static long DOWN_LASTPRESS = 0; + + + @SubscribeEvent public static void registerKeyMappings(RegisterKeyMappingsEvent event) { event.register(RELOAD); @@ -106,6 +211,13 @@ public class ModKeyMappings { event.register(SENSITIVITY_INCREASE); event.register(SENSITIVITY_REDUCE); event.register(INTERACT); + event.register(FORWARD); + event.register(BACKWARD); + event.register(LEFT); + event.register(RIGHT); + event.register(UP); + event.register(DOWN); + } @Mod.EventBusSubscriber({Dist.CLIENT}) @@ -119,6 +231,12 @@ public class ModKeyMappings { SENSITIVITY_INCREASE.consumeClick(); SENSITIVITY_REDUCE.consumeClick(); INTERACT.consumeClick(); + FORWARD.consumeClick(); + BACKWARD.consumeClick(); + LEFT.consumeClick(); + RIGHT.consumeClick(); + UP.consumeClick(); + DOWN.consumeClick(); } } } diff --git a/src/main/resources/assets/superbwarfare/lang/en_us.json b/src/main/resources/assets/superbwarfare/lang/en_us.json index 9b905f081..786f1094a 100644 --- a/src/main/resources/assets/superbwarfare/lang/en_us.json +++ b/src/main/resources/assets/superbwarfare/lang/en_us.json @@ -208,6 +208,12 @@ "key.superbwarfare.sensitivity_increase": "Increase Sensitivity", "key.superbwarfare.sensitivity_reduce": "Reduce Sensitivity", "key.superbwarfare.interact": "Interact", + "key.superbwarfare.forward": "Forward", + "key.superbwarfare.backward": "Backward", + "key.superbwarfare.left": "Left", + "key.superbwarfare.right": "Right", + "key.superbwarfare.up": "Up", + "key.superbwarfare.down": "Down", "effect.superbwarfare.shock": "Shock", "item.minecraft.potion.effect.superbwarfare_shock": "Potion of Shock", diff --git a/src/main/resources/assets/superbwarfare/lang/zh_cn.json b/src/main/resources/assets/superbwarfare/lang/zh_cn.json index 47d73e31c..850e2ed87 100644 --- a/src/main/resources/assets/superbwarfare/lang/zh_cn.json +++ b/src/main/resources/assets/superbwarfare/lang/zh_cn.json @@ -208,6 +208,12 @@ "key.superbwarfare.sensitivity_increase": "增加灵敏度", "key.superbwarfare.sensitivity_reduce": "减少灵敏度", "key.superbwarfare.interact": "交互", + "key.superbwarfare.forward": "向前移动", + "key.superbwarfare.backward": "向后移动", + "key.superbwarfare.left": "向左移动", + "key.superbwarfare.right": "向右移动", + "key.superbwarfare.up": "上升", + "key.superbwarfare.down": "下降", "effect.superbwarfare.shock": "电击", "item.minecraft.potion.effect.superbwarfare_shock": "电击药水", diff --git a/src/main/resources/assets/superbwarfare/textures/item/copper_plate.png b/src/main/resources/assets/superbwarfare/textures/item/copper_plate.png index f68ab5028..8278d05c9 100644 Binary files a/src/main/resources/assets/superbwarfare/textures/item/copper_plate.png and b/src/main/resources/assets/superbwarfare/textures/item/copper_plate.png differ