From 3694bf1eeefa503acd3e13aeb358445f078513b2 Mon Sep 17 00:00:00 2001 From: Frank Date: Sun, 10 Jul 2022 18:07:30 +0200 Subject: [PATCH] [Fix] Lazy loading of ScreenHandler after registry was already frozen (#35) --- .../betterx/betterend/client/BetterEndClient.java | 9 +++++++++ .../client/gui/EndStoneSmelterScreenHandler.java | 14 ++++---------- .../org/betterx/betterend/registry/EndScreens.java | 4 ++-- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/main/java/org/betterx/betterend/client/BetterEndClient.java b/src/main/java/org/betterx/betterend/client/BetterEndClient.java index ee948a2c..35680753 100644 --- a/src/main/java/org/betterx/betterend/client/BetterEndClient.java +++ b/src/main/java/org/betterx/betterend/client/BetterEndClient.java @@ -3,6 +3,8 @@ package org.betterx.betterend.client; import org.betterx.bclib.BCLib; import org.betterx.bclib.util.TranslationHelper; import org.betterx.betterend.BetterEnd; +import org.betterx.betterend.blocks.EndStoneSmelter; +import org.betterx.betterend.client.gui.EndStoneSmelterScreenHandler; import org.betterx.betterend.client.render.BetterEndSkyRenderer; import org.betterx.betterend.events.ItemTooltipCallback; import org.betterx.betterend.interfaces.MultiModelItem; @@ -15,13 +17,20 @@ import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.Style; import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.inventory.MenuType; import net.minecraft.world.level.Level; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.model.ModelLoadingRegistry; import net.fabricmc.fabric.api.client.rendering.v1.DimensionRenderingRegistry; +import net.fabricmc.fabric.api.screenhandler.v1.ScreenHandlerRegistry; public class BetterEndClient implements ClientModInitializer { + public final static MenuType HANDLER_TYPE = ScreenHandlerRegistry.registerSimple( + BetterEnd.makeID(EndStoneSmelter.ID), + EndStoneSmelterScreenHandler::new + ); + @Override public void onInitializeClient() { EndBlockEntityRenders.register(); diff --git a/src/main/java/org/betterx/betterend/client/gui/EndStoneSmelterScreenHandler.java b/src/main/java/org/betterx/betterend/client/gui/EndStoneSmelterScreenHandler.java index 57c68f66..c68f22b4 100644 --- a/src/main/java/org/betterx/betterend/client/gui/EndStoneSmelterScreenHandler.java +++ b/src/main/java/org/betterx/betterend/client/gui/EndStoneSmelterScreenHandler.java @@ -1,8 +1,7 @@ package org.betterx.betterend.client.gui; -import org.betterx.betterend.BetterEnd; -import org.betterx.betterend.blocks.EndStoneSmelter; import org.betterx.betterend.blocks.entities.EndStoneSmelterBlockEntity; +import org.betterx.betterend.client.BetterEndClient; import org.betterx.betterend.client.gui.slot.SmelterFuelSlot; import org.betterx.betterend.client.gui.slot.SmelterOutputSlot; import org.betterx.betterend.recipe.builders.AlloyingRecipe; @@ -19,18 +18,13 @@ import net.minecraft.world.level.Level; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.screenhandler.v1.ScreenHandlerRegistry; import org.anti_ad.mc.ipn.api.IPNIgnore; +@Environment(EnvType.CLIENT) @IPNIgnore public class EndStoneSmelterScreenHandler extends RecipeBookMenu { - public final static MenuType HANDLER_TYPE = ScreenHandlerRegistry.registerSimple( - BetterEnd.makeID(EndStoneSmelter.ID), - EndStoneSmelterScreenHandler::new - ); - private final Container inventory; private final ContainerData propertyDelegate; protected final Level world; @@ -45,7 +39,7 @@ public class EndStoneSmelterScreenHandler extends RecipeBookMenu { Container inventory, ContainerData propertyDelegate ) { - super(HANDLER_TYPE, syncId); + super(BetterEndClient.HANDLER_TYPE, syncId); this.inventory = inventory; this.propertyDelegate = propertyDelegate; this.world = playerInventory.player.level; @@ -68,7 +62,7 @@ public class EndStoneSmelterScreenHandler extends RecipeBookMenu { @Override public MenuType getType() { - return HANDLER_TYPE; + return BetterEndClient.HANDLER_TYPE; } @Override diff --git a/src/main/java/org/betterx/betterend/registry/EndScreens.java b/src/main/java/org/betterx/betterend/registry/EndScreens.java index 3b791f9b..e1720392 100644 --- a/src/main/java/org/betterx/betterend/registry/EndScreens.java +++ b/src/main/java/org/betterx/betterend/registry/EndScreens.java @@ -1,12 +1,12 @@ package org.betterx.betterend.registry; +import org.betterx.betterend.client.BetterEndClient; import org.betterx.betterend.client.gui.EndStoneSmelterScreen; -import org.betterx.betterend.client.gui.EndStoneSmelterScreenHandler; import net.fabricmc.fabric.api.client.screenhandler.v1.ScreenRegistry; public class EndScreens { public static void register() { - ScreenRegistry.register(EndStoneSmelterScreenHandler.HANDLER_TYPE, EndStoneSmelterScreen::new); + ScreenRegistry.register(BetterEndClient.HANDLER_TYPE, EndStoneSmelterScreen::new); } }