filename:
common/src/main/java/rearth/oritech/block/base/entity/MultiblockGeneratorBlockEntity.java
branch:
1.21
back to repo
package rearth.oritech.block.base.entity;
import net.minecraft.block.BlockState;
import net.minecraft.block.entity.BlockEntityType;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.registry.RegistryWrapper;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction;
import net.minecraft.world.World;
import rearth.oritech.api.energy.EnergyApi;
import rearth.oritech.api.item.ItemApi;
import rearth.oritech.block.base.block.MultiblockMachine;
import rearth.oritech.util.MultiblockMachineController;
import java.util.ArrayList;
public abstract class MultiblockGeneratorBlockEntity extends UpgradableGeneratorBlockEntity implements MultiblockMachineController {
private final ArrayList<BlockPos> coreBlocksConnected = new ArrayList<>();
private float coreQuality = 1f;
public MultiblockGeneratorBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state, int energyPerTick) {
super(type, pos, state, energyPerTick);
}
@Override
public ArrayList<BlockPos> getConnectedCores() {
return coreBlocksConnected;
}
@Override
public Direction getFacingForMultiblock() {
return getFacing();
}
@Override
public void setCoreQuality(float quality) {
this.coreQuality = quality;
}
@Override
protected void writeNbt(NbtCompound nbt, RegistryWrapper.WrapperLookup registryLookup) {
super.writeNbt(nbt, registryLookup);
addMultiblockToNbt(nbt);
}
@Override
protected void readNbt(NbtCompound nbt, RegistryWrapper.WrapperLookup registryLookup) {
super.readNbt(nbt, registryLookup);
loadMultiblockNbtData(nbt);
}
@Override
public float getCoreQuality() {
return this.coreQuality;
}
@Override
public ItemApi.InventoryStorage getInventoryForMultiblock() {
return inventory;
}
@Override
public EnergyApi.EnergyStorage getEnergyStorageForMultiblock(Direction direction) {
return energyStorage;
}
@Override
public boolean isActive(BlockState state) {
return state.get(MultiblockMachine.ASSEMBLED);
}
@Override
public BlockPos getPosForMultiblock() {
return pos;
}
@Override
public World getWorldForMultiblock() {
return world;
}
}