From ae32d77f23a608c8f853e0b78cb4d88c2897dc10 Mon Sep 17 00:00:00 2001 From: TheBrokenRail Date: Fri, 24 Jul 2020 17:32:45 -0400 Subject: [PATCH] Clean Up --- .../block/forcefield/ForcefieldBlock.java | 46 +++++++++++-------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/thebrokenrail/energonrelics/block/forcefield/ForcefieldBlock.java b/src/main/java/com/thebrokenrail/energonrelics/block/forcefield/ForcefieldBlock.java index 64b33e2..38ca7da 100644 --- a/src/main/java/com/thebrokenrail/energonrelics/block/forcefield/ForcefieldBlock.java +++ b/src/main/java/com/thebrokenrail/energonrelics/block/forcefield/ForcefieldBlock.java @@ -1,6 +1,7 @@ package com.thebrokenrail.energonrelics.block.forcefield; import com.thebrokenrail.energonrelics.EnergonRelics; +import com.thebrokenrail.energonrelics.block.entity.forcefield.ForcefieldProjectorBlockEntity; import com.thebrokenrail.energonrelics.block.util.SimpleBlock; import com.thebrokenrail.energonrelics.config.HardcodedConfig; import net.fabricmc.api.EnvType; @@ -9,6 +10,7 @@ import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; +import net.minecraft.block.entity.BlockEntity; import net.minecraft.block.piston.PistonBehavior; import net.minecraft.sound.BlockSoundGroup; import net.minecraft.state.StateManager; @@ -61,29 +63,37 @@ public class ForcefieldBlock extends SimpleBlock { return false; } + public ForcefieldProjectorBlockEntity findProjector(BlockView world, BlockPos pos, BlockState state) { + Direction facing = state.get(FACING).getOpposite(); + ForcefieldProjectorBlockEntity found = null; + for (int i = 0; i < HardcodedConfig.FORCEFIELD_MAX_SIZE + 1; i++) { + BlockPos targetPos = pos.offset(facing, i); + BlockState targetState = world.getBlockState(targetPos); + if (targetState.getBlock() == this) { + if (!facing.equals(targetState.get(FACING).getOpposite())) { + break; + } + } else if (targetState.getBlock() == EnergonRelics.FORCEFIELD_PROJECTOR_BLOCK) { + if (facing.equals(targetState.get(FACING).getOpposite()) && targetState.get(ForcefieldProjectorBlock.POWERED)) { + BlockEntity entity = world.getBlockEntity(targetPos); + if (entity instanceof ForcefieldProjectorBlockEntity) { + found = (ForcefieldProjectorBlockEntity) entity; + } + } + break; + } else { + break; + } + } + return found; + } + @Override public BlockState getStateForNeighborUpdate(BlockState state, Direction direction, BlockState newState, WorldAccess world, BlockPos pos, BlockPos posFrom) { BlockState defaultState = super.getStateForNeighborUpdate(state, direction, newState, world, pos, posFrom); Direction facing = state.get(FACING).getOpposite(); if (direction.equals(facing)) { - boolean found = false; - for (int i = 0; i < HardcodedConfig.FORCEFIELD_MAX_SIZE + 1; i++) { - BlockPos targetPos = pos.offset(facing, i); - BlockState targetState = world.getBlockState(targetPos); - if (targetState.getBlock() == this) { - if (!facing.equals(targetState.get(FACING).getOpposite())) { - break; - } - } else if (targetState.getBlock() == EnergonRelics.FORCEFIELD_PROJECTOR_BLOCK) { - if (facing.equals(targetState.get(FACING).getOpposite()) && targetState.get(ForcefieldProjectorBlock.POWERED)) { - found = true; - } - break; - } else { - break; - } - } - return found ? defaultState : Blocks.AIR.getDefaultState(); + return findProjector(world, pos, state) != null ? defaultState : Blocks.AIR.getDefaultState(); } else { return defaultState; }