package com.thebrokenrail.energonrelics.block.entity.forcefield; import com.thebrokenrail.energonrelics.EnergonRelics; import com.thebrokenrail.energonrelics.block.forcefield.ForcefieldBlock; import com.thebrokenrail.energonrelics.block.forcefield.ForcefieldProjectorBlock; import com.thebrokenrail.energonrelics.config.HardcodedConfig; import com.thebrokenrail.energonrelics.energy.core.EnergyReceiverBlockEntity; import com.thebrokenrail.energonrelics.energy.core.util.Action; import net.minecraft.block.BlockState; import net.minecraft.block.entity.BlockEntityType; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; public class ForcefieldProjectorBlockEntity extends EnergyReceiverBlockEntity { public ForcefieldProjectorBlockEntity(BlockEntityType type) { super(type); } @Override protected void tickEnergy() { assert getWorld() != null; addAction(Action.createBlockStatePropertyAction(HardcodedConfig.FORCEFIELD_PROJECTOR_ENERGY_REQUIRED, ForcefieldProjectorBlock.POWERED, true, false)); if (getCachedState().get(ForcefieldProjectorBlock.POWERED)) { Direction facing = getCachedState().get(ForcefieldProjectorBlock.FACING); BlockState state = EnergonRelics.FORCEFIELD_BLOCK.getDefaultState().with(ForcefieldBlock.FACING, facing); for (int i = 1; i < HardcodedConfig.FORCEFIELD_MAX_SIZE + 1; i++) { BlockPos targetPos = getPos().offset(facing, i); BlockState targetState = getWorld().getBlockState(targetPos); if (targetState.isAir()) { getWorld().setBlockState(targetPos, state); } else if (targetState.getBlock() != EnergonRelics.FORCEFIELD_BLOCK) { break; } } } } }