diff --git a/core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/block/IBlockStateWrapper.java b/core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/block/IBlockStateWrapper.java index acf89aa65..d9caddb31 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/block/IBlockStateWrapper.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/block/IBlockStateWrapper.java @@ -49,6 +49,11 @@ public interface IBlockStateWrapper extends IDhApiBlockStateWrapper boolean isBeaconBlock(); /** IE a glass block that can affect the beacon beam color */ boolean isBeaconTintBlock(); + /** + * Returns true for any blocks that allow beacon beams to go through. + * IE: glass, stairs, bedrock, chests, end portal frames, carpet, cake + */ + boolean allowsBeaconBeamPassage(); /** * The blocks used by a beacon's base * IE Iron, diamond, gold, etc. diff --git a/core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/chunk/IChunkWrapper.java b/core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/chunk/IChunkWrapper.java index 4184513b0..c08b1b582 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/chunk/IChunkWrapper.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/chunk/IChunkWrapper.java @@ -381,8 +381,9 @@ public interface IChunkWrapper extends IBindable for (int y = beaconRelPos.getY() +1; y <= maxY; y++) { IBlockStateWrapper block = centerChunk.getBlockState(beaconRelPos.getX(), y, beaconRelPos.getZ()); - if (!block.isAir() && block.getOpacity() == LodUtil.BLOCK_FULLY_OPAQUE) + if (!block.allowsBeaconBeamPassage()) { + // beam is blocked by this block return null; }