[Fix] Lazy loading of ScreenHandler after registry was already frozen (#35)

This commit is contained in:
Frank 2022-07-10 18:07:30 +02:00
parent 9d2ed61413
commit 3694bf1eee
3 changed files with 15 additions and 12 deletions

View file

@ -3,6 +3,8 @@ package org.betterx.betterend.client;
import org.betterx.bclib.BCLib; import org.betterx.bclib.BCLib;
import org.betterx.bclib.util.TranslationHelper; import org.betterx.bclib.util.TranslationHelper;
import org.betterx.betterend.BetterEnd; 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.client.render.BetterEndSkyRenderer;
import org.betterx.betterend.events.ItemTooltipCallback; import org.betterx.betterend.events.ItemTooltipCallback;
import org.betterx.betterend.interfaces.MultiModelItem; 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.MutableComponent;
import net.minecraft.network.chat.Style; import net.minecraft.network.chat.Style;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.inventory.MenuType;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.fabricmc.api.ClientModInitializer; import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.model.ModelLoadingRegistry; import net.fabricmc.fabric.api.client.model.ModelLoadingRegistry;
import net.fabricmc.fabric.api.client.rendering.v1.DimensionRenderingRegistry; import net.fabricmc.fabric.api.client.rendering.v1.DimensionRenderingRegistry;
import net.fabricmc.fabric.api.screenhandler.v1.ScreenHandlerRegistry;
public class BetterEndClient implements ClientModInitializer { public class BetterEndClient implements ClientModInitializer {
public final static MenuType<EndStoneSmelterScreenHandler> HANDLER_TYPE = ScreenHandlerRegistry.registerSimple(
BetterEnd.makeID(EndStoneSmelter.ID),
EndStoneSmelterScreenHandler::new
);
@Override @Override
public void onInitializeClient() { public void onInitializeClient() {
EndBlockEntityRenders.register(); EndBlockEntityRenders.register();

View file

@ -1,8 +1,7 @@
package org.betterx.betterend.client.gui; 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.blocks.entities.EndStoneSmelterBlockEntity;
import org.betterx.betterend.client.BetterEndClient;
import org.betterx.betterend.client.gui.slot.SmelterFuelSlot; import org.betterx.betterend.client.gui.slot.SmelterFuelSlot;
import org.betterx.betterend.client.gui.slot.SmelterOutputSlot; import org.betterx.betterend.client.gui.slot.SmelterOutputSlot;
import org.betterx.betterend.recipe.builders.AlloyingRecipe; 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.EnvType;
import net.fabricmc.api.Environment; import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.screenhandler.v1.ScreenHandlerRegistry;
import org.anti_ad.mc.ipn.api.IPNIgnore; import org.anti_ad.mc.ipn.api.IPNIgnore;
@Environment(EnvType.CLIENT)
@IPNIgnore @IPNIgnore
public class EndStoneSmelterScreenHandler extends RecipeBookMenu<Container> { public class EndStoneSmelterScreenHandler extends RecipeBookMenu<Container> {
public final static MenuType<EndStoneSmelterScreenHandler> HANDLER_TYPE = ScreenHandlerRegistry.registerSimple(
BetterEnd.makeID(EndStoneSmelter.ID),
EndStoneSmelterScreenHandler::new
);
private final Container inventory; private final Container inventory;
private final ContainerData propertyDelegate; private final ContainerData propertyDelegate;
protected final Level world; protected final Level world;
@ -45,7 +39,7 @@ public class EndStoneSmelterScreenHandler extends RecipeBookMenu<Container> {
Container inventory, Container inventory,
ContainerData propertyDelegate ContainerData propertyDelegate
) { ) {
super(HANDLER_TYPE, syncId); super(BetterEndClient.HANDLER_TYPE, syncId);
this.inventory = inventory; this.inventory = inventory;
this.propertyDelegate = propertyDelegate; this.propertyDelegate = propertyDelegate;
this.world = playerInventory.player.level; this.world = playerInventory.player.level;
@ -68,7 +62,7 @@ public class EndStoneSmelterScreenHandler extends RecipeBookMenu<Container> {
@Override @Override
public MenuType<?> getType() { public MenuType<?> getType() {
return HANDLER_TYPE; return BetterEndClient.HANDLER_TYPE;
} }
@Override @Override

View file

@ -1,12 +1,12 @@
package org.betterx.betterend.registry; package org.betterx.betterend.registry;
import org.betterx.betterend.client.BetterEndClient;
import org.betterx.betterend.client.gui.EndStoneSmelterScreen; import org.betterx.betterend.client.gui.EndStoneSmelterScreen;
import org.betterx.betterend.client.gui.EndStoneSmelterScreenHandler;
import net.fabricmc.fabric.api.client.screenhandler.v1.ScreenRegistry; import net.fabricmc.fabric.api.client.screenhandler.v1.ScreenRegistry;
public class EndScreens { public class EndScreens {
public static void register() { public static void register() {
ScreenRegistry.register(EndStoneSmelterScreenHandler.HANDLER_TYPE, EndStoneSmelterScreen::new); ScreenRegistry.register(BetterEndClient.HANDLER_TYPE, EndStoneSmelterScreen::new);
} }
} }