package shedar.mods.ic2.nuclearcontrol.crossmod.RF; import cofh.api.energy.IEnergyHandler; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChunkCoordinates; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; import shedar.mods.ic2.nuclearcontrol.api.CardState; import shedar.mods.ic2.nuclearcontrol.api.ICardWrapper; import shedar.mods.ic2.nuclearcontrol.api.PanelSetting; import shedar.mods.ic2.nuclearcontrol.api.PanelString; import shedar.mods.ic2.nuclearcontrol.items.ItemCardEnergySensorLocation; import shedar.mods.ic2.nuclearcontrol.utils.LangHelper; import shedar.mods.ic2.nuclearcontrol.utils.StringUtils; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.UUID; public class ItemCardRFEnergyLocation extends ItemCardEnergySensorLocation { public static final UUID CARD_TYPE = new UUID(0, 3); public ItemCardRFEnergyLocation() { this.setUnlocalizedName("RFenergyCard"); } @Override public CardState update(TileEntity panel, ICardWrapper card, int range) { ChunkCoordinates target = card.getTarget(); if(target == null) return CardState.NO_TARGET; TileEntity tile = panel.getWorldObj().getTileEntity(target.posX, target.posY, target.posZ); //NCLog.fatal(tile instanceof IEnergyHandler); if(tile instanceof IEnergyHandler) { IEnergyHandler iEnergyStorage = (IEnergyHandler) tile; card.setInt("energyL", iEnergyStorage.getEnergyStored(ForgeDirection.UNKNOWN)); card.setInt("maxStorageL", iEnergyStorage.getMaxEnergyStored(ForgeDirection.UNKNOWN)); card.setInt("range_trigger_amount", iEnergyStorage.getEnergyStored(ForgeDirection.UNKNOWN)); return CardState.OK; } else { return CardState.NO_TARGET; } } @Override public CardState update(World world, ICardWrapper card, int range) { ChunkCoordinates target = card.getTarget(); if(target == null) return CardState.NO_TARGET; TileEntity tile = world.getTileEntity(target.posX, target.posY, target.posZ); //NCLog.fatal(tile instanceof IEnergyHandler); if(tile instanceof IEnergyHandler) { IEnergyHandler iEnergyStorage = (IEnergyHandler) tile; card.setInt("energyL", iEnergyStorage.getEnergyStored(ForgeDirection.UNKNOWN)); card.setInt("maxStorageL", iEnergyStorage.getMaxEnergyStored(ForgeDirection.UNKNOWN)); card.setInt("range_trigger_amount", iEnergyStorage.getEnergyStored(ForgeDirection.UNKNOWN)); return CardState.OK; } else { return CardState.NO_TARGET; } } @Override public UUID getCardType() { return CARD_TYPE; } @Override public List<PanelString> getStringData(int displaySettings, ICardWrapper card, boolean showLabels) { List<PanelString> result = new LinkedList<PanelString>(); PanelString line; double energy = card.getDouble("energyL"); double storage = card.getDouble("maxStorageL"); if ((displaySettings & DISPLAY_ENERGY) > 0) { line = new PanelString(); line.textLeft = StringUtils.getFormatted("msg.nc.InfoPanelEnergy", energy, showLabels); result.add(line); } if ((displaySettings & DISPLAY_FREE) > 0) { line = new PanelString(); line.textLeft = StringUtils.getFormatted( "msg.nc.InfoPanelEnergyFree", storage - energy, showLabels); result.add(line); } if ((displaySettings & DISPLAY_STORAGE) > 0) { line = new PanelString(); line.textLeft = StringUtils.getFormatted( "msg.nc.InfoPanelEnergyStorage", storage, showLabels); result.add(line); } if ((displaySettings & DISPLAY_PERCENTAGE) > 0) { line = new PanelString(); line.textLeft = StringUtils.getFormatted( "msg.nc.InfoPanelEnergyPercentage", storage == 0 ? 100 : (energy * 100 / storage), showLabels); result.add(line); } return result; } @Override public List<PanelSetting> getSettingsList() { List<PanelSetting> result = new ArrayList<PanelSetting>(); result.add(new PanelSetting(LangHelper.translate("msg.nc.cbInfoPanelEnergyCurrent"), DISPLAY_ENERGY, CARD_TYPE)); result.add(new PanelSetting(LangHelper.translate("msg.nc.cbInfoPanelEnergyStorage"), DISPLAY_STORAGE, CARD_TYPE)); result.add(new PanelSetting(LangHelper.translate("msg.nc.cbInfoPanelEnergyFree"), DISPLAY_FREE, CARD_TYPE)); result.add(new PanelSetting(LangHelper.translate("msg.nc.cbInfoPanelEnergyPercentage"), DISPLAY_PERCENTAGE, CARD_TYPE)); return result; } }