From b1cf8cbf787d0e438ed03e487939eb5fbe595aef Mon Sep 17 00:00:00 2001 From: FalsePattern <30945458+FalsePattern@users.noreply.github.com> Date: Sun, 29 Oct 2023 21:33:09 +0100 Subject: [PATCH] config sync fix number 2 --- .../config/event/ClientEventHandlerPost.java | 25 +++++++++++++++++++ .../config/event/CommonEventHandlerPost.java | 13 ---------- 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/falsepattern/lib/internal/impl/config/event/ClientEventHandlerPost.java b/src/main/java/com/falsepattern/lib/internal/impl/config/event/ClientEventHandlerPost.java index 2eacd2e..54b76e3 100644 --- a/src/main/java/com/falsepattern/lib/internal/impl/config/event/ClientEventHandlerPost.java +++ b/src/main/java/com/falsepattern/lib/internal/impl/config/event/ClientEventHandlerPost.java @@ -27,17 +27,24 @@ import lombok.AccessLevel; import lombok.NoArgsConstructor; import lombok.SneakyThrows; +import net.minecraft.client.entity.EntityClientPlayerMP; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.entity.EntityJoinWorldEvent; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.network.FMLNetworkEvent; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import java.util.concurrent.atomic.AtomicBoolean; + @NoArgsConstructor(access = AccessLevel.PRIVATE) @SideOnly(Side.CLIENT) public final class ClientEventHandlerPost { private static final ClientEventHandlerPost INSTANCE = new ClientEventHandlerPost(); public static void registerBus() { + MinecraftForge.EVENT_BUS.register(INSTANCE); FMLCommonHandler.instance().bus().register(INSTANCE); } @@ -47,4 +54,22 @@ public final class ClientEventHandlerPost { public void onSyncRequestClient(ConfigSyncRequestEvent.Client e) { ConfigurationManagerImpl.sendSyncRequest(); } + + private AtomicBoolean shouldDoConfigSync = new AtomicBoolean(false); + + @SneakyThrows + @SubscribeEvent + public void onJoinWorld(FMLNetworkEvent.ClientConnectedToServerEvent e) { + if (e.isLocal) + return; + shouldDoConfigSync.set(true); + } + + @SneakyThrows + @SubscribeEvent + public void onJoinWorld(EntityJoinWorldEvent e) { + if (e.world.isRemote && e.entity instanceof EntityClientPlayerMP && shouldDoConfigSync.compareAndSet(true, false)) { + ConfigurationManagerImpl.sendSyncRequest(); + } + } } diff --git a/src/main/java/com/falsepattern/lib/internal/impl/config/event/CommonEventHandlerPost.java b/src/main/java/com/falsepattern/lib/internal/impl/config/event/CommonEventHandlerPost.java index 973bdf8..705e464 100644 --- a/src/main/java/com/falsepattern/lib/internal/impl/config/event/CommonEventHandlerPost.java +++ b/src/main/java/com/falsepattern/lib/internal/impl/config/event/CommonEventHandlerPost.java @@ -23,17 +23,13 @@ package com.falsepattern.lib.internal.impl.config.event; import com.falsepattern.lib.config.event.ConfigSyncRequestEvent; import com.falsepattern.lib.internal.FalsePatternLib; -import com.falsepattern.lib.internal.impl.config.ConfigurationManagerImpl; import com.falsepattern.lib.internal.impl.config.net.SyncPrompt; import lombok.AccessLevel; import lombok.NoArgsConstructor; -import lombok.SneakyThrows; import lombok.val; -import net.minecraft.client.entity.EntityClientPlayerMP; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.EntityJoinWorldEvent; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.eventhandler.SubscribeEvent; @@ -42,18 +38,9 @@ public class CommonEventHandlerPost { private static final CommonEventHandlerPost INSTANCE = new CommonEventHandlerPost(); public static void registerBus() { - MinecraftForge.EVENT_BUS.register(INSTANCE); FMLCommonHandler.instance().bus().register(INSTANCE); } - @SneakyThrows - @SubscribeEvent - public void onJoinWorld(EntityJoinWorldEvent e) { - if (e.world.isRemote && e.entity instanceof EntityClientPlayerMP) { - ConfigurationManagerImpl.sendSyncRequest(); - } - } - @SubscribeEvent public void onSyncRequestServer(ConfigSyncRequestEvent.Server e) { val players = e.getPlayers();