/* * This file is part of Matter Overdrive * Copyright (c) 2015., Simeon Radivoev, All rights reserved. * * Matter Overdrive is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Matter Overdrive is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Matter Overdrive. If not, see <http://www.gnu.org/licenses>. */ package matteroverdrive.items.includes; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import matteroverdrive.api.inventory.IUpgrade; import matteroverdrive.util.MOEnergyHelper; import matteroverdrive.util.MOStringHelper; import matteroverdrive.util.MatterHelper; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagList; import net.minecraft.util.EnumChatFormatting; import net.minecraftforge.common.util.Constants; import org.lwjgl.input.Keyboard; import java.util.List; public class MOMachineBlockItem extends ItemBlock { public MOMachineBlockItem(Block block) { super(block); } @SideOnly(Side.CLIENT) @Override public void addInformation(ItemStack stack, EntityPlayer player, List infos, boolean p_77624_4_) { if (Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT)) { if(MOStringHelper.hasTranslation(getUnlocalizedName() + ".details")) { infos.add(EnumChatFormatting.GRAY + MOStringHelper.translateToLocal(getUnlocalizedName() + ".details")); } if(stack.hasTagCompound()) { if (stack.getTagCompound().hasKey("Energy") && stack.getTagCompound().hasKey("MaxEnergy")) { infos.add(EnumChatFormatting.YELLOW + MOEnergyHelper.formatEnergy(stack.getTagCompound().getInteger("Energy"), stack.getTagCompound().getInteger("MaxEnergy"))); if (stack.getTagCompound().hasKey("PowerSend") && stack.getTagCompound().hasKey("PowerReceive")) { infos.add("Send/Receive: " + MOStringHelper.formatNumber(stack.getTagCompound().getInteger("PowerSend")) + "/" + MOStringHelper.formatNumber(stack.getTagCompound().getInteger("PowerReceive")) + MOEnergyHelper.ENERGY_UNIT + "/t"); } } if (stack.getTagCompound().hasKey("Matter") && stack.getTagCompound().hasKey("MaxMatter")) { infos.add(EnumChatFormatting.BLUE + MatterHelper.formatMatter(stack.getTagCompound().getInteger("Matter"), stack.getTagCompound().getInteger("MaxMatter"))); if (stack.getTagCompound().hasKey("MatterSend") && stack.getTagCompound().hasKey("MatterReceive")) { infos.add(EnumChatFormatting.DARK_BLUE + "Send/Receive: " + MOStringHelper.formatNumber(stack.getTagCompound().getInteger("MatterSend")) + "/" + MOStringHelper.formatNumber(stack.getTagCompound().getInteger("MatterReceive")) + MatterHelper.MATTER_UNIT + "/t"); } } showItems(stack, player, infos); } } else { infos.add(MOStringHelper.MORE_INFO); } } public String getItemStackDisplayName(ItemStack itemStack) { if (itemStack.hasTagCompound()) { return super.getItemStackDisplayName(itemStack) + String.format(EnumChatFormatting.AQUA + " [%s]" + EnumChatFormatting.RESET, MOStringHelper.translateToLocal("item.info.configured")); }else { return super.getItemStackDisplayName(itemStack); } } @Override public int getDamage(ItemStack stack) { if(stack.hasTagCompound() && stack.getTagCompound().hasKey("Energy") && stack.getTagCompound().hasKey("MaxEnergy")) { return stack.getTagCompound().getInteger("MaxEnergy") - stack.getTagCompound().getInteger("Energy") + 1; } return 0; } @Override public int getDisplayDamage(ItemStack stack) { return this.getDamage(stack); } @Override public int getMaxDamage(ItemStack stack) { if(stack.hasTagCompound() && stack.getTagCompound().hasKey("MaxEnergy")) { return stack.getTagCompound().getInteger("MaxEnergy"); } return 0; } private void showItems(ItemStack itemStack, EntityPlayer player, List infos) { NBTTagList stackTagList = itemStack.getTagCompound().getCompoundTag("Machine").getTagList("Items", Constants.NBT.TAG_COMPOUND); if (stackTagList.tagCount() > 0) { infos.add(""); infos.add(EnumChatFormatting.YELLOW + "Inventory:"); for (int i = 0; i < stackTagList.tagCount(); i++) { ItemStack stack = ItemStack.loadItemStackFromNBT(stackTagList.getCompoundTagAt(i)); if (stack.getItem() instanceof IUpgrade) { infos.add(" " + EnumChatFormatting.GREEN + stack.getDisplayName()); }else { infos.add(" " + infos.add(stack.getDisplayName())); } } } } @Override public boolean showDurabilityBar(ItemStack stack) { return getDamage(stack) > 0; } }