From 9ea69874037fe7b7a5765106a6f77aaa4da4f592 Mon Sep 17 00:00:00 2001 From: alatyami Date: Sat, 11 Jul 2026 14:32:10 -0600 Subject: [PATCH 1/2] Synchronize Cork Coaster bottle removal, closes #199 --- .../cellar/block/entity/CorkCoasterBlockEntity.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/growthcraft/cellar/block/entity/CorkCoasterBlockEntity.java b/src/main/java/growthcraft/cellar/block/entity/CorkCoasterBlockEntity.java index 2a97ca2..3a976c5 100644 --- a/src/main/java/growthcraft/cellar/block/entity/CorkCoasterBlockEntity.java +++ b/src/main/java/growthcraft/cellar/block/entity/CorkCoasterBlockEntity.java @@ -16,6 +16,7 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; @@ -94,9 +95,9 @@ public void setChangedAndUpdate() { BlockState updatedState = state.setValue(CorkCoasterBlock.ITEM, !isEmpty()); if (state != updatedState) { level.setBlock(worldPosition, updatedState, 3); - } else { - level.sendBlockUpdated(worldPosition, state, state, 3); } + BlockState currentState = getBlockState(); + level.sendBlockUpdated(worldPosition, currentState, currentState, Block.UPDATE_CLIENTS); } } @@ -111,6 +112,7 @@ protected void saveAdditional(CompoundTag tag, HolderLookup.Provider provider) { @Override public void loadAdditional(CompoundTag tag, HolderLookup.Provider provider) { super.loadAdditional(tag, provider); + items.clear(); ContainerHelper.loadAllItems(tag.getCompound(ITEMS_TAG), this.items, provider); } From 32a1175cc6e240e8abce0d66fc6d8472e23b3b6c Mon Sep 17 00:00:00 2001 From: alatyami Date: Sat, 11 Jul 2026 14:33:09 -0600 Subject: [PATCH 2/2] Break unsupported Cork Coasters, closes #198 --- .../java/growthcraft/cellar/block/CorkCoasterBlock.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/growthcraft/cellar/block/CorkCoasterBlock.java b/src/main/java/growthcraft/cellar/block/CorkCoasterBlock.java index 4dfa5b7..bcf8b20 100644 --- a/src/main/java/growthcraft/cellar/block/CorkCoasterBlock.java +++ b/src/main/java/growthcraft/cellar/block/CorkCoasterBlock.java @@ -13,6 +13,7 @@ import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; @@ -95,6 +96,14 @@ public boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) { && top.max(Direction.Axis.Z) >= 12.0D / 16.0D; } + @Override + protected BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor level, + BlockPos pos, BlockPos neighborPos) { + return !state.canSurvive(level, pos) + ? Blocks.AIR.defaultBlockState() + : super.updateShape(state, direction, neighborState, level, pos, neighborPos); + } + @Override public VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { return state.getValue(ITEM) ? SHAPE_WITH_BOTTLE : SHAPE;