From f4fee211e97a413ed9bf5089148582b7b8b32a8e Mon Sep 17 00:00:00 2001 From: Atsuihsio <842960157@qq.com> Date: Sun, 28 Jul 2024 00:51:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B3=A8=E5=86=8C=E6=97=A0=E4=BA=BA=E6=9C=BA?= =?UTF-8?q?=E6=93=8D=E6=8E=A7=E7=9A=84=E9=94=AE=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../superbwarfare/client/ClickHandler.java | 20 +-- .../superbwarfare/entity/DroneEntity.java | 40 ++---- .../superbwarfare/init/ModKeyMappings.java | 118 ++++++++++++++++++ .../assets/superbwarfare/lang/en_us.json | 6 + .../assets/superbwarfare/lang/zh_cn.json | 6 + .../textures/item/copper_plate.png | Bin 430 -> 516 bytes 6 files changed, 140 insertions(+), 50 deletions(-) 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 f68ab5028b52cf1b04317f6f0a3f2cbdd7a2a8c9..8278d05c993bbdc5a372b1da98d3736c08793329 100644 GIT binary patch delta 469 zcmV;`0V@8k1B3*SIe)fEL_t(Ijn$GpXcS=(hM)O%?{0(0U7|;#mt0a9C6MU(i*_nO zf>@}H2qIWni=B;Fc!gjfSXkSou@SsNl7O8*T*!q35s8W6qVWf#VUsntyWdy{QE&~| z2);1I4D&uPyaWHeBxyK#{gf`RG{MFk9Uf2I`6Hly^R(tmC4WGP{6*%c-mtRTWN>66 z5#;{b%-_4Hf{VCm)JE8*PiKDzZmySFcTqn#8XOxQlSIJm-ScXk3~DWifhYh~Gz>7( zq_F=G9sPY&x8!tb@gswG9?LqQcI$#Vn{qfQAqsqm*U)ekjlQAQBCdzp5Df!5_YP1{ zc;1%PgEtOlC7Cm4S@+^Mq@U-pQ4( zzRtdF(A8dG;P?S-EU1kUaWGB_jDtyeXdE*4^a=Ip+V3fpPi)gA8?dW2PtW!)cJ6M) z@!IgZ4`b44)W*zARH#qaxHS4w5@Q4yIn$#H@4v98w@yTR&am(7IZQUstI8;o)hd_o z&#e14e3J4|Q9t<09O>Huz_W!pZdX2S=tzn3Ug z4Ej7W_qKceB|SN*rNXVF(^<645cDCx1F5CLZ`&&fgAst1(SIp~q%25$4mZ{r$;1;N zvSlF@gh@kZ>xOC#bb9Ust3|7cd}l`|>7)*&#!_})nMoroEdbmHRcwaEvZZV$<`gO3puRGXd9X_~dY4VJd{#TP(M z3$6i~K%uLn3bP?f-}o3xeG|L>8;&23^5L?80;pdC7_CvvdJn