From 460f2de5a95186de750e4304ddda9bf7a30c580f Mon Sep 17 00:00:00 2001 From: Atsuihsio <842960157@qq.com> Date: Wed, 25 Sep 2024 04:38:36 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E5=88=B6=E5=88=9B=E9=80=A0=E5=BC=B9?= =?UTF-8?q?=E8=8D=AF=E7=9B=92=E6=9C=BA=E5=88=B6=EF=BC=8C=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=8A=A0=E7=89=B9=E6=9E=97=E5=BC=80=E7=81=ABbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/particle/CustomCloudParticle.java | 60 +++++++ .../client/screens/AmmoBarOverlay.java | 75 +++++--- .../event/ClientEventHandler.java | 17 +- .../superbwarfare/event/GunEventHandler.java | 162 ++++++++++++------ .../event/PlayerEventHandler.java | 43 +++-- .../mcreator/superbwarfare/init/ModItems.java | 3 +- .../superbwarfare/init/ModParticleTypes.java | 1 + .../superbwarfare/init/ModParticles.java | 2 + .../item/armor/RuHelmet6b47.java | 2 - .../item/common/ammo/CreativeAmmoBox.java | 64 ------- .../item/gun/launcher/JavelinItem.java | 22 ++- .../item/gun/launcher/M79Item.java | 22 ++- .../item/gun/launcher/RpgItem.java | 22 ++- .../item/gun/machinegun/MinigunItem.java | 49 ++++-- .../item/gun/special/BocekItem.java | 22 ++- .../item/gun/special/TaserItem.java | 22 ++- .../network/message/FireMessage.java | 17 +- .../network/message/ReloadMessage.java | 42 +++-- .../network/message/ShootMessage.java | 30 ++-- .../assets/superbwarfare/lang/en_us.json | 2 - .../assets/superbwarfare/lang/zh_cn.json | 2 - .../superbwarfare/particles/custom_cloud.json | 12 ++ .../armor/{ru_6b47.png => ru_helmet_6b47.png} | Bin 23 files changed, 439 insertions(+), 254 deletions(-) create mode 100644 src/main/java/net/mcreator/superbwarfare/client/particle/CustomCloudParticle.java delete mode 100644 src/main/java/net/mcreator/superbwarfare/item/common/ammo/CreativeAmmoBox.java create mode 100644 src/main/resources/assets/superbwarfare/particles/custom_cloud.json rename src/main/resources/assets/superbwarfare/textures/armor/{ru_6b47.png => ru_helmet_6b47.png} (100%) diff --git a/src/main/java/net/mcreator/superbwarfare/client/particle/CustomCloudParticle.java b/src/main/java/net/mcreator/superbwarfare/client/particle/CustomCloudParticle.java new file mode 100644 index 000000000..7b0e6308e --- /dev/null +++ b/src/main/java/net/mcreator/superbwarfare/client/particle/CustomCloudParticle.java @@ -0,0 +1,60 @@ +package net.mcreator.superbwarfare.client.particle; + +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.particle.*; +import net.minecraft.core.particles.SimpleParticleType; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +@OnlyIn(Dist.CLIENT) +public class CustomCloudParticle extends TextureSheetParticle { + public static FireStarParticleProvider provider(SpriteSet spriteSet) { + return new FireStarParticleProvider(spriteSet); + } + + public static class FireStarParticleProvider implements ParticleProvider { + private final SpriteSet spriteSet; + + public FireStarParticleProvider(SpriteSet spriteSet) { + this.spriteSet = spriteSet; + } + + public Particle createParticle(SimpleParticleType typeIn, ClientLevel worldIn, double x, double y, double z, double xSpeed, double ySpeed, double zSpeed) { + return new CustomCloudParticle(worldIn, x, y, z, xSpeed, ySpeed, zSpeed, this.spriteSet); + } + } + + private final SpriteSet spriteSet; + + protected CustomCloudParticle(ClientLevel world, double x, double y, double z, double vx, double vy, double vz, SpriteSet spriteSet) { + super(world, x, y, z); + this.spriteSet = spriteSet; + this.setSize(0.2f, 0.2f); + this.quadSize *= 0.5f; + this.lifetime = Math.max(1, 40 + (this.random.nextInt(40) - 20)); + this.gravity = -0.1f; + this.hasPhysics = false; + this.xd = vx * 1; + this.yd = vy * 1; + this.zd = vz * 1; + this.setSpriteFromAge(spriteSet); + } + + @Override + public int getLightColor(float partialTick) { + return 15728880; + } + + @Override + public ParticleRenderType getRenderType() { + return ParticleRenderType.PARTICLE_SHEET_TRANSLUCENT; + } + + @Override + public void tick() { + super.tick(); + if (!this.removed) { + this.setSprite(this.spriteSet.get((this.age / 2) % 4 + 1, 4)); + } + } +} diff --git a/src/main/java/net/mcreator/superbwarfare/client/screens/AmmoBarOverlay.java b/src/main/java/net/mcreator/superbwarfare/client/screens/AmmoBarOverlay.java index f6a7ae8c7..9602143df 100644 --- a/src/main/java/net/mcreator/superbwarfare/client/screens/AmmoBarOverlay.java +++ b/src/main/java/net/mcreator/superbwarfare/client/screens/AmmoBarOverlay.java @@ -26,6 +26,19 @@ public class AmmoBarOverlay { private static final ResourceLocation TOP = new ResourceLocation(ModUtils.MODID, "textures/gun_icon/fire_mode/top.png"); private static final ResourceLocation DIR = new ResourceLocation(ModUtils.MODID, "textures/gun_icon/fire_mode/dir.png"); + private static boolean creativeAmmo() { + Player player = Minecraft.getInstance().player; + int count = 0; + if (player != null) { + for (var inv : player.getInventory().items) { + if (inv.is(ModItems.CREATIVE_AMMO_BOX.get())) { + count++; + } + } + } + return count > 0; + } + @SubscribeEvent(priority = EventPriority.NORMAL) public static void eventHandler(RenderGuiEvent.Pre event) { int w = event.getWindow().getGuiScaledWidth(); @@ -96,14 +109,26 @@ public class AmmoBarOverlay { poseStack.pushPose(); poseStack.scale(1.5f, 1.5f, 1f); - event.getGuiGraphics().drawString( - Minecraft.getInstance().font, - getGunAmmoCount(player) + "", - w / 1.5f - 64 / 1.5f, - h / 1.5f - 48 / 1.5f, - 0xFFFFFF, - true - ); + if ((stack.getItem() == ModItems.MINIGUN.get() || stack.getItem() == ModItems.BOCEK.get()) && creativeAmmo()) { + event.getGuiGraphics().drawString( + Minecraft.getInstance().font, + "∞", + w / 1.5f - 64 / 1.5f, + h / 1.5f - 48 / 1.5f, + 0xFFFFFF, + true + ); + } else { + event.getGuiGraphics().drawString( + Minecraft.getInstance().font, + getGunAmmoCount(player) + "", + w / 1.5f - 64 / 1.5f, + h / 1.5f - 48 / 1.5f, + 0xFFFFFF, + true + ); + } + poseStack.popPose(); // 渲染备弹量 @@ -172,23 +197,27 @@ public class AmmoBarOverlay { return ""; } - if (stack.getItem() == ModItems.M_79.get() || stack.getItem() == ModItems.RPG.get() || stack.getItem() == ModItems.TASER.get() || stack.getItem() == ModItems.JAVELIN.get() ) { - return "" + stack.getOrCreateTag().getInt("max_ammo"); + if (!creativeAmmo()) { + if (stack.getItem() == ModItems.M_79.get() || stack.getItem() == ModItems.RPG.get() || stack.getItem() == ModItems.TASER.get() || stack.getItem() == ModItems.JAVELIN.get() ) { + return "" + stack.getOrCreateTag().getInt("max_ammo"); + } + + if (stack.is(ModTags.Items.USE_RIFLE_AMMO)) { + return "" + (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).rifleAmmo; + } + if (stack.is(ModTags.Items.USE_HANDGUN_AMMO)) { + return "" + (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).handgunAmmo; + } + if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO)) { + return "" + (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).shotgunAmmo; + } + if (stack.is(ModTags.Items.USE_SNIPER_AMMO)) { + return "" + (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).sniperAmmo; + } + return ""; } - if (stack.is(ModTags.Items.USE_RIFLE_AMMO)) { - return "" + (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).rifleAmmo; - } - if (stack.is(ModTags.Items.USE_HANDGUN_AMMO)) { - return "" + (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).handgunAmmo; - } - if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO)) { - return "" + (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).shotgunAmmo; - } - if (stack.is(ModTags.Items.USE_SNIPER_AMMO)) { - return "" + (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).sniperAmmo; - } - return ""; + return "∞"; } private static String getGunAmmoType(ItemStack stack) { diff --git a/src/main/java/net/mcreator/superbwarfare/event/ClientEventHandler.java b/src/main/java/net/mcreator/superbwarfare/event/ClientEventHandler.java index 9864936a2..737b8a3fc 100644 --- a/src/main/java/net/mcreator/superbwarfare/event/ClientEventHandler.java +++ b/src/main/java/net/mcreator/superbwarfare/event/ClientEventHandler.java @@ -156,7 +156,7 @@ public class ClientEventHandler { // 开火部分 if (GLFW.glfwGetMouseButton(Minecraft.getInstance().getWindow().getWindow(), GLFW.GLFW_MOUSE_BUTTON_LEFT) == GLFW.GLFW_PRESS - && (player.getMainHandItem().is(ModTags.Items.NORMAL_GUN) || stack.is(ModItems.MINIGUN.get()))) { + && (player.getMainHandItem().is(ModTags.Items.NORMAL_GUN) || (stack.is(ModItems.MINIGUN.get()) && !player.isSprinting()))) { double customRpm = 0; @@ -164,6 +164,16 @@ public class ClientEventHandler { customRpm = stack.getOrCreateTag().getInt("customRpm"); } + if (stack.getItem() == ModItems.MINIGUN.get()) { + if (player.isInWater()) { + customRpm = - 0.25 * stack.getOrCreateTag().getDouble("rpm"); + } + + if (stack.getOrCreateTag().getDouble("overheat") != 0 || player.getCooldowns().isOnCooldown(stack.getItem()) || stack.getOrCreateTag().getDouble("minigun_rotation") < 10) { + return; + } + } + double rpm = stack.getOrCreateTag().getDouble("rpm") + customRpm; if (rpm == 0) { rpm = 600; @@ -173,11 +183,6 @@ public class ClientEventHandler { // cooldown in ms double cooldown = 1000 / rps; - if (stack.getItem() == ModItems.MINIGUN.get()) { - if (stack.getOrCreateTag().getDouble("overheat") != 0 || player.getCooldowns().isOnCooldown(stack.getItem()) || stack.getOrCreateTag().getDouble("minigun_rotation") < 10) { - return; - } - } if (!clientTimer.started()) { clientTimer.start(); diff --git a/src/main/java/net/mcreator/superbwarfare/event/GunEventHandler.java b/src/main/java/net/mcreator/superbwarfare/event/GunEventHandler.java index 2ab272717..3dfb715aa 100644 --- a/src/main/java/net/mcreator/superbwarfare/event/GunEventHandler.java +++ b/src/main/java/net/mcreator/superbwarfare/event/GunEventHandler.java @@ -336,23 +336,52 @@ public class GunEventHandler { public static void playGunNormalReload(Player player) { ItemStack stack = player.getMainHandItem(); - if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO)) { - if (stack.getItem() == ModItems.ABEKIRI.get()) { - GunsTool.reload(player, GunInfo.Type.SHOTGUN); - } else { - GunsTool.reload(player, GunInfo.Type.SHOTGUN, true); - } - } else if (stack.is(ModTags.Items.USE_SNIPER_AMMO)) { - GunsTool.reload(player, GunInfo.Type.SNIPER, true); - } else if (stack.is(ModTags.Items.USE_HANDGUN_AMMO)) { - GunsTool.reload(player, GunInfo.Type.HANDGUN, true); - } else if (stack.is(ModTags.Items.USE_RIFLE_AMMO)) { - if (stack.getItem() == ModItems.M_60.get()) { - GunsTool.reload(player, GunInfo.Type.RIFLE); - } else { - GunsTool.reload(player, GunInfo.Type.RIFLE, true); + int count = 0; + for (var inv : player.getInventory().items) { + if (inv.is(ModItems.CREATIVE_AMMO_BOX.get())) { + count++; } } + + if (count == 0) { + if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO)) { + if (stack.getItem() == ModItems.ABEKIRI.get()) { + GunsTool.reload(player, GunInfo.Type.SHOTGUN); + } else { + GunsTool.reload(player, GunInfo.Type.SHOTGUN, true); + } + } else if (stack.is(ModTags.Items.USE_SNIPER_AMMO)) { + GunsTool.reload(player, GunInfo.Type.SNIPER, true); + } else if (stack.is(ModTags.Items.USE_HANDGUN_AMMO)) { + GunsTool.reload(player, GunInfo.Type.HANDGUN, true); + } else if (stack.is(ModTags.Items.USE_RIFLE_AMMO)) { + if (stack.getItem() == ModItems.M_60.get()) { + GunsTool.reload(player, GunInfo.Type.RIFLE); + } else { + GunsTool.reload(player, GunInfo.Type.RIFLE, true); + } + } + } else { + if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO)) { + if (stack.getItem() == ModItems.ABEKIRI.get()) { + stack.getOrCreateTag().putInt("ammo", stack.getOrCreateTag().getInt("mag")); + } else { + stack.getOrCreateTag().putInt("ammo", stack.getOrCreateTag().getInt("mag") + 1); + } + } else if (stack.is(ModTags.Items.USE_SNIPER_AMMO)) { + stack.getOrCreateTag().putInt("ammo", stack.getOrCreateTag().getInt("mag") + 1); + } else if (stack.is(ModTags.Items.USE_HANDGUN_AMMO)) { + stack.getOrCreateTag().putInt("ammo", stack.getOrCreateTag().getInt("mag") + 1); + } else if (stack.is(ModTags.Items.USE_RIFLE_AMMO)) { + if (stack.getItem() == ModItems.M_60.get()) { + stack.getOrCreateTag().putInt("ammo", stack.getOrCreateTag().getInt("mag")); + } else { + stack.getOrCreateTag().putInt("ammo", stack.getOrCreateTag().getInt("mag") + 1); + } + } + } + + stack.getOrCreateTag().putBoolean("is_normal_reloading", false); stack.getOrCreateTag().putBoolean("is_empty_reloading", false); @@ -362,28 +391,41 @@ public class GunEventHandler { public static void playGunEmptyReload(Player player) { ItemStack stack = player.getMainHandItem(); - if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO)) { - GunsTool.reload(player, GunInfo.Type.SHOTGUN); - } else if (stack.is(ModTags.Items.USE_SNIPER_AMMO)) { - GunsTool.reload(player, GunInfo.Type.SNIPER); - } else if (stack.is(ModTags.Items.USE_HANDGUN_AMMO)) { - GunsTool.reload(player, GunInfo.Type.HANDGUN); - } else if (stack.is(ModTags.Items.USE_RIFLE_AMMO)) { - GunsTool.reload(player, GunInfo.Type.RIFLE); - } else if (stack.getItem() == ModItems.TASER.get()) { - stack.getOrCreateTag().putInt("ammo", 1); - player.getInventory().clearOrCountMatchingItems(p -> p.getItem() == ModItems.TASER_ELECTRODE.get(), 1, player.inventoryMenu.getCraftSlots()); - } else if (stack.getItem() == ModItems.M_79.get()) { - stack.getOrCreateTag().putInt("ammo", 1); - player.getInventory().clearOrCountMatchingItems(p -> p.getItem() == ModItems.GRENADE_40MM.get(), 1, player.inventoryMenu.getCraftSlots()); - } else if (stack.getItem() == ModItems.RPG.get()) { - stack.getOrCreateTag().putInt("ammo", 1); - player.getInventory().clearOrCountMatchingItems(p -> p.getItem() == ModItems.ROCKET.get(), 1, player.inventoryMenu.getCraftSlots()); - } else if (stack.getItem() == ModItems.JAVELIN.get()) { - stack.getOrCreateTag().putInt("ammo", 1); - player.getInventory().clearOrCountMatchingItems(p -> p.getItem() == ModItems.JAVELIN_MISSILE.get(), 1, player.inventoryMenu.getCraftSlots()); + int count = 0; + for (var inv : player.getInventory().items) { + if (inv.is(ModItems.CREATIVE_AMMO_BOX.get())) { + count++; + } } + if (count == 0) { + if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO)) { + GunsTool.reload(player, GunInfo.Type.SHOTGUN); + } else if (stack.is(ModTags.Items.USE_SNIPER_AMMO)) { + GunsTool.reload(player, GunInfo.Type.SNIPER); + } else if (stack.is(ModTags.Items.USE_HANDGUN_AMMO)) { + GunsTool.reload(player, GunInfo.Type.HANDGUN); + } else if (stack.is(ModTags.Items.USE_RIFLE_AMMO)) { + GunsTool.reload(player, GunInfo.Type.RIFLE); + } else if (stack.getItem() == ModItems.TASER.get()) { + stack.getOrCreateTag().putInt("ammo", 1); + player.getInventory().clearOrCountMatchingItems(p -> p.getItem() == ModItems.TASER_ELECTRODE.get(), 1, player.inventoryMenu.getCraftSlots()); + } else if (stack.getItem() == ModItems.M_79.get()) { + stack.getOrCreateTag().putInt("ammo", 1); + player.getInventory().clearOrCountMatchingItems(p -> p.getItem() == ModItems.GRENADE_40MM.get(), 1, player.inventoryMenu.getCraftSlots()); + } else if (stack.getItem() == ModItems.RPG.get()) { + stack.getOrCreateTag().putInt("ammo", 1); + player.getInventory().clearOrCountMatchingItems(p -> p.getItem() == ModItems.ROCKET.get(), 1, player.inventoryMenu.getCraftSlots()); + } else if (stack.getItem() == ModItems.JAVELIN.get()) { + stack.getOrCreateTag().putInt("ammo", 1); + player.getInventory().clearOrCountMatchingItems(p -> p.getItem() == ModItems.JAVELIN_MISSILE.get(), 1, player.inventoryMenu.getCraftSlots()); + } + } else { + stack.getOrCreateTag().putInt("ammo", stack.getOrCreateTag().getInt("mag")); + } + + + stack.getOrCreateTag().putBoolean("is_normal_reloading", false); stack.getOrCreateTag().putBoolean("is_empty_reloading", false); @@ -586,27 +628,37 @@ public class GunEventHandler { tag.putInt("ammo", tag.getInt("ammo") + 1); - if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO)) { - player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { - capability.shotgunAmmo -= 1; - capability.syncPlayerVariables(player); - }); - } else if (stack.is(ModTags.Items.USE_SNIPER_AMMO)) { - player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { - capability.sniperAmmo -= 1; - capability.syncPlayerVariables(player); - }); - } else if (stack.is(ModTags.Items.USE_HANDGUN_AMMO)) { - player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { - capability.handgunAmmo -= 1; - capability.syncPlayerVariables(player); - }); - } else if (stack.is(ModTags.Items.USE_RIFLE_AMMO)) { - player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { - capability.rifleAmmo -= 1; - capability.syncPlayerVariables(player); - }); + int count = 0; + for (var inv : player.getInventory().items) { + if (inv.is(ModItems.CREATIVE_AMMO_BOX.get())) { + count++; + } } + + if (count == 0) { + if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO)) { + player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.shotgunAmmo -= 1; + capability.syncPlayerVariables(player); + }); + } else if (stack.is(ModTags.Items.USE_SNIPER_AMMO)) { + player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.sniperAmmo -= 1; + capability.syncPlayerVariables(player); + }); + } else if (stack.is(ModTags.Items.USE_HANDGUN_AMMO)) { + player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.handgunAmmo -= 1; + capability.syncPlayerVariables(player); + }); + } else if (stack.is(ModTags.Items.USE_RIFLE_AMMO)) { + player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.rifleAmmo -= 1; + capability.syncPlayerVariables(player); + }); + } + } + } public static void playGunPrepareReloadSounds(Player player) { diff --git a/src/main/java/net/mcreator/superbwarfare/event/PlayerEventHandler.java b/src/main/java/net/mcreator/superbwarfare/event/PlayerEventHandler.java index c44cc9acc..5f6bef063 100644 --- a/src/main/java/net/mcreator/superbwarfare/event/PlayerEventHandler.java +++ b/src/main/java/net/mcreator/superbwarfare/event/PlayerEventHandler.java @@ -131,23 +131,34 @@ public class PlayerEventHandler { CompoundTag tag = stack.getOrCreateTag(); // 检查备弹 - if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO) && capability.shotgunAmmo == 0) { - return; - } else if (stack.is(ModTags.Items.USE_SNIPER_AMMO) && capability.sniperAmmo == 0) { - return; - } else if ((stack.is(ModTags.Items.USE_HANDGUN_AMMO) || stack.is(ModTags.Items.SMG)) && capability.handgunAmmo == 0) { - return; - } else if (stack.is(ModTags.Items.USE_RIFLE_AMMO) && capability.rifleAmmo == 0) { - return; - } else if (stack.getItem() == ModItems.TASER.get() && tag.getInt("max_ammo") == 0) { - return; - } else if (stack.getItem() == ModItems.M_79.get() && tag.getInt("max_ammo") == 0) { - return; - } else if (stack.getItem() == ModItems.RPG.get() && tag.getInt("max_ammo") == 0) { - return; - } else if (stack.getItem() == ModItems.JAVELIN.get() && tag.getInt("max_ammo") == 0) { - return; + + int count = 0; + for (var inv : player.getInventory().items) { + if (inv.is(ModItems.CREATIVE_AMMO_BOX.get())) { + count++; + } } + + if (count == 0) { + if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO) && capability.shotgunAmmo == 0) { + return; + } else if (stack.is(ModTags.Items.USE_SNIPER_AMMO) && capability.sniperAmmo == 0) { + return; + } else if ((stack.is(ModTags.Items.USE_HANDGUN_AMMO) || stack.is(ModTags.Items.SMG)) && capability.handgunAmmo == 0) { + return; + } else if (stack.is(ModTags.Items.USE_RIFLE_AMMO) && capability.rifleAmmo == 0) { + return; + } else if (stack.getItem() == ModItems.TASER.get() && tag.getInt("max_ammo") == 0) { + return; + } else if (stack.getItem() == ModItems.M_79.get() && tag.getInt("max_ammo") == 0) { + return; + } else if (stack.getItem() == ModItems.RPG.get() && tag.getInt("max_ammo") == 0) { + return; + } else if (stack.getItem() == ModItems.JAVELIN.get() && tag.getInt("max_ammo") == 0) { + return; + } + } + ModUtils.PACKET_HANDLER.sendToServer(new ReloadMessage(0)); } } diff --git a/src/main/java/net/mcreator/superbwarfare/init/ModItems.java b/src/main/java/net/mcreator/superbwarfare/init/ModItems.java index 001248ed2..0f64cfc67 100644 --- a/src/main/java/net/mcreator/superbwarfare/init/ModItems.java +++ b/src/main/java/net/mcreator/superbwarfare/init/ModItems.java @@ -26,7 +26,6 @@ import net.mcreator.superbwarfare.item.gun.sniper.*; import net.mcreator.superbwarfare.item.gun.special.BocekItem; import net.mcreator.superbwarfare.item.gun.special.TaserItem; import net.mcreator.superbwarfare.tools.RarityTool; -import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; import net.minecraft.world.item.Rarity; @@ -92,7 +91,7 @@ public class ModItems { public static final RegistryObject RIFLE_AMMO_BOX = AMMO.register("rifle_ammo_box", RifleAmmoBox::new); public static final RegistryObject SNIPER_AMMO_BOX = AMMO.register("sniper_ammo_box", SniperAmmoBox::new); public static final RegistryObject SHOTGUN_AMMO_BOX = AMMO.register("shotgun_ammo_box", ShotgunAmmoBox::new); - public static final RegistryObject CREATIVE_AMMO_BOX = AMMO.register("creative_ammo_box", CreativeAmmoBox::new); + public static final RegistryObject CREATIVE_AMMO_BOX = AMMO.register("creative_ammo_box", () -> new Item(new Item.Properties().rarity(Rarity.EPIC))); public static final RegistryObject TASER_ELECTRODE = AMMO.register("taser_electrode", () -> new Item(new Item.Properties())); public static final RegistryObject GRENADE_40MM = AMMO.register("grenade_40mm", () -> new Item(new Item.Properties())); public static final RegistryObject JAVELIN_MISSILE = AMMO.register("javelin_missile", () -> new Item(new Item.Properties())); diff --git a/src/main/java/net/mcreator/superbwarfare/init/ModParticleTypes.java b/src/main/java/net/mcreator/superbwarfare/init/ModParticleTypes.java index 3b6c9d36f..c22504538 100644 --- a/src/main/java/net/mcreator/superbwarfare/init/ModParticleTypes.java +++ b/src/main/java/net/mcreator/superbwarfare/init/ModParticleTypes.java @@ -12,5 +12,6 @@ public class ModParticleTypes { public static final RegistryObject FIRE_STAR = REGISTRY.register("fire_star", () -> new SimpleParticleType(false)); public static final RegistryObject BULLET_HOLE = REGISTRY.register("bullet_hole", () -> new SimpleParticleType(false)); + public static final RegistryObject CUSTOM_CLOUD = REGISTRY.register("custom_cloud", () -> new SimpleParticleType(false)); } diff --git a/src/main/java/net/mcreator/superbwarfare/init/ModParticles.java b/src/main/java/net/mcreator/superbwarfare/init/ModParticles.java index 74270e950..55eb6debe 100644 --- a/src/main/java/net/mcreator/superbwarfare/init/ModParticles.java +++ b/src/main/java/net/mcreator/superbwarfare/init/ModParticles.java @@ -1,6 +1,7 @@ package net.mcreator.superbwarfare.init; import net.mcreator.superbwarfare.client.particle.BulletHoleParticle; +import net.mcreator.superbwarfare.client.particle.CustomCloudParticle; import net.mcreator.superbwarfare.client.particle.FireStarParticle; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.event.RegisterParticleProvidersEvent; @@ -13,6 +14,7 @@ public class ModParticles { public static void registerParticles(RegisterParticleProvidersEvent event) { event.registerSpriteSet(ModParticleTypes.FIRE_STAR.get(), FireStarParticle::provider); event.registerSpriteSet(ModParticleTypes.BULLET_HOLE.get(), BulletHoleParticle::provider); + event.registerSpriteSet(ModParticleTypes.CUSTOM_CLOUD.get(), CustomCloudParticle::provider); } } diff --git a/src/main/java/net/mcreator/superbwarfare/item/armor/RuHelmet6b47.java b/src/main/java/net/mcreator/superbwarfare/item/armor/RuHelmet6b47.java index 4767e63d8..64875168c 100644 --- a/src/main/java/net/mcreator/superbwarfare/item/armor/RuHelmet6b47.java +++ b/src/main/java/net/mcreator/superbwarfare/item/armor/RuHelmet6b47.java @@ -18,8 +18,6 @@ import java.util.function.Consumer; public class RuHelmet6b47 extends ArmorItem implements GeoItem { private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); - public String animationprocedure = "empty"; - public RuHelmet6b47() { super(ModArmorMaterial.CEMENTED_CARBIDE, Type.HELMET, new Properties()); } diff --git a/src/main/java/net/mcreator/superbwarfare/item/common/ammo/CreativeAmmoBox.java b/src/main/java/net/mcreator/superbwarfare/item/common/ammo/CreativeAmmoBox.java deleted file mode 100644 index 5657b6dc9..000000000 --- a/src/main/java/net/mcreator/superbwarfare/item/common/ammo/CreativeAmmoBox.java +++ /dev/null @@ -1,64 +0,0 @@ -package net.mcreator.superbwarfare.item.common.ammo; - -import net.mcreator.superbwarfare.init.ModSounds; -import net.mcreator.superbwarfare.network.ModVariables; -import net.minecraft.ChatFormatting; -import net.minecraft.network.chat.Component; -import net.minecraft.sounds.SoundSource; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResultHolder; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.*; -import net.minecraft.world.level.Level; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import java.util.List; - -public class CreativeAmmoBox extends Item { - public CreativeAmmoBox() { - super(new Item.Properties().rarity(Rarity.EPIC)); - } - - @Override - public UseAnim getUseAnimation(ItemStack itemstack) { - return UseAnim.EAT; - } - - @Override - public int getUseDuration(ItemStack itemstack) { - return 6; - } - - @Override - @OnlyIn(Dist.CLIENT) - public boolean isFoil(ItemStack itemstack) { - return true; - } - - @Override - public void appendHoverText(ItemStack itemstack, Level world, List list, TooltipFlag flag) { - list.add(Component.translatable("des.superbwarfare.creative_ammo_box").withStyle(ChatFormatting.GRAY)); - } - - @Override - public InteractionResultHolder use(Level level, Player player, InteractionHand hand) { - ItemStack stack = player.getItemInHand(hand); - player.getCooldowns().addCooldown(this, 20); - stack.shrink(1); - - player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { - capability.handgunAmmo = 2147483647; - capability.rifleAmmo = 2147483647; - capability.shotgunAmmo = 2147483647; - capability.sniperAmmo = 2147483647; - capability.syncPlayerVariables(player); - }); - - if (!level.isClientSide()) { - player.displayClientMessage(Component.translatable("item.superbwarfare.ammo_supplier.creative"), false); - level.playSound(null, player.blockPosition(), ModSounds.BULLET_SUPPLY.get(), SoundSource.VOICE, 1, 1); - } - return InteractionResultHolder.consume(stack); - } -} diff --git a/src/main/java/net/mcreator/superbwarfare/item/gun/launcher/JavelinItem.java b/src/main/java/net/mcreator/superbwarfare/item/gun/launcher/JavelinItem.java index cc789561b..5c69ec7d2 100644 --- a/src/main/java/net/mcreator/superbwarfare/item/gun/launcher/JavelinItem.java +++ b/src/main/java/net/mcreator/superbwarfare/item/gun/launcher/JavelinItem.java @@ -154,14 +154,24 @@ public class JavelinItem extends GunItem implements GeoItem, AnimatedItem { } public static int getAmmoCount(Player player) { - int sum = 0; - for (int i = 0; i < player.getInventory().getContainerSize(); ++i) { - ItemStack itemstack = player.getInventory().getItem(i); - if (check(itemstack)) { - sum += itemstack.getCount(); + int count = 0; + for (var inv : player.getInventory().items) { + if (inv.is(ModItems.CREATIVE_AMMO_BOX.get())) { + count++; } } - return sum; + + if (count == 0) { + int sum = 0; + for (int i = 0; i < player.getInventory().getContainerSize(); ++i) { + ItemStack itemstack = player.getInventory().getItem(i); + if (check(itemstack)) { + sum += itemstack.getCount(); + } + } + return sum; + } + return (int) Double.POSITIVE_INFINITY; } @Override diff --git a/src/main/java/net/mcreator/superbwarfare/item/gun/launcher/M79Item.java b/src/main/java/net/mcreator/superbwarfare/item/gun/launcher/M79Item.java index 423d73717..055b96537 100644 --- a/src/main/java/net/mcreator/superbwarfare/item/gun/launcher/M79Item.java +++ b/src/main/java/net/mcreator/superbwarfare/item/gun/launcher/M79Item.java @@ -154,14 +154,24 @@ public class M79Item extends GunItem implements GeoItem, AnimatedItem { } public static int getAmmoCount(Player player) { - int sum = 0; - for (int i = 0; i < player.getInventory().getContainerSize(); ++i) { - ItemStack itemstack = player.getInventory().getItem(i); - if (check(itemstack)) { - sum += itemstack.getCount(); + int count = 0; + for (var inv : player.getInventory().items) { + if (inv.is(ModItems.CREATIVE_AMMO_BOX.get())) { + count++; } } - return sum; + + if (count == 0) { + int sum = 0; + for (int i = 0; i < player.getInventory().getContainerSize(); ++i) { + ItemStack itemstack = player.getInventory().getItem(i); + if (check(itemstack)) { + sum += itemstack.getCount(); + } + } + return sum; + } + return (int) Double.POSITIVE_INFINITY; } @Override diff --git a/src/main/java/net/mcreator/superbwarfare/item/gun/launcher/RpgItem.java b/src/main/java/net/mcreator/superbwarfare/item/gun/launcher/RpgItem.java index eade4d378..f6866d8d0 100644 --- a/src/main/java/net/mcreator/superbwarfare/item/gun/launcher/RpgItem.java +++ b/src/main/java/net/mcreator/superbwarfare/item/gun/launcher/RpgItem.java @@ -152,14 +152,24 @@ public class RpgItem extends GunItem implements GeoItem, AnimatedItem { } public static int getAmmoCount(Player player) { - int sum = 0; - for (int i = 0; i < player.getInventory().getContainerSize(); ++i) { - ItemStack itemstack = player.getInventory().getItem(i); - if (check(itemstack)) { - sum += itemstack.getCount(); + int count = 0; + for (var inv : player.getInventory().items) { + if (inv.is(ModItems.CREATIVE_AMMO_BOX.get())) { + count++; } } - return sum; + + if (count == 0) { + int sum = 0; + for (int i = 0; i < player.getInventory().getContainerSize(); ++i) { + ItemStack itemstack = player.getInventory().getItem(i); + if (check(itemstack)) { + sum += itemstack.getCount(); + } + } + return sum; + } + return (int) Double.POSITIVE_INFINITY; } @Override diff --git a/src/main/java/net/mcreator/superbwarfare/item/gun/machinegun/MinigunItem.java b/src/main/java/net/mcreator/superbwarfare/item/gun/machinegun/MinigunItem.java index 1e2c61e17..da5c5bd3d 100644 --- a/src/main/java/net/mcreator/superbwarfare/item/gun/machinegun/MinigunItem.java +++ b/src/main/java/net/mcreator/superbwarfare/item/gun/machinegun/MinigunItem.java @@ -5,6 +5,7 @@ import com.google.common.collect.Multimap; import net.mcreator.superbwarfare.ModUtils; import net.mcreator.superbwarfare.client.renderer.item.MinigunItemRenderer; import net.mcreator.superbwarfare.init.ModItems; +import net.mcreator.superbwarfare.init.ModParticleTypes; import net.mcreator.superbwarfare.init.ModPerks; import net.mcreator.superbwarfare.init.ModTags; import net.mcreator.superbwarfare.item.AnimatedItem; @@ -12,12 +13,16 @@ import net.mcreator.superbwarfare.item.gun.GunItem; import net.mcreator.superbwarfare.perk.Perk; import net.mcreator.superbwarfare.tools.GunsTool; import net.mcreator.superbwarfare.tools.ItemNBTTool; +import net.mcreator.superbwarfare.tools.ParticleTool; import net.mcreator.superbwarfare.tools.RarityTool; import net.minecraft.client.Minecraft; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; +import net.minecraft.core.particles.ParticleTypes; import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; import net.minecraft.util.Mth; import net.minecraft.world.InteractionHand; import net.minecraft.world.effect.MobEffects; @@ -33,6 +38,7 @@ import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraftforge.client.extensions.common.IClientItemExtensions; +import org.joml.Vector3d; import software.bernie.geckolib.animatable.GeoItem; import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache; import software.bernie.geckolib.core.animation.AnimatableManager; @@ -131,25 +137,8 @@ public class MinigunItem extends GunItem implements GeoItem, AnimatedItem { return PlayState.STOP; } - private PlayState procedurePredicate(AnimationState event) { - if (transformType != null && transformType.firstPerson()) { - if (!this.animationProcedure.equals("empty") && event.getController().getAnimationState() == AnimationController.State.STOPPED) { - event.getController().setAnimation(RawAnimation.begin().thenPlay(this.animationProcedure)); - if (event.getController().getAnimationState() == AnimationController.State.STOPPED) { - this.animationProcedure = "empty"; - event.getController().forceAnimationReset(); - } - } else if (this.animationProcedure.equals("empty")) { - return PlayState.STOP; - } - } - return PlayState.CONTINUE; - } - @Override public void registerControllers(AnimatableManager.ControllerRegistrar data) { - var procedureController = new AnimationController<>(this, "procedureController", 0, this::procedurePredicate); - data.add(procedureController); var idleController = new AnimationController<>(this, "idleController", 6, this::idlePredicate); data.add(idleController); } @@ -175,6 +164,16 @@ public class MinigunItem extends GunItem implements GeoItem, AnimatedItem { public void inventoryTick(ItemStack itemstack, Level world, Entity entity, int slot, boolean selected) { super.inventoryTick(itemstack, world, entity, slot, selected); + float yRot = entity.getYRot(); + if (yRot < 0) { + yRot += 360; + } + yRot = yRot + 90 % 360; + + var leftPos = new Vector3d(1.2, -0.3, 0.3); + leftPos.rotateZ(-entity.getXRot() * Mth.DEG_TO_RAD); + leftPos.rotateY(-yRot * Mth.DEG_TO_RAD); + double cooldown = 0; if (entity.wasInPowderSnow) { cooldown = 0.75; @@ -184,6 +183,22 @@ public class MinigunItem extends GunItem implements GeoItem, AnimatedItem { cooldown = -0.5; } + if (entity instanceof ServerPlayer serverPlayer && entity.level() instanceof ServerLevel serverLevel && itemstack.getOrCreateTag().getDouble("heat") > 4) { + if (entity.isInWater()) { + ParticleTool.sendParticle(serverLevel, ParticleTypes.BUBBLE_COLUMN_UP, + entity.getX() + leftPos.x, + entity.getEyeY() + leftPos.y, + entity.getZ() + leftPos.z, + 1, 0.1, 0.1, 0.1, 0.002, true, serverPlayer); + } + + ParticleTool.sendParticle(serverLevel, ModParticleTypes.CUSTOM_CLOUD.get(), + entity.getX() + leftPos.x, + entity.getEyeY() + leftPos.y, + entity.getZ() + leftPos.z, + 1, 0.1, 0.1, 0.1, 0.002, true, serverPlayer); + } + itemstack.getOrCreateTag().putDouble("heat", Mth.clamp(itemstack.getOrCreateTag().getDouble("heat") - 0.25 - cooldown, 0, 55)); if (itemstack.getOrCreateTag().getDouble("overheat") > 0) { diff --git a/src/main/java/net/mcreator/superbwarfare/item/gun/special/BocekItem.java b/src/main/java/net/mcreator/superbwarfare/item/gun/special/BocekItem.java index 2cc67b5de..261592544 100644 --- a/src/main/java/net/mcreator/superbwarfare/item/gun/special/BocekItem.java +++ b/src/main/java/net/mcreator/superbwarfare/item/gun/special/BocekItem.java @@ -145,14 +145,24 @@ public class BocekItem extends GunItem implements GeoItem, AnimatedItem { } public static int getAmmoCount(Player player) { - int sum = 0; - for (int i = 0; i < player.getInventory().getContainerSize(); ++i) { - ItemStack itemstack = player.getInventory().getItem(i); - if (check(itemstack)) { - sum += itemstack.getCount(); + int count = 0; + for (var inv : player.getInventory().items) { + if (inv.is(ModItems.CREATIVE_AMMO_BOX.get())) { + count++; } } - return sum; + + if (count == 0) { + int sum = 0; + for (int i = 0; i < player.getInventory().getContainerSize(); ++i) { + ItemStack itemstack = player.getInventory().getItem(i); + if (check(itemstack)) { + sum += itemstack.getCount(); + } + } + return sum; + } + return (int) Double.POSITIVE_INFINITY; } @Override diff --git a/src/main/java/net/mcreator/superbwarfare/item/gun/special/TaserItem.java b/src/main/java/net/mcreator/superbwarfare/item/gun/special/TaserItem.java index 274376b8d..e7c9ef3ba 100644 --- a/src/main/java/net/mcreator/superbwarfare/item/gun/special/TaserItem.java +++ b/src/main/java/net/mcreator/superbwarfare/item/gun/special/TaserItem.java @@ -196,14 +196,24 @@ public class TaserItem extends GunItem implements GeoItem, AnimatedItem { } public static int getAmmoCount(Player player) { - int sum = 0; - for (int i = 0; i < player.getInventory().getContainerSize(); ++i) { - ItemStack itemstack = player.getInventory().getItem(i); - if (check(itemstack)) { - sum += itemstack.getCount(); + int count = 0; + for (var inv : player.getInventory().items) { + if (inv.is(ModItems.CREATIVE_AMMO_BOX.get())) { + count++; } } - return sum; + + if (count == 0) { + int sum = 0; + for (int i = 0; i < player.getInventory().getContainerSize(); ++i) { + ItemStack itemstack = player.getInventory().getItem(i); + if (check(itemstack)) { + sum += itemstack.getCount(); + } + } + return sum; + } + return (int) Double.POSITIVE_INFINITY; } @Override diff --git a/src/main/java/net/mcreator/superbwarfare/network/message/FireMessage.java b/src/main/java/net/mcreator/superbwarfare/network/message/FireMessage.java index 15710dadb..badc9a8bc 100644 --- a/src/main/java/net/mcreator/superbwarfare/network/message/FireMessage.java +++ b/src/main/java/net/mcreator/superbwarfare/network/message/FireMessage.java @@ -152,14 +152,6 @@ public class FireMessage { } } - if (handItem.getItem() == ModItems.MINIGUN.get()) { - if ((player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).rifleAmmo == 0) { - if (!player.level().isClientSide()) { - SoundTool.playLocalSound(player, ModSounds.TRIGGER_CLICK.get(), 10, 1); - } - } - } - player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { capability.bowPullHold = true; capability.syncPlayerVariables(player); @@ -290,7 +282,14 @@ public class FireMessage { player.getMainHandItem().getOrCreateTag().putDouble("power", 0); stack.getOrCreateTag().putInt("fire_animation", 2); - if (!player.isCreative()) { + int count = 0; + for (var inv : player.getInventory().items) { + if (inv.is(ModItems.CREATIVE_AMMO_BOX.get())) { + count++; + } + } + + if (count == 0 && !player.isCreative()) { player.getInventory().clearOrCountMatchingItems(p -> Items.ARROW == p.getItem(), 1, player.inventoryMenu.getCraftSlots()); } } diff --git a/src/main/java/net/mcreator/superbwarfare/network/message/ReloadMessage.java b/src/main/java/net/mcreator/superbwarfare/network/message/ReloadMessage.java index 4a4cdee6d..512b4b4fe 100644 --- a/src/main/java/net/mcreator/superbwarfare/network/message/ReloadMessage.java +++ b/src/main/java/net/mcreator/superbwarfare/network/message/ReloadMessage.java @@ -61,22 +61,32 @@ public class ReloadMessage { boolean clipLoad = tag.getInt("ammo") == 0 && tag.getDouble("clipLoad") == 1; // 检查备弹 - if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO) && capability.shotgunAmmo == 0) { - return; - } else if (stack.is(ModTags.Items.USE_SNIPER_AMMO) && capability.sniperAmmo == 0) { - return; - } else if ((stack.is(ModTags.Items.USE_HANDGUN_AMMO) || stack.is(ModTags.Items.SMG)) && capability.handgunAmmo == 0) { - return; - } else if (stack.is(ModTags.Items.USE_RIFLE_AMMO) && capability.rifleAmmo == 0) { - return; - } else if (stack.getItem() == ModItems.TASER.get() && tag.getInt("max_ammo") == 0) { - return; - } else if (stack.getItem() == ModItems.M_79.get() && tag.getInt("max_ammo") == 0) { - return; - } else if (stack.getItem() == ModItems.RPG.get() && tag.getInt("max_ammo") == 0) { - return; - } else if (stack.getItem() == ModItems.JAVELIN.get() && tag.getInt("max_ammo") == 0) { - return; + + int count = 0; + for (var inv : player.getInventory().items) { + if (inv.is(ModItems.CREATIVE_AMMO_BOX.get())) { + count++; + } + } + + if (count == 0) { + if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO) && capability.shotgunAmmo == 0) { + return; + } else if (stack.is(ModTags.Items.USE_SNIPER_AMMO) && capability.sniperAmmo == 0) { + return; + } else if ((stack.is(ModTags.Items.USE_HANDGUN_AMMO) || stack.is(ModTags.Items.SMG)) && capability.handgunAmmo == 0) { + return; + } else if (stack.is(ModTags.Items.USE_RIFLE_AMMO) && capability.rifleAmmo == 0) { + return; + } else if (stack.getItem() == ModItems.TASER.get() && tag.getInt("max_ammo") == 0) { + return; + } else if (stack.getItem() == ModItems.M_79.get() && tag.getInt("max_ammo") == 0) { + return; + } else if (stack.getItem() == ModItems.RPG.get() && tag.getInt("max_ammo") == 0) { + return; + } else if (stack.getItem() == ModItems.JAVELIN.get() && tag.getInt("max_ammo") == 0) { + return; + } } if (canReload || clipLoad) { diff --git a/src/main/java/net/mcreator/superbwarfare/network/message/ShootMessage.java b/src/main/java/net/mcreator/superbwarfare/network/message/ShootMessage.java index 789a046c2..a9072fe1d 100644 --- a/src/main/java/net/mcreator/superbwarfare/network/message/ShootMessage.java +++ b/src/main/java/net/mcreator/superbwarfare/network/message/ShootMessage.java @@ -63,7 +63,7 @@ public class ShootMessage { double rpm = stack.getOrCreateTag().getDouble("rpm") + stack.getOrCreateTag().getInt("customRpm");; - int coolDownownTick = (int) Math.ceil(20 / (rpm / 60)); + int coolDownTick = (int) Math.ceil(20 / (rpm / 60)); double mode = stack.getOrCreateTag().getInt("fire_mode"); if ((player.getPersistentData().getBoolean("holdFire") || stack.getOrCreateTag().getInt("burst_fire") > 0) @@ -77,14 +77,14 @@ public class ShootMessage { int singleInterval = 0; if (mode == 0) { player.getPersistentData().putBoolean("holdFire", false); - singleInterval = coolDownownTick; + singleInterval = coolDownTick; } int burstCooldown = 0; if (mode == 1) { player.getPersistentData().putBoolean("holdFire", false); stack.getOrCreateTag().putInt("burst_fire", (stack.getOrCreateTag().getInt("burst_fire") - 1)); - burstCooldown = stack.getOrCreateTag().getInt("burst_fire") == 0 ? coolDownownTick + 4 : 0; + burstCooldown = stack.getOrCreateTag().getInt("burst_fire") == 0 ? coolDownTick + 4 : 0; } if (stack.getOrCreateTag().getDouble("animindex") == 1) { @@ -107,8 +107,8 @@ public class ShootMessage { } stack.getOrCreateTag().putInt("ammo", (stack.getOrCreateTag().getInt("ammo") - 1)); - stack.getOrCreateTag().putInt("fire_animation", coolDownownTick); - player.getPersistentData().putInt("noRun_time", coolDownownTick + 2); + stack.getOrCreateTag().putInt("fire_animation", coolDownTick); + player.getPersistentData().putInt("noRun_time", coolDownTick + 2); stack.getOrCreateTag().putDouble("flash_time", 2); stack.getOrCreateTag().putDouble("empty", 1); @@ -161,7 +161,15 @@ public class ShootMessage { } } else if (stack.is(ModItems.MINIGUN.get())) { var tag = stack.getOrCreateTag(); - if ((player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).rifleAmmo > 0) { + + int count = 0; + for (var inv : player.getInventory().items) { + if (inv.is(ModItems.CREATIVE_AMMO_BOX.get())) { + count++; + } + } + + if ((player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).rifleAmmo > 0 || count > 0) { tag.putDouble("heat", (tag.getDouble("heat") + 0.5)); if (tag.getDouble("heat") >= 50.5) { tag.putDouble("overheat", 40); @@ -191,10 +199,12 @@ public class ShootMessage { gunShoot(player, spared); } - player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { - capability.rifleAmmo = player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables()).rifleAmmo - 1; - capability.syncPlayerVariables(player); - }); + if (count == 0) { + player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.rifleAmmo = player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables()).rifleAmmo - 1; + capability.syncPlayerVariables(player); + }); + } tag.putInt("fire_animation", 2); } diff --git a/src/main/resources/assets/superbwarfare/lang/en_us.json b/src/main/resources/assets/superbwarfare/lang/en_us.json index 5938154bf..d2ce48783 100644 --- a/src/main/resources/assets/superbwarfare/lang/en_us.json +++ b/src/main/resources/assets/superbwarfare/lang/en_us.json @@ -125,9 +125,7 @@ "item.superbwarfare.handgun_ammo_box": "Handgun Ammo Box", "des.superbwarfare.handgun_ammo_box": "Handgun Ammo *30", "item.superbwarfare.creative_ammo_box": "Creative Ammo Box", - "des.superbwarfare.creative_ammo_box": "Creative Ammo *2147483647", "item.superbwarfare.ammo_supplier.supply": "%s Ammo +%s", - "item.superbwarfare.ammo_supplier.creative": "All Ammo +2147483647", "item.superbwarfare.he_5_inches": "HE Shell", "item.superbwarfare.ap_5_inches": "AP Shell", "item.superbwarfare.javelin_missile": "Javelin Missile", diff --git a/src/main/resources/assets/superbwarfare/lang/zh_cn.json b/src/main/resources/assets/superbwarfare/lang/zh_cn.json index 2d4f386b7..d2e56795d 100644 --- a/src/main/resources/assets/superbwarfare/lang/zh_cn.json +++ b/src/main/resources/assets/superbwarfare/lang/zh_cn.json @@ -125,9 +125,7 @@ "item.superbwarfare.handgun_ammo_box": "手枪弹药盒", "des.superbwarfare.handgun_ammo_box": "手枪弹药 *30", "item.superbwarfare.creative_ammo_box": "创造弹药盒", - "des.superbwarfare.creative_ammo_box": "创造弹药 *2147483647", "item.superbwarfare.ammo_supplier.supply": "%s弹药 +%s", - "item.superbwarfare.ammo_supplier.creative": "所有弹药 +2147483647", "item.superbwarfare.he_5_inches": "高爆弹", "item.superbwarfare.ap_5_inches": "穿甲弹", "item.superbwarfare.javelin_missile": "标枪导弹", diff --git a/src/main/resources/assets/superbwarfare/particles/custom_cloud.json b/src/main/resources/assets/superbwarfare/particles/custom_cloud.json new file mode 100644 index 000000000..271261099 --- /dev/null +++ b/src/main/resources/assets/superbwarfare/particles/custom_cloud.json @@ -0,0 +1,12 @@ +{ + "textures": [ + "minecraft:generic_7", + "minecraft:generic_6", + "minecraft:generic_5", + "minecraft:generic_4", + "minecraft:generic_3", + "minecraft:generic_2", + "minecraft:generic_1", + "minecraft:generic_0" + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/superbwarfare/textures/armor/ru_6b47.png b/src/main/resources/assets/superbwarfare/textures/armor/ru_helmet_6b47.png similarity index 100% rename from src/main/resources/assets/superbwarfare/textures/armor/ru_6b47.png rename to src/main/resources/assets/superbwarfare/textures/armor/ru_helmet_6b47.png