EnergonRelics/src/main/java/com/thebrokenrail/energonrelics/block/forcefield/util/FieldProjectorBlock.java

42 lines
1.5 KiB
Java

package com.thebrokenrail.energonrelics.block.forcefield.util;
import com.thebrokenrail.energonrelics.block.entity.forcefield.FieldProjectorBlockEntity;
import com.thebrokenrail.energonrelics.api.block.energy.FacingEnergyBlock;
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.entity.BlockEntityType;
import net.minecraft.state.StateManager;
import net.minecraft.state.property.BooleanProperty;
import net.minecraft.state.property.Properties;
import java.util.function.Function;
public class FieldProjectorBlock extends FacingEnergyBlock {
public static final BooleanProperty POWERED = Properties.POWERED;
private final Function<BlockState, AbstractFieldBlock> block;
public FieldProjectorBlock(Function<BlockState, AbstractFieldBlock> block) {
super(FabricBlockSettings.copy(Blocks.IRON_BLOCK));
setDefaultState(getDefaultState().with(POWERED, false));
this.block = block;
}
@Override
protected void appendProperties(StateManager.Builder<Block, BlockState> builder) {
super.appendProperties(builder);
builder.add(POWERED);
}
@Override
protected Function<BlockEntityType<BlockEntity>, BlockEntity> getFactory() {
if (block == null) {
throw new UnsupportedOperationException();
}
return type -> new FieldProjectorBlockEntity(type, block);
}
}