test for a strict list of blocks allowed above a sit entity

This commit is contained in:
Oth3r 2023-10-12 22:20:06 -05:00
commit a83fe5726d

View file

@ -78,20 +78,22 @@ public class Events {
} }
return map; return map;
} }
@SuppressWarnings("deprecation")
public static boolean checkBlocks(BlockPos pos, World world) { public static boolean checkBlocks(BlockPos pos, World world) {
BlockState blockState = world.getBlockState(pos); BlockState blockState = world.getBlockState(pos);
Block block = blockState.getBlock(); Block block = blockState.getBlock();
BlockState blockStateAbove = world.getBlockState(pos.add(0,1,0)); BlockState blockStateAbove = world.getBlockState(pos.add(0,1,0));
Block blockAbove = blockStateAbove.getBlock(); Block blockAbove = blockStateAbove.getBlock();
//not the biggest fan but ah well // todo strict checker option to check 2 blocks above??
if (blockStateAbove.isFullCube(world,pos.add(0,1,0)) && blockStateAbove.blocksMovement()) return false; // set amount of blocks that can be above a chair
else if (blockAbove instanceof StairsBlock || blockAbove instanceof SlabBlock || blockAbove instanceof CarpetBlock) return false; if (!(blockAbove instanceof SignBlock || blockAbove instanceof TrapdoorBlock || blockAbove instanceof BannerBlock)) return false;
//if there's already an entity at the block location or above it
for (Entity entity:entities.values()) if (entity.getBlockPos().equals(pos) || entity.getBlockPos().add(0,1,0).equals(pos)) return false; for (Entity entity:entities.values()) if (entity.getBlockPos().equals(pos) || entity.getBlockPos().add(0,1,0).equals(pos)) return false;
// return for the 4 default types
if (block instanceof StairsBlock && config.stairsOn) return blockState.get(StairsBlock.HALF) == BlockHalf.BOTTOM; if (block instanceof StairsBlock && config.stairsOn) return blockState.get(StairsBlock.HALF) == BlockHalf.BOTTOM;
if (block instanceof SlabBlock && config.slabsOn) return blockState.get(SlabBlock.TYPE) == SlabType.BOTTOM; if (block instanceof SlabBlock && config.slabsOn) return blockState.get(SlabBlock.TYPE) == SlabType.BOTTOM;
if (block instanceof CarpetBlock && config.carpetsOn) return true; if (block instanceof CarpetBlock && config.carpetsOn) return true;
if (blockState.isFullCube(world,pos.add(0,1,0)) && config.fullBlocksOn) return true; if (blockState.isFullCube(world,pos.add(0,1,0)) && config.fullBlocksOn) return true;
// custom checker
if (config.customOn && config.customBlocks.size() != 0) { if (config.customOn && config.customBlocks.size() != 0) {
for (HashMap<String,Object> map:getCustomBlocks().values()) { for (HashMap<String,Object> map:getCustomBlocks().values()) {
String blockID = Registries.BLOCK.getId(block).toString(); String blockID = Registries.BLOCK.getId(block).toString();