From 986c8b67d732de17da03a96dd6624bb657021401 Mon Sep 17 00:00:00 2001 From: Sollace Date: Mon, 12 Sep 2022 12:50:10 +0200 Subject: [PATCH] Update page contents from the server for debugging purposes --- .../com/minelittlepony/unicopia/Unicopia.java | 3 +++ .../container/SpellbookChapterLoader.java | 23 +++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/minelittlepony/unicopia/Unicopia.java b/src/main/java/com/minelittlepony/unicopia/Unicopia.java index b0ba9cb8..c82874eb 100644 --- a/src/main/java/com/minelittlepony/unicopia/Unicopia.java +++ b/src/main/java/com/minelittlepony/unicopia/Unicopia.java @@ -58,6 +58,9 @@ public class Unicopia implements ModInitializer { ServerTickEvents.END_WORLD_TICK.register(w -> { ((BlockDestructionManager.Source)w).getDestructionManager().tick(); + if (SpellbookChapterLoader.DEBUG) { + SpellbookChapterLoader.INSTANCE.sendUpdate(w.getServer()); + } }); ResourceManagerHelper.get(ResourceType.SERVER_DATA).registerReloadListener(TreeTypeLoader.INSTANCE); ResourceManagerHelper.get(ResourceType.SERVER_DATA).registerReloadListener(UEnchantments.POISONED_JOKE); diff --git a/src/main/java/com/minelittlepony/unicopia/container/SpellbookChapterLoader.java b/src/main/java/com/minelittlepony/unicopia/container/SpellbookChapterLoader.java index 60ebba59..b6181928 100644 --- a/src/main/java/com/minelittlepony/unicopia/container/SpellbookChapterLoader.java +++ b/src/main/java/com/minelittlepony/unicopia/container/SpellbookChapterLoader.java @@ -12,14 +12,16 @@ import com.minelittlepony.common.client.gui.dimension.Bounds; import com.minelittlepony.unicopia.Unicopia; import com.minelittlepony.unicopia.ability.magic.spell.crafting.IngredientWithSpell; import com.minelittlepony.unicopia.client.gui.spellbook.SpellbookChapterList.*; +import com.minelittlepony.unicopia.network.Channel; +import com.minelittlepony.unicopia.network.MsgServerResources; import com.minelittlepony.unicopia.util.Resources; import com.mojang.logging.LogUtils; import net.fabricmc.fabric.api.resource.IdentifiableResourceReloadListener; -import net.minecraft.client.MinecraftClient; import net.minecraft.network.PacketByteBuf; import net.minecraft.resource.JsonDataLoader; import net.minecraft.resource.ResourceManager; +import net.minecraft.server.MinecraftServer; import net.minecraft.text.Text; import net.minecraft.util.*; import net.minecraft.util.profiler.Profiler; @@ -32,6 +34,7 @@ public class SpellbookChapterLoader extends JsonDataLoader implements Identifiab public static final SpellbookChapterLoader INSTANCE = new SpellbookChapterLoader(); + private boolean dirty; private Map chapters = new HashMap<>(); public SpellbookChapterLoader() { @@ -47,6 +50,18 @@ public class SpellbookChapterLoader extends JsonDataLoader implements Identifiab return chapters; } + public void sendUpdate(MinecraftServer server) { + if (dirty) { + dirty = false; + MsgServerResources msg = new MsgServerResources(); + server.getWorlds().forEach(world -> { + world.getPlayers().forEach(player -> { + Channel.SERVER_RESOURCES_SEND.send(player, msg); + }); + }); + } + } + @Override protected void apply(Map data, ResourceManager manager, Profiler profiler) { try { @@ -60,7 +75,11 @@ public class SpellbookChapterLoader extends JsonDataLoader implements Identifiab if (DEBUG) { CompletableFuture.runAsync(() -> { - reload(CompletableFuture::completedFuture, manager, profiler, profiler, Util.getMainWorkerExecutor(), MinecraftClient.getInstance()); + try { + Util.waitAndApply(executor -> reload(CompletableFuture::completedFuture, manager, profiler, profiler, Util.getMainWorkerExecutor(), executor)).get(); + } catch (InterruptedException | ExecutionException e) { + } + dirty = true; }, EXECUTOR); } }