diff --git a/src/main/java/net/mcreator/superbwarfare/client/ClickHandler.java b/src/main/java/net/mcreator/superbwarfare/client/ClickHandler.java index 5d1e91603..6b54dec0a 100644 --- a/src/main/java/net/mcreator/superbwarfare/client/ClickHandler.java +++ b/src/main/java/net/mcreator/superbwarfare/client/ClickHandler.java @@ -101,7 +101,7 @@ public class ClickHandler { } else { ModUtils.PACKET_HANDLER.sendToServer(new FireMessage(0)); ClientEventHandler.holdFire = true; - if (GunsTool.getGunIntTag(stack, "FireMode") == 1) { + if (GunsTool.getGunIntTag(stack, "FireMode") == 1 && ClientEventHandler.burstFireSize == 0) { ClientEventHandler.burstFireSize = (int) stack.getOrCreateTag().getDouble("burst_size"); } } diff --git a/src/main/java/net/mcreator/superbwarfare/event/ClientEventHandler.java b/src/main/java/net/mcreator/superbwarfare/event/ClientEventHandler.java index 96e034e39..ded359eea 100644 --- a/src/main/java/net/mcreator/superbwarfare/event/ClientEventHandler.java +++ b/src/main/java/net/mcreator/superbwarfare/event/ClientEventHandler.java @@ -252,7 +252,7 @@ public class ClientEventHandler { if (clientTimer.getProgress() >= cooldown) { shootClient(player); - ModUtils.PACKET_HANDLER.sendToServer(new ShootMessage(spread)); + ModUtils.PACKET_HANDLER.sendToServer(new ShootMessage(spread, burstFireSize)); clientTimer.setProgress((clientTimer.getProgress() - cooldown)); } 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 d96537c7f..576e57b1d 100644 --- a/src/main/java/net/mcreator/superbwarfare/network/message/ShootMessage.java +++ b/src/main/java/net/mcreator/superbwarfare/network/message/ShootMessage.java @@ -31,30 +31,33 @@ import static net.mcreator.superbwarfare.event.GunEventHandler.playGunSounds; public class ShootMessage { private final double spread; + private final int burstSize; - public ShootMessage(double spread) { + public ShootMessage(double spread, int burstSize) { this.spread = spread; + this.burstSize = burstSize; } public static ShootMessage decode(FriendlyByteBuf buffer) { - return new ShootMessage(buffer.readDouble()); + return new ShootMessage(buffer.readDouble(), buffer.readInt()); } public static void encode(ShootMessage message, FriendlyByteBuf buffer) { buffer.writeDouble(message.spread); + buffer.writeInt(message.burstSize); } public static void handler(ShootMessage message, Supplier contextSupplier) { NetworkEvent.Context context = contextSupplier.get(); context.enqueueWork(() -> { if (context.getSender() != null) { - pressAction(context.getSender(), message.spread); + pressAction(context.getSender(), message.spread, message.burstSize); } }); context.setPacketHandled(true); } - public static void pressAction(Player player, double spared) { + public static void pressAction(Player player, double spared, int burstSize) { Level level = player.level(); if (!level.isLoaded(player.blockPosition())) { @@ -78,7 +81,7 @@ public class ShootMessage { if (mode == 0) { singleInterval = coolDownTick; } else if (mode == 1) { - burstCooldown = stack.getOrCreateTag().getInt("burst_fire") == 0 ? coolDownTick + 3 : 0; + burstCooldown = burstSize == 0 ? coolDownTick + 3 : 0; } /*