filename:
common/src/main/java/rearth/oritech/block/entity/addons/AddonBlockEntity.java
branch:
1.21
back to repo
package rearth.oritech.block.entity.addons;
import net.minecraft.block.BlockState;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.block.entity.BlockEntityType;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.registry.RegistryWrapper;
import net.minecraft.util.math.BlockPos;
import rearth.oritech.init.BlockEntitiesContent;
import rearth.oritech.util.MachineAddonController;
import rearth.oritech.util.MachineAddonProvider;
import java.util.HashSet;
public class AddonBlockEntity extends BlockEntity implements MachineAddonProvider {
public static final HashSet<MachineAddonController> pendingInits = new HashSet<>();
public static void completeInits() {
for (var controller : pendingInits) {
controller.initAddons();
}
pendingInits.clear();
}
private BlockPos controllerPos = BlockPos.ORIGIN;
public AddonBlockEntity(BlockPos pos, BlockState state) {
super(BlockEntitiesContent.ADDON_ENTITY, pos, state);
}
public AddonBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state);
}
@Override
public void setControllerPos(BlockPos pos) {
controllerPos = pos;
}
@Override
public BlockPos getControllerPos() {
return controllerPos;
}
@Override
protected void writeNbt(NbtCompound nbt, RegistryWrapper.WrapperLookup registryLookup) {
super.writeNbt(nbt, registryLookup);
nbt.putInt("controller_x", controllerPos.getX());
nbt.putInt("controller_y", controllerPos.getY());
nbt.putInt("controller_z", controllerPos.getZ());
}
@Override
protected void readNbt(NbtCompound nbt, RegistryWrapper.WrapperLookup registryLookup) {
super.readNbt(nbt, registryLookup);
controllerPos = new BlockPos(nbt.getInt("controller_x"), nbt.getInt("controller_y"), nbt.getInt("controller_z"));
}
}