Sync ore depths to all clients via a packet on server login.

This commit is contained in:
modmuss50 2022-01-28 20:14:35 +00:00
parent 32368f8388
commit 5b596aa5f8
10 changed files with 224 additions and 78 deletions

View file

@ -47,8 +47,6 @@ import reborncore.common.blockentity.MachineBaseBlockEntity;
import reborncore.common.blockentity.SlotConfiguration;
import reborncore.common.chunkloading.ChunkLoaderManager;
import java.util.List;
@Environment(EnvType.CLIENT)
public class ClientBoundPacketHandlers {
private static final Logger LOGGER = LoggerFactory.getLogger(ClientBoundPacketHandlers.class);
@ -137,11 +135,7 @@ public class ClientBoundPacketHandlers {
});
});
NetworkManager.registerClientBoundHandler(new Identifier("reborncore", "sync_chunks"), (client, handler, packetBuffer, responseSender) -> {
List<ChunkLoaderManager.LoadedChunk> chunks = new ExtendedPacketBuffer(packetBuffer).readCodec(ChunkLoaderManager.CODEC);
client.execute(() -> ClientChunkManager.setLoadedChunks(chunks));
});
NetworkManager.registerClientBoundHandler(new Identifier("reborncore", "sync_chunks"), ChunkLoaderManager.CODEC, ClientChunkManager::setLoadedChunks);
}
}

View file

@ -76,9 +76,7 @@ public class ClientBoundPackets {
}
public static IdentifiedPacket createPacketSyncLoadedChunks(List<ChunkLoaderManager.LoadedChunk> chunks) {
return NetworkManager.createClientBoundPacket(new Identifier("reborncore", "sync_chunks"), extendedPacketBuffer -> {
extendedPacketBuffer.writeCodec(ChunkLoaderManager.CODEC, chunks);
});
return NetworkManager.createClientBoundPacket(new Identifier("reborncore", "sync_chunks"), ChunkLoaderManager.CODEC, chunks);
}
}

View file

@ -24,11 +24,16 @@
package reborncore.common.network;
import com.mojang.serialization.Codec;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.fabricmc.fabric.api.networking.v1.PacketByteBufs;
import net.fabricmc.fabric.api.networking.v1.PacketSender;
import net.fabricmc.fabric.api.networking.v1.PlayerLookup;
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.network.Packet;
import net.minecraft.network.PacketByteBuf;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.network.ServerPlayerEntity;
@ -58,10 +63,24 @@ public class NetworkManager {
return new IdentifiedPacket(identifier, buf);
}
public static <T> IdentifiedPacket createClientBoundPacket(Identifier identifier, Codec<T> codec, T value) {
return createClientBoundPacket(identifier, extendedPacketBuffer -> extendedPacketBuffer.writeCodec(codec, value));
}
// TODO move to own class
@Environment(EnvType.CLIENT)
public static void registerClientBoundHandler(Identifier identifier, ClientPlayNetworking.PlayChannelHandler handler) {
ClientPlayNetworking.registerGlobalReceiver(identifier, handler);
}
// TODO move to own class
@Environment(EnvType.CLIENT)
public static <T> void registerClientBoundHandler(Identifier identifier, Codec<T> codec, Consumer<T> consumer) {
registerClientBoundHandler(identifier, (client, handler, buf, responseSender) -> {
T value = new ExtendedPacketBuffer(buf).readCodec(codec);
client.execute(() -> consumer.accept(value));
});
}
public static void sendToServer(IdentifiedPacket packet) {
ClientPlayNetworking.send(packet.channel(), packet.packetByteBuf());
@ -90,5 +109,9 @@ public class NetworkManager {
}
}
public static void sendTo(IdentifiedPacket packet, PacketSender sender) {
Packet<?> s2CPacket = ServerPlayNetworking.createS2CPacket(packet.channel(), packet.packetByteBuf());
sender.sendPacket(s2CPacket);
}
}