修复三连发
This commit is contained in:
parent
f40472244f
commit
e52d85f4ab
3 changed files with 10 additions and 7 deletions
|
@ -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");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Add table
Reference in a new issue