From be29556850d4ce6ed63133d6149c7568e5183c97 Mon Sep 17 00:00:00 2001 From: yourfriendoss Date: Sun, 5 Oct 2025 15:33:55 +0300 Subject: [PATCH] fix loads of bugs --- gradle.properties | 2 +- .../sad/growglobe/client/GrowglobeClient.java | 1 - .../java/ovh/sad/growglobe/GrowGlobeBlock.java | 9 ++------- .../sad/growglobe/GrowGlobeBlockEntity.java | 9 +++------ .../sad/growglobe/GrowGlobeScreenHandler.java | 8 +++++++- .../sad/growglobe/GrowGlobeScreenHandlers.java | 10 +++------- src/main/java/ovh/sad/growglobe/Growglobe.java | 2 +- .../java/ovh/sad/growglobe/HarvestUtil.java | 18 +----------------- 8 files changed, 18 insertions(+), 41 deletions(-) diff --git a/gradle.properties b/gradle.properties index f81c35e..7580317 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ minecraft_version=1.21.8 yarn_mappings=1.21.8+build.1 loader_version=0.17.2 # Mod Properties -mod_version=0.2 +mod_version=0.3 maven_group=ovh.sad archives_base_name=growglobe # Dependencies diff --git a/src/client/java/ovh/sad/growglobe/client/GrowglobeClient.java b/src/client/java/ovh/sad/growglobe/client/GrowglobeClient.java index 4e81f59..c8dad13 100644 --- a/src/client/java/ovh/sad/growglobe/client/GrowglobeClient.java +++ b/src/client/java/ovh/sad/growglobe/client/GrowglobeClient.java @@ -12,7 +12,6 @@ public class GrowglobeClient implements ClientModInitializer { @Override public void onInitializeClient() { BlockRenderLayerMap.putBlock(GrowGlobeBlocks.GROW_GLOBE_BLOCK, BlockRenderLayer.CUTOUT); - GrowGlobeScreenHandlers.register(); HandledScreens.register(GrowGlobeScreenHandlers.GROW_GLOBE, GrowGlobeScreen::new); BlockEntityRendererFactories.register(GrowGlobeBlockEntities.GROW_GLOBE, GrowGlobeBlockEntityRenderer::new); } diff --git a/src/main/java/ovh/sad/growglobe/GrowGlobeBlock.java b/src/main/java/ovh/sad/growglobe/GrowGlobeBlock.java index b8d2210..3abfeb0 100644 --- a/src/main/java/ovh/sad/growglobe/GrowGlobeBlock.java +++ b/src/main/java/ovh/sad/growglobe/GrowGlobeBlock.java @@ -34,19 +34,14 @@ public class GrowGlobeBlock extends BlockWithEntity { protected ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, BlockHitResult hit) { if (!world.isClient) { BlockEntity blockEntity = world.getBlockEntity(pos); - System.out.println("one"); - if (blockEntity instanceof GrowGlobeBlockEntity screenHandlerFactory) { - System.out.println("two"); - if (player instanceof ServerPlayerEntity serverPlayer) { - System.out.println("three"); - serverPlayer.openHandledScreen(screenHandlerFactory); - } + player.openHandledScreen(screenHandlerFactory); } } return ActionResult.SUCCESS; } + @Override protected MapCodec getCodec() { return CODEC; diff --git a/src/main/java/ovh/sad/growglobe/GrowGlobeBlockEntity.java b/src/main/java/ovh/sad/growglobe/GrowGlobeBlockEntity.java index b944e18..c080e4f 100644 --- a/src/main/java/ovh/sad/growglobe/GrowGlobeBlockEntity.java +++ b/src/main/java/ovh/sad/growglobe/GrowGlobeBlockEntity.java @@ -11,7 +11,6 @@ import net.minecraft.inventory.SidedInventory; import net.minecraft.inventory.SimpleInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NbtCompound; import net.minecraft.screen.ArrayPropertyDelegate; import net.minecraft.screen.PropertyDelegate; import net.minecraft.screen.ScreenHandler; @@ -33,7 +32,7 @@ import java.util.List; import static ovh.sad.growglobe.HarvestUtil.harvestBlock; -public class GrowGlobeBlockEntity extends BlockEntity implements ExtendedScreenHandlerFactory, SidedInventory { +public class GrowGlobeBlockEntity extends BlockEntity implements ExtendedScreenHandlerFactory, SidedInventory { public static final long CAPACITY = 10000; public static final long MAX_INSERT = 200; public static final long MAX_EXTRACT = 0; @@ -186,12 +185,10 @@ public class GrowGlobeBlockEntity extends BlockEntity implements ExtendedScreenH } @Override - public Object getScreenOpeningData(ServerPlayerEntity player) { - return this.getPos(); + public BlockPos getScreenOpeningData(ServerPlayerEntity player) { + return this.pos; } - - // --- Inventory delegation --- @Override public int size() { diff --git a/src/main/java/ovh/sad/growglobe/GrowGlobeScreenHandler.java b/src/main/java/ovh/sad/growglobe/GrowGlobeScreenHandler.java index f4e2eba..9b193b9 100644 --- a/src/main/java/ovh/sad/growglobe/GrowGlobeScreenHandler.java +++ b/src/main/java/ovh/sad/growglobe/GrowGlobeScreenHandler.java @@ -6,6 +6,7 @@ import net.minecraft.inventory.Inventory; import net.minecraft.item.ItemStack; import net.minecraft.screen.PropertyDelegate; import net.minecraft.screen.ScreenHandler; +import net.minecraft.screen.ScreenHandlerType; import net.minecraft.screen.slot.Slot; public class GrowGlobeScreenHandler extends ScreenHandler { @@ -46,6 +47,11 @@ public class GrowGlobeScreenHandler extends ScreenHandler { } } + @Override + public ScreenHandlerType getType() { + return GrowGlobeScreenHandlers.GROW_GLOBE; + } + @Override public ItemStack quickMove(PlayerEntity player, int index) { ItemStack newStack = ItemStack.EMPTY; @@ -99,7 +105,7 @@ public class GrowGlobeScreenHandler extends ScreenHandler { @Override public boolean canUse(PlayerEntity player) { - return inventory.canPlayerUse(player); + return true; } public int getEnergy() { diff --git a/src/main/java/ovh/sad/growglobe/GrowGlobeScreenHandlers.java b/src/main/java/ovh/sad/growglobe/GrowGlobeScreenHandlers.java index 37c4ada..0c92e3f 100644 --- a/src/main/java/ovh/sad/growglobe/GrowGlobeScreenHandlers.java +++ b/src/main/java/ovh/sad/growglobe/GrowGlobeScreenHandlers.java @@ -7,7 +7,6 @@ import net.minecraft.screen.ScreenHandlerType; import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; -// ModScreenHandlers.java public class GrowGlobeScreenHandlers { public static ScreenHandlerType GROW_GLOBE; @@ -16,18 +15,15 @@ public class GrowGlobeScreenHandlers { Registries.SCREEN_HANDLER, Identifier.of(Growglobe.MOD_ID, "growglobe"), new ExtendedScreenHandlerType<>( - // Decoder: called on client - (syncId, playerInv, buf) -> { - BlockPos pos = buf; - + (syncId, playerInv, pos) -> { var be = playerInv.player.getWorld().getBlockEntity(pos); + if (be instanceof GrowGlobeBlockEntity blockEntity) { return new GrowGlobeScreenHandler(syncId, playerInv, blockEntity.getInventory(), blockEntity.getPropertyDelegate()); } - // Fallback if BE missing + return new GrowGlobeScreenHandler(syncId, playerInv, new net.minecraft.inventory.SimpleInventory(7), new net.minecraft.screen.ArrayPropertyDelegate(2)); }, - // PacketCodec to sync BlockPos BlockPos.PACKET_CODEC ) ); diff --git a/src/main/java/ovh/sad/growglobe/Growglobe.java b/src/main/java/ovh/sad/growglobe/Growglobe.java index 2cf2eaf..ed2a11c 100644 --- a/src/main/java/ovh/sad/growglobe/Growglobe.java +++ b/src/main/java/ovh/sad/growglobe/Growglobe.java @@ -1,7 +1,6 @@ package ovh.sad.growglobe; import net.fabricmc.api.ModInitializer; -import net.minecraft.world.World; public class Growglobe implements ModInitializer { public static String MOD_ID = "growglobe"; @@ -9,6 +8,7 @@ public class Growglobe implements ModInitializer { @Override public void onInitialize() { GrowGlobeBlocks.initialize(); + GrowGlobeScreenHandlers.register(); GrowGlobeBlockEntities.register(); } } diff --git a/src/main/java/ovh/sad/growglobe/HarvestUtil.java b/src/main/java/ovh/sad/growglobe/HarvestUtil.java index 209bff9..72d4598 100644 --- a/src/main/java/ovh/sad/growglobe/HarvestUtil.java +++ b/src/main/java/ovh/sad/growglobe/HarvestUtil.java @@ -4,33 +4,19 @@ import net.minecraft.block.*; import net.minecraft.item.BlockItem; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.registry.Registries; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; -import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.registry.tag.BlockTags; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; import net.minecraft.world.gen.feature.ConfiguredFeature; import net.minecraft.world.gen.feature.TreeFeatureConfig; -import net.minecraft.world.gen.foliage.SpruceFoliagePlacer; import java.util.ArrayList; import java.util.List; -import java.util.Optional; public class HarvestUtil { - /** - * Dynamically harvests any block or item and returns the resulting drops. - * Works with vanilla and modded blocks. - * - * @param world the world - * @param item the Item (usually BlockItem) to harvest - * @param pos the position (optional for context; can be BlockPos.ORIGIN) - * @return List of ItemStacks that would drop - */ public static List harvestBlock(ServerWorld world, Item item, BlockPos pos) { List drops = new ArrayList<>(); @@ -41,13 +27,11 @@ public class HarvestUtil { BlockEntityProvider blockEntityProvider = block instanceof BlockEntityProvider bep ? bep : null; - // CropBlock: drop crop + seeds if (block instanceof CropBlock crop) { state = crop.withAge(crop.getMaxAge()); } - // Stackable plants like sugar cane or bamboo else if (block instanceof SugarCaneBlock) { - int height = 3; // or dynamically detect in world + int height = 3; for (int i = 0; i < height; i++) drops.add(new ItemStack(block)); return drops; }