Skip to content

Commit 7677987

Browse files
Fix bedrock chest collision
1 parent 658e4a3 commit 7677987

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

src/main/java/com/viaversion/viafabricplus/injection/mixin/features/block/shape/MixinChestBlock.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import java.util.Map;
2626
import java.util.function.Supplier;
2727
import net.minecraft.block.AbstractChestBlock;
28+
import net.minecraft.block.Block;
2829
import net.minecraft.block.BlockState;
2930
import net.minecraft.block.ChestBlock;
3031
import net.minecraft.block.ShapeContext;
@@ -41,13 +42,18 @@
4142
import org.spongepowered.asm.mixin.Final;
4243
import org.spongepowered.asm.mixin.Mixin;
4344
import org.spongepowered.asm.mixin.Shadow;
45+
import org.spongepowered.asm.mixin.Unique;
4446
import org.spongepowered.asm.mixin.injection.At;
4547
import org.spongepowered.asm.mixin.injection.Inject;
4648
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
4749

4850
@Mixin(ChestBlock.class)
4951
public abstract class MixinChestBlock extends AbstractChestBlock<ChestBlockEntity> {
5052

53+
//https://bugs-legacy.mojang.com/browse/MCPE-94126
54+
@Unique
55+
private static final VoxelShape viaFabricPlus$shape_bedrock = Block.createColumnShape(15.15F, 0.0F, 15.15F);
56+
5157
@Shadow
5258
@Final
5359
private static Map<Direction, VoxelShape> DOUBLE_SHAPES_BY_DIRECTION;
@@ -64,12 +70,15 @@ protected MixinChestBlock(Settings settings, Supplier<BlockEntityType<? extends
6470
private void changeOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable<VoxelShape> cir) {
6571
if (ProtocolTranslator.getTargetVersion().olderThanOrEqualTo(LegacyProtocolVersion.r1_4_2)) {
6672
cir.setReturnValue(VoxelShapes.fullCube());
73+
} else if (ProtocolTranslator.getTargetVersion().equalTo(BedrockProtocolVersion.bedrockLatest)) {
74+
cir.setReturnValue(viaFabricPlus$shape_bedrock);
6775
}
6876
}
6977

7078
@Override
7179
public VoxelShape getCullingShape(BlockState state) {
72-
if (ProtocolTranslator.getTargetVersion().olderThanOrEqualTo(LegacyProtocolVersion.r1_4_2)) {
80+
if (ProtocolTranslator.getTargetVersion().olderThanOrEqualTo(LegacyProtocolVersion.r1_4_2)
81+
|| ProtocolTranslator.getTargetVersion().equalTo(BedrockProtocolVersion.bedrockLatest)) {
7382
if (state.get(ChestBlock.CHEST_TYPE) == ChestType.SINGLE) {
7483
return SINGLE_SHAPE;
7584
} else {

src/main/java/com/viaversion/viafabricplus/injection/mixin/features/block/shape/MixinEnderChestBlock.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
package com.viaversion.viafabricplus.injection.mixin.features.block.shape;
2323

2424
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
25+
import net.minecraft.block.Block;
2526
import net.minecraft.block.BlockState;
2627
import net.minecraft.block.BlockWithEntity;
2728
import net.minecraft.block.EnderChestBlock;
@@ -35,13 +36,18 @@
3536
import org.spongepowered.asm.mixin.Final;
3637
import org.spongepowered.asm.mixin.Mixin;
3738
import org.spongepowered.asm.mixin.Shadow;
39+
import org.spongepowered.asm.mixin.Unique;
3840
import org.spongepowered.asm.mixin.injection.At;
3941
import org.spongepowered.asm.mixin.injection.Inject;
4042
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
4143

4244
@Mixin(EnderChestBlock.class)
4345
public abstract class MixinEnderChestBlock extends BlockWithEntity {
4446

47+
//https://bugs-legacy.mojang.com/browse/MCPE-94126
48+
@Unique
49+
private static final VoxelShape viaFabricPlus$shape_bedrock = Block.createColumnShape(15.15F, 0.0F, 15.15F);
50+
4551
@Shadow
4652
@Final
4753
private static VoxelShape SHAPE;
@@ -54,12 +60,15 @@ protected MixinEnderChestBlock(Settings settings) {
5460
private void changeOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable<VoxelShape> cir) {
5561
if (ProtocolTranslator.getTargetVersion().olderThanOrEqualTo(LegacyProtocolVersion.r1_4_2)) {
5662
cir.setReturnValue(VoxelShapes.fullCube());
63+
} else if (ProtocolTranslator.getTargetVersion().equalTo(BedrockProtocolVersion.bedrockLatest)) {
64+
cir.setReturnValue(viaFabricPlus$shape_bedrock);
5765
}
5866
}
5967

6068
@Override
6169
public VoxelShape getCullingShape(BlockState state) {
62-
if (ProtocolTranslator.getTargetVersion().olderThanOrEqualTo(LegacyProtocolVersion.r1_4_2)) {
70+
if (ProtocolTranslator.getTargetVersion().olderThanOrEqualTo(LegacyProtocolVersion.r1_4_2)
71+
|| ProtocolTranslator.getTargetVersion().equalTo(BedrockProtocolVersion.bedrockLatest)) {
6372
return SHAPE;
6473
} else {
6574
return super.getCullingShape(state);

0 commit comments

Comments
 (0)