[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.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<EndStoneSmelterScreenHandler> HANDLER_TYPE = ScreenHandlerRegistry.registerSimple(
BetterEnd.makeID(EndStoneSmelter.ID),
EndStoneSmelterScreenHandler::new
);
@Override
public void onInitializeClient() {
EndBlockEntityRenders.register();

View file

@ -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<Container> {
public final static MenuType<EndStoneSmelterScreenHandler> 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> {
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<Container> {
@Override
public MenuType<?> getType() {
return HANDLER_TYPE;
return BetterEndClient.HANDLER_TYPE;
}
@Override

View file

@ -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);
}
}