forked from TheBrokenRail/EnergonRelics
39 lines
1.8 KiB
Java
39 lines
1.8 KiB
Java
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 energyTick() {
|
|
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 != state) {
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|