diff --git a/src/main/java/net/krlite/knowledges/KnowledgesCommon.java b/src/main/java/net/krlite/knowledges/KnowledgesCommon.java index 69073b7..c33bda2 100644 --- a/src/main/java/net/krlite/knowledges/KnowledgesCommon.java +++ b/src/main/java/net/krlite/knowledges/KnowledgesCommon.java @@ -11,6 +11,6 @@ public class KnowledgesCommon implements ModInitializer { @Override public void onInitialize() { - KnowledgesNetworking.register(); + KnowledgesNetworking.registerServer(); } } diff --git a/src/main/java/net/krlite/knowledges/impl/representable/KnowledgesBlockRepresentable.java b/src/main/java/net/krlite/knowledges/impl/representable/KnowledgesBlockRepresentable.java index 5824534..7f015e8 100644 --- a/src/main/java/net/krlite/knowledges/impl/representable/KnowledgesBlockRepresentable.java +++ b/src/main/java/net/krlite/knowledges/impl/representable/KnowledgesBlockRepresentable.java @@ -77,6 +77,7 @@ public static void onRequest(PacketByteBuf buf, ServerPlayerEntity player, Consu }); } + @Override public void writeToBuf(PacketByteBuf buf) { buf.writeBlockHitResult(hitResult()); buf.writeVarInt(Block.getRawIdFromState(blockState())); diff --git a/src/main/java/net/krlite/knowledges/impl/representable/KnowledgesEntityRepresentable.java b/src/main/java/net/krlite/knowledges/impl/representable/KnowledgesEntityRepresentable.java index 9ed8051..d36cdf6 100644 --- a/src/main/java/net/krlite/knowledges/impl/representable/KnowledgesEntityRepresentable.java +++ b/src/main/java/net/krlite/knowledges/impl/representable/KnowledgesEntityRepresentable.java @@ -41,8 +41,9 @@ public static void onRequest(PacketByteBuf buf, ServerPlayerEntity player, Consu responseSender.accept(compound); }); } - - public void writeToPacket(PacketByteBuf buf) { + + @Override + public void writeToBuf(PacketByteBuf buf) { buf.writeVarInt(entity().getId()); Vec3d hitPos = hitResult().getPos(); diff --git a/src/main/java/net/krlite/knowledges/networking/KnowledgesNetworking.java b/src/main/java/net/krlite/knowledges/networking/KnowledgesNetworking.java index 12468b7..a7b943c 100644 --- a/src/main/java/net/krlite/knowledges/networking/KnowledgesNetworking.java +++ b/src/main/java/net/krlite/knowledges/networking/KnowledgesNetworking.java @@ -1,10 +1,15 @@ package net.krlite.knowledges.networking; +import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents; +import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; +import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; +import net.krlite.knowledges.KnowledgesClient; import net.krlite.knowledges.KnowledgesCommon; import net.krlite.knowledges.impl.representable.KnowledgesBlockRepresentable; import net.krlite.knowledges.impl.representable.KnowledgesEntityRepresentable; +import net.minecraft.nbt.NbtCompound; import net.minecraft.network.PacketByteBuf; import net.minecraft.util.Identifier; @@ -12,12 +17,13 @@ public class KnowledgesNetworking { public static final Identifier PACKET_PEEK_BLOCK = identifier("packet_peek_block"); public static final Identifier PACKET_PEEK_ENTITY = identifier("packet_peek_entity"); public static final Identifier PACKET_RECEIVE_DATA = identifier("packet_receive_data"); + public static final Identifier PACKET_SERVER_PING = identifier("packet_server_ping"); public static Identifier identifier(String path) { return new Identifier(KnowledgesCommon.ID + "_networking", path); } - public static void register() { + public static void registerServer() { ServerPlayNetworking.registerGlobalReceiver(PACKET_PEEK_BLOCK, (server, player, handler, buf, responseSender) -> { KnowledgesBlockRepresentable.onRequest(buf, player, server::execute, compound -> { PacketByteBuf data = PacketByteBufs.create(); @@ -32,5 +38,17 @@ public static void register() { responseSender.sendPacket(PACKET_RECEIVE_DATA, data); }); }); + ServerPlayConnectionEvents.JOIN.register((handler, sender, server) -> ServerPlayNetworking.send(handler.getPlayer(), PACKET_SERVER_PING, PacketByteBufs.create())); + } + + public static void registerClient() { + ClientPlayConnectionEvents.DISCONNECT.register((handler, client) -> KnowledgesClient.HUD.setConnectionStatus(false)); + ClientPlayNetworking.registerGlobalReceiver(KnowledgesNetworking.PACKET_RECEIVE_DATA, (client, handler, buf, responseSender) -> { + NbtCompound compound = buf.readNbt(); + client.execute(() -> KnowledgesClient.HUD.onReceiveData(compound)); + }); + ClientPlayNetworking.registerGlobalReceiver(KnowledgesNetworking.PACKET_SERVER_PING, (client, handler, buf, responseSender) -> + client.execute(() -> KnowledgesClient.HUD.setConnectionStatus(true)) + ); } }