diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/ControllerBlockItem.java b/src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/ControllerBlockItem.java index 9c3b4f888..4cf681a8b 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/ControllerBlockItem.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/blockitem/ControllerBlockItem.java @@ -2,13 +2,24 @@ package com.raoulvdberge.refinedstorage.item.blockitem; import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.block.ControllerBlock; +import com.raoulvdberge.refinedstorage.tile.ControllerTile; import net.minecraft.item.Item; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.energy.CapabilityEnergy; +import net.minecraftforge.energy.IEnergyStorage; -// TODO: Set energy state on controller item texture... public class ControllerBlockItem extends EnergyBlockItem { public ControllerBlockItem(ControllerBlock block) { super(block, new Item.Properties().group(RS.MAIN_GROUP).maxStackSize(1), block.getType() == ControllerBlock.Type.CREATIVE, () -> RS.CONFIG.getController().getCapacity()); this.setRegistryName(block.getRegistryName()); + this.addPropertyOverride(new ResourceLocation("energy_type"), (stack, world, entity) -> { + IEnergyStorage storage = stack.getCapability(CapabilityEnergy.ENERGY).orElse(null); + if (storage != null) { + return ControllerTile.getEnergyType(storage.getEnergyStored(), storage.getMaxEnergyStored()).ordinal(); + } + + return ControllerBlock.EnergyType.OFF.ordinal(); + }); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/ControllerTile.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/ControllerTile.java index 78e94e27e..540998e10 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/ControllerTile.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/ControllerTile.java @@ -221,7 +221,6 @@ public class ControllerTile extends TileBase implements ITickableTileEntity, INe } } - /* if (type == ControllerBlock.Type.NORMAL) { if (!RS.CONFIG.getController().getUseEnergy()) { this.energy.setStored(this.energy.getCapacity()); @@ -232,8 +231,7 @@ public class ControllerTile extends TileBase implements ITickableTileEntity, INe } } else if (type == ControllerBlock.Type.CREATIVE) { this.energy.setStored(this.energy.getCapacity()); - }*/ - this.energy.setStored(5000); + } boolean canRun = canRun(); @@ -587,7 +585,7 @@ public class ControllerTile extends TileBase implements ITickableTileEntity, INe return getEnergyType(this.energy.getStored(), this.energy.getCapacity()); } - private static ControllerBlock.EnergyType getEnergyType(int stored, int capacity) { + public static ControllerBlock.EnergyType getEnergyType(int stored, int capacity) { int energy = getEnergyScaled(stored, capacity, 100); if (energy <= 0) { diff --git a/src/main/resources/assets/refinedstorage/models/item/controller.json b/src/main/resources/assets/refinedstorage/models/item/controller.json index 75552cac2..286ec7b0c 100644 --- a/src/main/resources/assets/refinedstorage/models/item/controller.json +++ b/src/main/resources/assets/refinedstorage/models/item/controller.json @@ -1,3 +1,28 @@ { - "parent": "refinedstorage:block/controller/controller_off" -} \ No newline at end of file + "overrides": [ + { + "predicate": { + "energy_type": 0 + }, + "model": "refinedstorage:block/controller/controller_off" + }, + { + "predicate": { + "energy_type": 1 + }, + "model": "refinedstorage:block/controller/controller_nearly_off" + }, + { + "predicate": { + "energy_type": 2 + }, + "model": "refinedstorage:block/controller/controller_nearly_on" + }, + { + "predicate": { + "energy_type": 3 + }, + "model": "refinedstorage:block/controller/controller_on" + } + ] +}