56 lines
2.1 KiB
Java
56 lines
2.1 KiB
Java
package com.ww1battle.ww1battle.network;
|
|
|
|
import com.ww1battle.ww1battle.WW1BattleMod;
|
|
import net.minecraft.core.BlockPos;
|
|
import net.minecraft.network.FriendlyByteBuf;
|
|
import net.minecraft.network.codec.StreamCodec;
|
|
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
|
|
import net.minecraft.resources.ResourceLocation;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
public record SyncBattleDataPacket(int redScore, int blueScore, int maxScore, List<SyncPointData> points) implements CustomPacketPayload {
|
|
public static final Type<SyncBattleDataPacket> TYPE = new Type<>(ResourceLocation.fromNamespaceAndPath(WW1BattleMod.MODID, "sync_battle_data"));
|
|
|
|
public static final StreamCodec<FriendlyByteBuf, SyncBattleDataPacket> STREAM_CODEC = StreamCodec.ofMember(
|
|
SyncBattleDataPacket::write,
|
|
SyncBattleDataPacket::new
|
|
);
|
|
|
|
public SyncBattleDataPacket(FriendlyByteBuf buf) {
|
|
this(buf.readInt(), buf.readInt(), buf.readInt(), readPoints(buf));
|
|
}
|
|
|
|
private static List<SyncPointData> readPoints(FriendlyByteBuf buf) {
|
|
int size = buf.readInt();
|
|
List<SyncPointData> list = new ArrayList<>();
|
|
for (int i = 0; i < size; i++) {
|
|
list.add(new SyncPointData(buf.readUtf(), buf.readBlockPos(), buf.readInt(), buf.readInt(), buf.readUtf(), buf.readUtf()));
|
|
}
|
|
return list;
|
|
}
|
|
|
|
public void write(FriendlyByteBuf buf) {
|
|
buf.writeInt(redScore);
|
|
buf.writeInt(blueScore);
|
|
buf.writeInt(maxScore);
|
|
buf.writeInt(points.size());
|
|
for (SyncPointData point : points) {
|
|
buf.writeUtf(point.name());
|
|
buf.writeBlockPos(point.pos());
|
|
buf.writeInt(point.radius());
|
|
buf.writeInt(point.captureProgress());
|
|
buf.writeUtf(point.owningTeam());
|
|
buf.writeUtf(point.capturingTeam());
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public Type<? extends CustomPacketPayload> type() {
|
|
return TYPE;
|
|
}
|
|
|
|
public record SyncPointData(String name, BlockPos pos, int radius, int captureProgress, String owningTeam, String capturingTeam) {}
|
|
}
|