From e0a9b8b90f3bdb512e29f91a4b9a15c5067b6d4a Mon Sep 17 00:00:00 2001 From: Caedis Date: Sun, 22 Dec 2024 01:46:08 -0600 Subject: [PATCH] Fix configs not saving on closing config gui --- .../java/com/cleanroommc/bogosorter/BogoSorter.java | 7 +++++++ .../cleanroommc/bogosorter/ClientEventHandler.java | 3 ++- .../bogosorter/common/config/ConfigGui.java | 8 ++++++++ .../common/dropoff/DropOffButtonHandler.java | 11 ++++------- .../bogosorter/common/dropoff/InvButton.java | 1 - 5 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/cleanroommc/bogosorter/BogoSorter.java b/src/main/java/com/cleanroommc/bogosorter/BogoSorter.java index c2634e3d..9106a295 100644 --- a/src/main/java/com/cleanroommc/bogosorter/BogoSorter.java +++ b/src/main/java/com/cleanroommc/bogosorter/BogoSorter.java @@ -22,7 +22,9 @@ import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.event.FMLServerStartingEvent; import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.gameevent.PlayerEvent; import cpw.mods.fml.common.gameevent.TickEvent; +import cpw.mods.fml.common.network.FMLNetworkEvent; import net.minecraft.entity.player.EntityPlayer; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.EntityJoinWorldEvent; @@ -94,6 +96,11 @@ public void onPlayerJoin(EntityJoinWorldEvent event) { PlayerConfig.syncToServer(); } } + @SubscribeEvent + public void onPlayerLogout(FMLNetworkEvent.ClientDisconnectionFromServerEvent ignored){ + // save config file on logout + Serializer.saveConfig(); + } @SubscribeEvent public void onServerTick(TickEvent.WorldTickEvent event) { diff --git a/src/main/java/com/cleanroommc/bogosorter/ClientEventHandler.java b/src/main/java/com/cleanroommc/bogosorter/ClientEventHandler.java index c519b3b4..a14e19e7 100644 --- a/src/main/java/com/cleanroommc/bogosorter/ClientEventHandler.java +++ b/src/main/java/com/cleanroommc/bogosorter/ClientEventHandler.java @@ -173,7 +173,8 @@ public void onKeyInput(InputEvent.MouseInputEvent event) { @SubscribeEvent(priority = EventPriority.LOW) public void onGuiKeyInput(KeyboardInputEvent.Pre event) { KeyBind.checkKeys(getTicks()); - if (!(event.gui instanceof GuiContainer)) return; + if (!(event.gui instanceof GuiContainer)) + return; if (handleInput((GuiContainer) event.gui)) { event.setCanceled(true); return; diff --git a/src/main/java/com/cleanroommc/bogosorter/common/config/ConfigGui.java b/src/main/java/com/cleanroommc/bogosorter/common/config/ConfigGui.java index 666ea37f..4fe2aa6b 100644 --- a/src/main/java/com/cleanroommc/bogosorter/common/config/ConfigGui.java +++ b/src/main/java/com/cleanroommc/bogosorter/common/config/ConfigGui.java @@ -80,6 +80,14 @@ public ConfigGui(GuiScreen old) { public boolean shouldAnimate() { return super.shouldAnimate() && ConfigGui.this.old == null; } + + @Override + public void onClose() { + super.onClose(); + Serializer.saveConfig(); + PlayerConfig.syncToServer(); + MinecraftForge.EVENT_BUS.post(new SortConfigChangeEvent()); + } }.size(300, 250).align(Alignment.Center); PagedWidget.Controller controller = new PagedWidget.Controller(); diff --git a/src/main/java/com/cleanroommc/bogosorter/common/dropoff/DropOffButtonHandler.java b/src/main/java/com/cleanroommc/bogosorter/common/dropoff/DropOffButtonHandler.java index 4c27ebca..c45b5ea8 100644 --- a/src/main/java/com/cleanroommc/bogosorter/common/dropoff/DropOffButtonHandler.java +++ b/src/main/java/com/cleanroommc/bogosorter/common/dropoff/DropOffButtonHandler.java @@ -1,22 +1,19 @@ package com.cleanroommc.bogosorter.common.dropoff; import com.cleanroommc.bogosorter.BogoSorter; -import com.cleanroommc.bogosorter.ClientEventHandler; -import com.cleanroommc.bogosorter.common.sort.ButtonHandler; import com.cleanroommc.bogosorter.common.sort.IGuiContainerAccessor; -import com.cleanroommc.modularui.screen.GuiScreenWrapper; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.inventory.GuiContainerCreative; -import net.minecraft.client.renderer.InventoryEffectRenderer; +import net.minecraft.client.gui.inventory.GuiInventory; import net.minecraftforge.client.event.GuiScreenEvent; public class DropOffButtonHandler { - public static int buttonX = 80; + public static int buttonX = 120; public static int buttonY = 12; @SubscribeEvent @@ -27,7 +24,7 @@ public void onGuiInit(GuiScreenEvent.InitGuiEvent.Post event) { return; } try { - if (screen instanceof InventoryEffectRenderer inv) { + if (screen instanceof GuiInventory inv) { event.buttonList.add(new InvButton(inv)); } } catch (NullPointerException e) { @@ -41,7 +38,7 @@ public void onGuiInit(GuiScreenEvent.InitGuiEvent.Post event) { public void onDrawScreen(GuiScreenEvent.DrawScreenEvent.Post event) { GuiScreen screen = event.gui; - if (screen instanceof InventoryEffectRenderer) { + if (screen instanceof GuiInventory) { for (GuiButton guiButton : ((IGuiContainerAccessor) event.gui).getButtons()) { if (guiButton instanceof InvButton invButton) { invButton.drawTooltip(event.mouseX, event.mouseY); diff --git a/src/main/java/com/cleanroommc/bogosorter/common/dropoff/InvButton.java b/src/main/java/com/cleanroommc/bogosorter/common/dropoff/InvButton.java index 15ce0545..8938ef11 100644 --- a/src/main/java/com/cleanroommc/bogosorter/common/dropoff/InvButton.java +++ b/src/main/java/com/cleanroommc/bogosorter/common/dropoff/InvButton.java @@ -10,7 +10,6 @@ import net.minecraft.client.resources.I18n; import java.util.Arrays; -import java.util.Collections; import java.util.Objects; public class InvButton extends GuiButton {