diff --git a/gradle.properties b/gradle.properties index d1ecb73..ce72073 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ org.gradle.jvmargs=-Xmx4G org.gradle.parallel=true org.gradle.caching=true -mod_version=4.0.12 +mod_version=4.0.13 maven_group=earth.terrarium.handcrafted archives_base_name=handcrafted diff --git a/src/main/java/earth/terrarium/handcrafted/common/blocks/BenchBlock.java b/src/main/java/earth/terrarium/handcrafted/common/blocks/BenchBlock.java index 5b96cb5..90e3aaa 100644 --- a/src/main/java/earth/terrarium/handcrafted/common/blocks/BenchBlock.java +++ b/src/main/java/earth/terrarium/handcrafted/common/blocks/BenchBlock.java @@ -72,6 +72,21 @@ public class BenchBlock extends ModularSeatBlock { return SEAT; } + @Override + public double getSeatHeight(BlockState state) { + // As with chairs, only compensate for the optional cushion. + return super.getSeatHeight(state) + + (state.getValue(COLOR) == OptionalColorProperty.NONE ? 0.0D : 0.10D); + } + + @Override + protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult hitResult) { + // A backless bench has no canonical facing for the rider. Passing null + // makes Seat free-rotating, just like the standalone cushion/dining bench. + this.sitOn(level, pos, player, null); + return InteractionResult.SUCCESS; + } + @Override protected void createBlockStateDefinition(StateDefinition.Builder builder) { super.createBlockStateDefinition(builder); diff --git a/src/main/java/earth/terrarium/handcrafted/common/blocks/ChairBlock.java b/src/main/java/earth/terrarium/handcrafted/common/blocks/ChairBlock.java index 6a0b0a7..948026c 100644 --- a/src/main/java/earth/terrarium/handcrafted/common/blocks/ChairBlock.java +++ b/src/main/java/earth/terrarium/handcrafted/common/blocks/ChairBlock.java @@ -88,6 +88,15 @@ public class ChairBlock extends HorizontalDirectionalBlock implements SittableBl return SEAT; } + @Override + public double getSeatHeight(BlockState state) { + // Keep the original chair height untouched unless an optional cushion + // is actually installed. The cushion adds visible thickness, so lift + // the rider just enough to sit on top of it instead of inside it. + return SittableBlock.super.getSeatHeight(state) + + (state.getValue(COLOR) == OptionalColorProperty.NONE ? 0.0D : 0.10D); + } + @Override protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { InteractionResult result = InteractionUtils.interactOptionalCushion(state, level, pos, player, stack, COLOR);