From 533a95f2862eea70976e705109253eb2c02809f8 Mon Sep 17 00:00:00 2001 From: Uko Kokņevičs Date: Mon, 15 Jan 2024 17:53:04 +0200 Subject: Actually sync from server to client --- src/main/java/lv/enes/mc/eris_alchemy/Emc.java | 30 +++++++++++++++++----- .../lv/enes/mc/eris_alchemy/utils/BufUtils.java | 2 +- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/main/java/lv/enes/mc/eris_alchemy/Emc.java b/src/main/java/lv/enes/mc/eris_alchemy/Emc.java index d058b94..731ecee 100644 --- a/src/main/java/lv/enes/mc/eris_alchemy/Emc.java +++ b/src/main/java/lv/enes/mc/eris_alchemy/Emc.java @@ -22,6 +22,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import org.quiltmc.loader.api.minecraft.ClientOnly; import org.quiltmc.qsl.networking.api.PacketByteBufs; +import org.quiltmc.qsl.networking.api.ServerPlayConnectionEvents; import org.quiltmc.qsl.networking.api.ServerPlayNetworking; import org.quiltmc.qsl.networking.api.client.ClientPlayNetworking; @@ -86,10 +87,8 @@ public final class Emc { public static void initClient(Minecraft ignoredClient) { ClientPlayNetworking.registerGlobalReceiver( NetworkingConstants.UPDATE_EMCS, - (client1, handler, buf, responseSender) -> { - var map = buf.readMap(FriendlyByteBuf::readResourceLocation, BufUtils::readOptionalDouble); - VALUES.clear(); - VALUES.putAll(map); + (client, handler, buf, responseSender) -> { + syncFrom(buf); } ); } @@ -98,6 +97,10 @@ public final class Emc { overworld = server.overworld(); reinit(); warnOfMissingValues(); + + ServerPlayConnectionEvents.JOIN.register((handler, sender, server1) -> { + syncTo(handler.getPlayer()); + }); } public static void reloadData( @@ -264,9 +267,24 @@ public final class Emc { syncTo(PlayerUtils.all()); } - private static void syncTo(Collection player) { - var buf = PacketByteBufs.create(); + private static void syncFrom(FriendlyByteBuf buf) { + var map = buf.readMap(FriendlyByteBuf::readResourceLocation, BufUtils::readOptionalDouble); + VALUES.clear(); + VALUES.putAll(map); + } + + private static FriendlyByteBuf syncTo(FriendlyByteBuf buf) { buf.writeMap(VALUES, FriendlyByteBuf::writeResourceLocation, BufUtils::writeOptionalDouble); + return buf; + } + + private static void syncTo(Collection players) { + var buf = syncTo(PacketByteBufs.create()); + ServerPlayNetworking.send(players, NetworkingConstants.UPDATE_EMCS, buf); + } + + private static void syncTo(ServerPlayer player) { + var buf = syncTo(PacketByteBufs.create()); ServerPlayNetworking.send(player, NetworkingConstants.UPDATE_EMCS, buf); } diff --git a/src/main/java/lv/enes/mc/eris_alchemy/utils/BufUtils.java b/src/main/java/lv/enes/mc/eris_alchemy/utils/BufUtils.java index 9d8fe82..8055505 100644 --- a/src/main/java/lv/enes/mc/eris_alchemy/utils/BufUtils.java +++ b/src/main/java/lv/enes/mc/eris_alchemy/utils/BufUtils.java @@ -9,7 +9,7 @@ public final class BufUtils { private BufUtils() {} public static OptionalDouble readOptionalDouble(FriendlyByteBuf buf) { - return buf.readOptional(ByteBuf::readDouble).stream().mapToDouble(x -> x).findFirst(); + return buf.readOptional(ByteBuf::readDoubleLE).stream().mapToDouble(x -> x).findFirst(); } @SuppressWarnings("OptionalUsedAsFieldOrParameterType") -- cgit v1.2.3