Add property override so controller energy status is rendered correctly.

This commit is contained in:
raoulvdberge
2019-09-18 23:32:31 +02:00
parent d9b40fb845
commit e9582c9586
3 changed files with 41 additions and 7 deletions

View File

@@ -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();
});
}
}

View File

@@ -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) {

View File

@@ -1,3 +1,28 @@
{
"parent": "refinedstorage:block/controller/controller_off"
"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"
}
]
}