import com.burnedkirby.TurnBasedMinecraft.common.networking.PacketBattleInfo;
import com.burnedkirby.TurnBasedMinecraft.common.networking.PacketBattleMessage;
+import com.burnedkirby.TurnBasedMinecraft.common.networking.PacketBattlePing;
import net.minecraft.resources.ResourceKey;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.InteractionHand;
private ResourceKey<Level> dimension;
- private long infoNanos;
+ private long pingTimerNanos;
public enum State {
DECISION(0),
undecidedCount = new AtomicInteger(0);
random = new Random();
this.dimension = dimension;
- infoNanos = 0;
+ pingTimerNanos = 0;
if (sideA != null) {
for (Entity e : sideA) {
EntityInfo entityInfo;
}
}
+ protected void notifyPlayersBattlePing() {
+ if (!isServer) {
+ return;
+ }
+ PacketBattlePing pingPacket = new PacketBattlePing(getId());
+ for (Combatant p : players.values()) {
+ TurnBasedMinecraftMod.getHandler().send(pingPacket, PacketDistributor.PLAYER.with((ServerPlayer)p.entity));
+ }
+ }
+
protected void sendMessageToAllPlayers(PacketBattleMessage.MessageType type, int from, int to, int amount) {
sendMessageToAllPlayers(type, from, to, amount, new String());
}
}
private boolean update(final long dt) {
- infoNanos += dt;
- if (infoNanos >= 4000000000L) {
- infoNanos = 0;
- notifyPlayersBattleInfo();
+ pingTimerNanos += dt;
+ if (pingTimerNanos >= 4000000000L) {
+ pingTimerNanos = 0;
+ notifyPlayersBattlePing();
}
if (battleEnded) {
Collection<Combatant> combatants = new ArrayList<Combatant>();
public class TurnBasedMinecraftMod {
public static final String MODID = "com_burnedkirby_turnbasedminecraft";
public static final String NAME = "Turn Based Minecraft Mod";
- public static final String VERSION = "1.26.0";
+ public static final String VERSION = "1.26.1";
public static final String CONFIG_FILENAME = "TBM_Config.toml";
public static final String DEFAULT_CONFIG_FILENAME = "TBM_Config_DEFAULT.toml";
public static final String CONFIG_DIRECTORY = "config/TurnBasedMinecraft/";
.decoder(new PacketClientGui.Decoder())
.consumerNetworkThread(new PacketClientGui.Consumer())
.add();
+ HANDLER.messageBuilder(PacketBattlePing.class, NetworkDirection.PLAY_TO_CLIENT)
+ .encoder(new PacketBattlePing.Encoder())
+ .decoder(new PacketBattlePing.Decoder())
+ .consumerNetworkThread(new PacketBattlePing.Consumer())
+ .add();
// register event handler(s)
MinecraftForge.EVENT_BUS.register(new AttackEventHandler());
--- /dev/null
+package com.burnedkirby.TurnBasedMinecraft.common.networking;
+
+import com.burnedkirby.TurnBasedMinecraft.common.TurnBasedMinecraftMod;
+import net.minecraft.network.RegistryFriendlyByteBuf;
+import net.minecraftforge.event.network.CustomPayloadEvent;
+
+import java.util.function.BiConsumer;
+import java.util.function.Function;
+
+public class PacketBattlePing {
+ private int battleID;
+
+ public PacketBattlePing() {
+ battleID = 0;
+ }
+
+ public PacketBattlePing(int battleID) {
+ this.battleID = battleID;
+ }
+
+ public static class Encoder implements BiConsumer<PacketBattlePing, RegistryFriendlyByteBuf> {
+ public Encoder() {}
+
+ @Override
+ public void accept(PacketBattlePing pkt, RegistryFriendlyByteBuf buf) {
+ buf.writeInt(pkt.battleID);
+ }
+ }
+
+ public static class Decoder implements Function<RegistryFriendlyByteBuf, PacketBattlePing> {
+ public Decoder() {}
+
+ @Override
+ public PacketBattlePing apply(RegistryFriendlyByteBuf buf) {
+ return new PacketBattlePing(buf.readInt());
+ }
+ }
+
+ public static class Consumer implements BiConsumer<PacketBattlePing, CustomPayloadEvent.Context> {
+ public Consumer() {}
+
+ @Override
+ public void accept(PacketBattlePing pkt, CustomPayloadEvent.Context ctx) {
+ ctx.enqueueWork(() -> {
+ if (TurnBasedMinecraftMod.proxy.getLocalBattle() == null) {
+ TurnBasedMinecraftMod.proxy.createLocalBattle(pkt.battleID);
+ }
+ TurnBasedMinecraftMod.proxy.setBattleGuiAsGui();
+ });
+ ctx.setPacketHandled(true);
+ }
+ }
+}
\ No newline at end of file