[Fix] EndStoneSmelterMenu Whisperer Menu initialized in Client-Only Code. Crashing Servers when players open Whisperer Screen (#38)
This commit is contained in:
parent
d3507b212e
commit
930dcbd4ee
5 changed files with 37 additions and 15 deletions
|
@ -34,6 +34,7 @@ public class BetterEnd implements ModInitializer {
|
||||||
WorldConfig.registerModCache(MOD_ID);
|
WorldConfig.registerModCache(MOD_ID);
|
||||||
EndPortals.loadPortals();
|
EndPortals.loadPortals();
|
||||||
EndSounds.register();
|
EndSounds.register();
|
||||||
|
EndMenuTypes.ensureStaticallyLoaded();
|
||||||
EndBlockEntities.register();
|
EndBlockEntities.register();
|
||||||
EndPoiTypes.register();
|
EndPoiTypes.register();
|
||||||
EndFeatures.register();
|
EndFeatures.register();
|
||||||
|
|
|
@ -3,8 +3,6 @@ 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.EndStoneSmelterMenu;
|
|
||||||
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;
|
||||||
|
@ -17,20 +15,13 @@ 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<EndStoneSmelterMenu> HANDLER_TYPE = ScreenHandlerRegistry.registerSimple(
|
|
||||||
BetterEnd.makeID(EndStoneSmelter.ID),
|
|
||||||
EndStoneSmelterMenu::new
|
|
||||||
);
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInitializeClient() {
|
public void onInitializeClient() {
|
||||||
EndBlockEntityRenders.register();
|
EndBlockEntityRenders.register();
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
package org.betterx.betterend.client.gui;
|
package org.betterx.betterend.client.gui;
|
||||||
|
|
||||||
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;
|
||||||
|
import org.betterx.betterend.registry.EndMenuTypes;
|
||||||
|
|
||||||
import net.minecraft.world.Container;
|
import net.minecraft.world.Container;
|
||||||
import net.minecraft.world.SimpleContainer;
|
import net.minecraft.world.SimpleContainer;
|
||||||
|
@ -48,7 +48,7 @@ public class EndStoneSmelterMenu extends RecipeBookMenu<Container> {
|
||||||
Container inventory,
|
Container inventory,
|
||||||
ContainerData propertyDelegate
|
ContainerData propertyDelegate
|
||||||
) {
|
) {
|
||||||
super(BetterEndClient.HANDLER_TYPE, syncId);
|
super(EndMenuTypes.END_STONE_SMELTER, syncId);
|
||||||
this.inventory = inventory;
|
this.inventory = inventory;
|
||||||
this.propertyDelegate = propertyDelegate;
|
this.propertyDelegate = propertyDelegate;
|
||||||
this.world = playerInventory.player.level;
|
this.world = playerInventory.player.level;
|
||||||
|
@ -71,7 +71,7 @@ public class EndStoneSmelterMenu extends RecipeBookMenu<Container> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MenuType<?> getType() {
|
public MenuType<?> getType() {
|
||||||
return BetterEndClient.HANDLER_TYPE;
|
return EndMenuTypes.END_STONE_SMELTER;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
package org.betterx.betterend.registry;
|
||||||
|
|
||||||
|
import org.betterx.betterend.BetterEnd;
|
||||||
|
import org.betterx.betterend.blocks.EndStoneSmelter;
|
||||||
|
import org.betterx.betterend.client.gui.EndStoneSmelterMenu;
|
||||||
|
|
||||||
|
import net.minecraft.core.Registry;
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import net.minecraft.world.entity.player.Inventory;
|
||||||
|
import net.minecraft.world.inventory.AbstractContainerMenu;
|
||||||
|
import net.minecraft.world.inventory.MenuType;
|
||||||
|
|
||||||
|
import java.util.function.BiFunction;
|
||||||
|
|
||||||
|
public class EndMenuTypes {
|
||||||
|
public final static MenuType<EndStoneSmelterMenu> END_STONE_SMELTER = registerSimple(
|
||||||
|
BetterEnd.makeID(EndStoneSmelter.ID),
|
||||||
|
EndStoneSmelterMenu::new
|
||||||
|
);
|
||||||
|
|
||||||
|
static <T extends AbstractContainerMenu> MenuType<T> registerSimple(
|
||||||
|
ResourceLocation id,
|
||||||
|
BiFunction<Integer, Inventory, T> factory
|
||||||
|
) {
|
||||||
|
MenuType<T> type = new MenuType<>((syncId, inventory) -> factory.apply(syncId, inventory));
|
||||||
|
return Registry.register(Registry.MENU, id, type);
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static void ensureStaticallyLoaded() {
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,12 +1,11 @@
|
||||||
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 net.fabricmc.fabric.api.client.screenhandler.v1.ScreenRegistry;
|
import net.minecraft.client.gui.screens.MenuScreens;
|
||||||
|
|
||||||
public class EndScreens {
|
public class EndScreens {
|
||||||
public static void register() {
|
public static void register() {
|
||||||
ScreenRegistry.register(BetterEndClient.HANDLER_TYPE, EndStoneSmelterScreen::new);
|
MenuScreens.register(EndMenuTypes.END_STONE_SMELTER, EndStoneSmelterScreen::new);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue