package shedar.mods.ic2.nuclearcontrol.crossmod.appeng; import appeng.tile.crafting.TileCraftingMonitorTile; import net.minecraft.item.Item; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChunkCoordinates; import net.minecraft.util.StatCollector; import net.minecraft.world.World; 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 ItemCardAppeng extends ItemCardEnergySensorLocation { public ItemCardAppeng() { this.setTextureName("nuclearcontrol:cardAEMonitor"); this.setUnlocalizedName("AppengCard"); } public static final int DISPLAY_BYTES = 1; public static final int DISPLAY_ITEMS = 2; public static final int DISPLAY_CRAFTER = 4; public static final int DISPLAY_CRAFTSTACK = 8; //public static final int DISPLAY_TEMP = 16; public static final UUID CARD_TYPE1 = new UUID(0, 2); @Override public UUID getCardType() { return CARD_TYPE1; } @Override public CardState update(World world, ICardWrapper card, int range) { ChunkCoordinates target = card.getTarget(); if(target == null) return CardState.NO_TARGET; int targetType = card.getInt("targetType"); if(targetType == 1) { TileEntity check = world.getTileEntity(target.posX, target.posY, target.posZ); if (check instanceof TileEntityNetworkLink) { TileEntityNetworkLink tileNetworkLink = (TileEntityNetworkLink) check; card.setInt("ByteTotal", tileNetworkLink.getTOTALBYTES()); card.setInt("UsedBytes", tileNetworkLink.getUSEDBYTES()); card.setInt("ItemsTotal", tileNetworkLink.getITEMTYPETOTAL()); card.setInt("UsedItems", tileNetworkLink.getUSEDITEMTYPE()); return CardState.OK; } else { return CardState.NO_TARGET; } } else if(targetType == 2){ TileEntity check = world.getTileEntity(target.posX, target.posY, target.posZ); if(check instanceof TileCraftingMonitorTile){ TileCraftingMonitorTile monitorTile = (TileCraftingMonitorTile) check; Item crafter; int size; if(monitorTile.getJobProgress() != null){ crafter = monitorTile.getJobProgress().getItemStack().getItem(); size = (int) monitorTile.getJobProgress().getStackSize(); }else{ crafter = CrossAppeng.cardAppeng; size = 0; } card.setInt("ITEMSTACK", Item.getIdFromItem(crafter)); card.setInt("STACKSIZE", size); return CardState.OK; } } else{ return CardState.NO_TARGET; } return CardState.NO_TARGET; } @Override public CardState update(TileEntity panel, ICardWrapper card, int range) { ChunkCoordinates target = card.getTarget(); if(target == null) return CardState.NO_TARGET; int targetType = card.getInt("targetType"); if(targetType == 1) { TileEntity check = panel.getWorldObj().getTileEntity(target.posX, target.posY, target.posZ); if (check instanceof TileEntityNetworkLink) { TileEntityNetworkLink tileNetworkLink = (TileEntityNetworkLink) check; card.setInt("ByteTotal", tileNetworkLink.getTOTALBYTES()); card.setInt("UsedBytes", tileNetworkLink.getUSEDBYTES()); card.setInt("ItemsTotal", tileNetworkLink.getITEMTYPETOTAL()); card.setInt("UsedItems", tileNetworkLink.getUSEDITEMTYPE()); return CardState.OK; } else { return CardState.NO_TARGET; } } else if(targetType == 2){ TileEntity check = panel.getWorldObj().getTileEntity(target.posX, target.posY, target.posZ); if(check instanceof TileCraftingMonitorTile){ TileCraftingMonitorTile monitorTile = (TileCraftingMonitorTile) check; Item crafter; int size; if(monitorTile.getJobProgress() != null){ crafter = monitorTile.getJobProgress().getItemStack().getItem(); size = (int) monitorTile.getJobProgress().getStackSize(); }else{ crafter = CrossAppeng.cardAppeng; size = 0; } card.setInt("ITEMSTACK", Item.getIdFromItem(crafter)); card.setInt("STACKSIZE", size); return CardState.OK; } } else{ return CardState.NO_TARGET; } return CardState.NO_TARGET; } @Override public List<PanelString> getStringData(int displaySettings, ICardWrapper card, boolean showLabels) { List<PanelString> result = new LinkedList<PanelString>(); PanelString line; int TYPE = card.getInt("targetType"); if(TYPE == 1) { int byteTotal = card.getInt("ByteTotal"); int usedBytes = card.getInt("UsedBytes"); int items = card.getInt("ItemsTotal"); int itemsUsed = card.getInt("UsedItems"); //Total Bytes if ((displaySettings & DISPLAY_BYTES) > 0) { line = new PanelString(); line.textRight = String.format(StatCollector.translateToLocal("msg.nc.InfoPanelAE.DisplayBytes"), usedBytes, byteTotal); result.add(line); } //Used Items if ((displaySettings & DISPLAY_ITEMS) > 0) { line = new PanelString(); line.textRight = String.format(StatCollector.translateToLocal("msg.nc.InfoPanelAE.DisplayItem"), itemsUsed, items); result.add(line); } } else if(TYPE == 2){ int stackSize = card.getInt("STACKSIZE"); Item item = Item.getItemById(card.getInt("ITEMSTACK")); String localName = "item.null.name"; try { localName = StatCollector.translateToLocal(item.getUnlocalizedName() + ".name"); }catch(NullPointerException e){} if(localName == "item.null.name" || localName.equals("Applied Energistics Card")){ localName = StatCollector.translateToLocal("msg.null.craft");} //Crafting item if ((displaySettings & DISPLAY_CRAFTER) > 0) { line = new PanelString(); line.textLeft = StringUtils.getFormatted("msg.nc.InfoPanelAE.CraftItemMake", localName, showLabels); result.add(line); } //Crafting Stacks if ((displaySettings & DISPLAY_CRAFTSTACK) > 0) { line = new PanelString(); line.textLeft = StringUtils.getFormatted("msg.nc.InfoPanelAE.CraftAMT", stackSize, showLabels); result.add(line); } } return result; } @Override public List<PanelSetting> getSettingsList() { List<PanelSetting> result = new ArrayList<PanelSetting>(4); result.add(new PanelSetting(LangHelper.translate("msg.nc.InfoPanelAE.Bytes"), DISPLAY_BYTES, CARD_TYPE)); result.add(new PanelSetting(LangHelper.translate("msg.nc.InfoPanelAE.Items"), DISPLAY_ITEMS, CARD_TYPE)); result.add(new PanelSetting(LangHelper.translate("msg.nc.InfoPanelAE.CraftItem"), DISPLAY_CRAFTER, CARD_TYPE)); result.add(new PanelSetting(LangHelper.translate("msg.nc.InfoPanelAE.CraftStack"), DISPLAY_CRAFTSTACK, CARD_TYPE)); return result; } }