Sync ore depths to all clients via a packet on server login.
This commit is contained in:
parent
32368f8388
commit
5b596aa5f8
10 changed files with 224 additions and 78 deletions
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue