修复三连发

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 {
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");
}
}

View file

@ -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));
}

View file

@ -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<NetworkEvent.Context> 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;
}
/*