From 9c9955531d5d89ddf1df32214559a4977f3c4e98 Mon Sep 17 00:00:00 2001 From: jiink Date: Thu, 18 Apr 2024 14:01:26 -0700 Subject: [PATCH] Make not crash on server --- .../SmeltingInAPinchClient.java | 8 ++++++++ .../smeltinginapinch/WoodenFurnaceScreen.java | 6 ++++-- .../smeltinginapinch/SmeltingInAPinch.java | 18 +++++++++--------- .../WoodenFurnaceBlockEntity.java | 15 ++------------- .../WoodenFurnaceScreenHandler.java | 3 --- 5 files changed, 23 insertions(+), 27 deletions(-) rename src/{main => client}/java/jiink/smeltinginapinch/WoodenFurnaceScreen.java (92%) diff --git a/src/client/java/jiink/smeltinginapinch/SmeltingInAPinchClient.java b/src/client/java/jiink/smeltinginapinch/SmeltingInAPinchClient.java index 7eeb2d8..58ea806 100644 --- a/src/client/java/jiink/smeltinginapinch/SmeltingInAPinchClient.java +++ b/src/client/java/jiink/smeltinginapinch/SmeltingInAPinchClient.java @@ -1,10 +1,18 @@ package jiink.smeltinginapinch; import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.gui.screen.ingame.HandledScreens; +@Environment(EnvType.CLIENT) public class SmeltingInAPinchClient implements ClientModInitializer { + @Override public void onInitializeClient() { // This entrypoint is suitable for setting up client-specific logic, such as rendering. + + // Make sure screen handler and screen are linked together + HandledScreens.register(SmeltingInAPinch.WOODEN_FURNACE_SCREEN_HANDLER, WoodenFurnaceScreen::new); } } \ No newline at end of file diff --git a/src/main/java/jiink/smeltinginapinch/WoodenFurnaceScreen.java b/src/client/java/jiink/smeltinginapinch/WoodenFurnaceScreen.java similarity index 92% rename from src/main/java/jiink/smeltinginapinch/WoodenFurnaceScreen.java rename to src/client/java/jiink/smeltinginapinch/WoodenFurnaceScreen.java index cf19c67..8e74b41 100644 --- a/src/main/java/jiink/smeltinginapinch/WoodenFurnaceScreen.java +++ b/src/client/java/jiink/smeltinginapinch/WoodenFurnaceScreen.java @@ -20,8 +20,10 @@ public WoodenFurnaceScreen(WoodenFurnaceScreenHandler handler, PlayerInventory i @Override protected void init() { super.init(); - titleY = 1000; - playerInventoryTitleY = 1000; +// titleY = 1000; +// playerInventoryTitleY = 1000; + // Center the title + titleX = (backgroundWidth - textRenderer.getWidth(title)) / 2; } @Override diff --git a/src/main/java/jiink/smeltinginapinch/SmeltingInAPinch.java b/src/main/java/jiink/smeltinginapinch/SmeltingInAPinch.java index ef7b944..2b2dbe0 100644 --- a/src/main/java/jiink/smeltinginapinch/SmeltingInAPinch.java +++ b/src/main/java/jiink/smeltinginapinch/SmeltingInAPinch.java @@ -7,7 +7,6 @@ import net.fabricmc.fabric.api.screenhandler.v1.ExtendedScreenHandlerType; import net.minecraft.block.Block; import net.minecraft.block.entity.BlockEntityType; -import net.minecraft.client.gui.screen.ingame.HandledScreens; import net.minecraft.item.BlockItem; import net.minecraft.item.Item; import net.minecraft.item.ItemGroups; @@ -59,12 +58,16 @@ public class SmeltingInAPinch implements ModInitializer { new Identifier(MOD_ID, "wooden_furnace_block_entity"), FabricBlockEntityTypeBuilder.create(WoodenFurnaceBlockEntity::new, WOODEN_FURNACE_BLOCK).build() ); + public static final ScreenHandlerType WOODEN_FURNACE_SCREEN_HANDLER; + + static { + WOODEN_FURNACE_SCREEN_HANDLER = Registry.register( + Registries.SCREEN_HANDLER, + new Identifier(MOD_ID, "wooden_furnace_screen_handler"), + new ExtendedScreenHandlerType<>(WoodenFurnaceScreenHandler::new) + ); + } - public static final ScreenHandlerType WOODEN_FURNACE_SCREEN_HANDLER = Registry.register( - Registries.SCREEN_HANDLER, - new Identifier(MOD_ID, "wooden_furnace_screen_handler"), - new ExtendedScreenHandlerType<>(WoodenFurnaceScreenHandler::new) - ); @Override public void onInitialize() { // This code runs as soon as Minecraft is in a mod-load-ready state. @@ -76,8 +79,5 @@ public void onInitialize() { content.addAfter(Items.BLAST_FURNACE, WOODEN_FURANCE_BLOCK_ITEM); content.addAfter(Items.TORCH, DEMO_BLOCK_ITEM); }); - - // Make sure screen handler and screen are linked together - HandledScreens.register(SmeltingInAPinch.WOODEN_FURNACE_SCREEN_HANDLER, WoodenFurnaceScreen::new); } } \ No newline at end of file diff --git a/src/main/java/jiink/smeltinginapinch/WoodenFurnaceBlockEntity.java b/src/main/java/jiink/smeltinginapinch/WoodenFurnaceBlockEntity.java index 6267eb3..6aecea5 100644 --- a/src/main/java/jiink/smeltinginapinch/WoodenFurnaceBlockEntity.java +++ b/src/main/java/jiink/smeltinginapinch/WoodenFurnaceBlockEntity.java @@ -1,39 +1,29 @@ package jiink.smeltinginapinch; -import java.util.Optional; - import net.fabricmc.fabric.api.screenhandler.v1.ExtendedScreenHandlerFactory; import net.minecraft.block.BlockState; -import net.minecraft.block.HorizontalFacingBlock; -import net.minecraft.block.RedstoneTorchBlock; -import net.minecraft.block.entity.AbstractFurnaceBlockEntity; import net.minecraft.block.entity.BlockEntity; -import net.minecraft.block.entity.BlockEntityType; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.Inventories; import net.minecraft.inventory.SimpleInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; import net.minecraft.nbt.NbtCompound; import net.minecraft.network.PacketByteBuf; -import net.minecraft.recipe.Recipe; import net.minecraft.recipe.RecipeEntry; import net.minecraft.recipe.RecipeType; import net.minecraft.recipe.SmeltingRecipe; -import net.minecraft.screen.FurnaceScreenHandler; import net.minecraft.screen.PropertyDelegate; import net.minecraft.screen.ScreenHandler; import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.state.property.BooleanProperty; -import net.minecraft.state.property.DirectionProperty; import net.minecraft.state.property.Properties; import net.minecraft.text.Text; import net.minecraft.util.collection.DefaultedList; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -import net.minecraft.world.World.ExplosionSourceType; + +import java.util.Optional; public class WoodenFurnaceBlockEntity extends BlockEntity implements ExtendedScreenHandlerFactory, ImplementedInventory { @@ -203,5 +193,4 @@ private boolean canInsertAmountIntoOutputSlot(ItemStack result) { private boolean isOutputSlotEmptyOrReceivable() { return this.getStack(OUTPUT_SLOT).isEmpty() || this.getStack(OUTPUT_SLOT).getCount() < this.getStack(OUTPUT_SLOT).getMaxCount(); } - } diff --git a/src/main/java/jiink/smeltinginapinch/WoodenFurnaceScreenHandler.java b/src/main/java/jiink/smeltinginapinch/WoodenFurnaceScreenHandler.java index a7063a0..332ab22 100644 --- a/src/main/java/jiink/smeltinginapinch/WoodenFurnaceScreenHandler.java +++ b/src/main/java/jiink/smeltinginapinch/WoodenFurnaceScreenHandler.java @@ -1,20 +1,17 @@ package jiink.smeltinginapinch; import net.minecraft.block.entity.BlockEntity; -import net.minecraft.client.gui.screen.Screen; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.Inventory; import net.minecraft.inventory.SimpleInventory; import net.minecraft.item.ItemStack; import net.minecraft.network.PacketByteBuf; -import net.minecraft.recipe.AbstractCookingRecipe; import net.minecraft.recipe.RecipeType; import net.minecraft.recipe.SmeltingRecipe; import net.minecraft.screen.ArrayPropertyDelegate; import net.minecraft.screen.PropertyDelegate; import net.minecraft.screen.ScreenHandler; -import net.minecraft.screen.ScreenHandlerType; import net.minecraft.screen.slot.Slot; import net.minecraft.world.World;