修复三连发

This commit is contained in:
Atsuihsio 2024-11-03 22:10:26 +08:00
parent f40472244f
commit e52d85f4ab
3 changed files with 10 additions and 7 deletions

View file

@ -101,7 +101,7 @@ public class ClickHandler {
} else { } else {
ModUtils.PACKET_HANDLER.sendToServer(new FireMessage(0)); ModUtils.PACKET_HANDLER.sendToServer(new FireMessage(0));
ClientEventHandler.holdFire = true; 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"); ClientEventHandler.burstFireSize = (int) stack.getOrCreateTag().getDouble("burst_size");
} }
} }

View file

@ -252,7 +252,7 @@ public class ClientEventHandler {
if (clientTimer.getProgress() >= cooldown) { if (clientTimer.getProgress() >= cooldown) {
shootClient(player); shootClient(player);
ModUtils.PACKET_HANDLER.sendToServer(new ShootMessage(spread)); ModUtils.PACKET_HANDLER.sendToServer(new ShootMessage(spread, burstFireSize));
clientTimer.setProgress((clientTimer.getProgress() - cooldown)); clientTimer.setProgress((clientTimer.getProgress() - cooldown));
} }

View file

@ -31,30 +31,33 @@ import static net.mcreator.superbwarfare.event.GunEventHandler.playGunSounds;
public class ShootMessage { public class ShootMessage {
private final double spread; private final double spread;
private final int burstSize;
public ShootMessage(double spread) { public ShootMessage(double spread, int burstSize) {
this.spread = spread; this.spread = spread;
this.burstSize = burstSize;
} }
public static ShootMessage decode(FriendlyByteBuf buffer) { 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) { public static void encode(ShootMessage message, FriendlyByteBuf buffer) {
buffer.writeDouble(message.spread); buffer.writeDouble(message.spread);
buffer.writeInt(message.burstSize);
} }
public static void handler(ShootMessage message, Supplier<NetworkEvent.Context> contextSupplier) { public static void handler(ShootMessage message, Supplier<NetworkEvent.Context> contextSupplier) {
NetworkEvent.Context context = contextSupplier.get(); NetworkEvent.Context context = contextSupplier.get();
context.enqueueWork(() -> { context.enqueueWork(() -> {
if (context.getSender() != null) { if (context.getSender() != null) {
pressAction(context.getSender(), message.spread); pressAction(context.getSender(), message.spread, message.burstSize);
} }
}); });
context.setPacketHandled(true); 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(); Level level = player.level();
if (!level.isLoaded(player.blockPosition())) { if (!level.isLoaded(player.blockPosition())) {
@ -78,7 +81,7 @@ public class ShootMessage {
if (mode == 0) { if (mode == 0) {
singleInterval = coolDownTick; singleInterval = coolDownTick;
} else if (mode == 1) { } else if (mode == 1) {
burstCooldown = stack.getOrCreateTag().getInt("burst_fire") == 0 ? coolDownTick + 3 : 0; burstCooldown = burstSize == 0 ? coolDownTick + 3 : 0;
} }
/* /*