@SideOnly(Side.CLIENT) @Override public void initGui() { EntityPlayer player = this.mc.player; ItemStack stack = player.inventory.getCurrentItem(); NBTTagCompound nbt = NBTHelper.loadStackNBT(stack); if (player != null && stack != null && nbt != null && stack.getItem() instanceof ItemShield) { attributes = new GuiButton[ShieldAttribute.SHIELD_ATTRIBUTES.size()]; for (int i = 0; i < attributes.length; i++) { attributes[i] = new GuiButton(i, width / 2 - 147, 60 + (i * 20), 75, 20, ShieldAttribute.SHIELD_ATTRIBUTES.get(i).getName(nbt)); this.buttonList.add(attributes[i]); attributes[i].enabled = false; } } }
@SideOnly(Side.CLIENT) @Override protected void actionPerformed(GuiButton button) throws IOException { EntityPlayerSP player = mc.player; ItemStack stack = player.inventory.getCurrentItem(); NBTTagCompound nbt = NBTHelper.loadStackNBT(stack); if (player != null && stack != null && nbt != null) { if (Experience.getAttributeTokens(nbt) > 0) { if (stack.getItem() instanceof ItemShield) { for (int i = 0; i < attributes.length; i++) { if (button == attributes[i]) Levels.network.sendToServer(new PacketAttributeSelection(i)); } } } } }
@SubscribeEvent(priority = EventPriority.HIGHEST) public void onTooltip(ItemTooltipEvent event) { ArrayList<String> tooltip = (ArrayList<String>) event.getToolTip(); ItemStack stack = event.getItemStack(); NBTTagCompound nbt = NBTHelper.loadStackNBT(stack); if (stack != null && nbt != null) { if (stack.getItem() instanceof ItemSword || stack.getItem() instanceof ItemArmor || stack.getItem() instanceof ItemBow || stack.getItem() instanceof ItemShield || stack.getItem() instanceof ItemTool) { Rarity rarity = Rarity.getRarity(nbt); if (rarity != Rarity.DEFAULT) { addTooltips(tooltip, stack, nbt); } } } }
@SubscribeEvent public void onCreateWeapon(PlayerTickEvent event) { if (!event.player.getEntityWorld().isRemote) { if (event.phase == Phase.START) { for (ItemStack stack : event.player.inventory.mainInventory) { if (stack != null && (stack.getItem() instanceof ItemSword || stack.getItem() instanceof ItemBow || stack.getItem() instanceof ItemArmor || stack.getItem() instanceof ItemShield)) { create(stack, event.player); } } } } }
@SubscribeEvent public void onPlayerDeath(PlayerDropsEvent event) { EntityPlayer player = event.getEntityPlayer(); Item item; for (int i = 0; i < event.getDrops().size(); i++) { item = event.getDrops().get(i).getEntityItem().getItem(); if (item != null && (item instanceof ItemSword || item instanceof ItemShield || item instanceof ItemArmor || item instanceof ItemBow)) { ItemStack stack = event.getDrops().get(i).getEntityItem(); NBTTagCompound nbt = NBTHelper.loadStackNBT(stack); if (nbt != null) { if (WeaponAttribute.SOUL_BOUND.hasAttribute(nbt) || ArmorAttribute.SOUL_BOUND.hasAttribute(nbt) || BowAttribute.SOUL_BOUND.hasAttribute(nbt) || ShieldAttribute.SOUL_BOUND.hasAttribute(nbt)) { event.getDrops().remove(i); player.inventory.addItemStackToInventory(stack); } } } } }
@SubscribeEvent public void autoShield(LivingAttackEvent event) { if (!(event.getEntityLiving() instanceof EntityPlayer)) return; if (!(event.getSource().getSourceOfDamage() instanceof EntityArrow)) return; ItemStack shield = ((EntityPlayer)event.getEntityLiving()).getHeldItemOffhand(); ItemStack emblem = BaublesApi.getBaublesHandler((EntityPlayer)event.getEntityLiving()).getStackInSlot(6); if (shield == null || emblem == null) return; if (emblem.getItem() != this || !(shield.getItem() instanceof ItemShield)) return; shield.attemptDamageItem(1, event.getEntityLiving().worldObj.rand); event.setCanceled(true); }
@SideOnly(Side.CLIENT) @Override protected void actionPerformed(GuiButton button) throws IOException { EntityPlayerSP player = mc.player; if (player != null) { ItemStack stack = player.inventory.getCurrentItem(); if (stack != null) { if (button == selection) { if (stack.getItem() instanceof ItemSword) { player.openGui(Levels.instance, GuiHandler.WEAPON_ATTRIBUTES, player.getEntityWorld(), (int) player.posX, (int) player.posY, (int) player.posZ); } else if (stack.getItem() instanceof ItemArmor) { player.openGui(Levels.instance, GuiHandler.ARMOR_ATTRIBUTES, player.getEntityWorld(), (int) player.posX, (int) player.posY, (int) player.posZ); } else if (stack.getItem() instanceof ItemBow) { player.openGui(Levels.instance, GuiHandler.BOW_ATTRIBUTES, player.getEntityWorld(), (int) player.posX, (int) player.posY, (int) player.posZ); } else if (stack.getItem() instanceof ItemShield) { player.openGui(Levels.instance, GuiHandler.SHIELD_ATTRIBUTES, player.getEntityWorld(), (int) player.posX, (int) player.posY, (int) player.posZ); } else if (stack.getItem() instanceof ItemTool) { //player.openGui(Levels.instance, GuiHandler., player.getEntityWorld(), (int) player.posX, (int) player.posY, (int) player.posZ); } } } } }
@SideOnly(Side.CLIENT) @Override public void drawScreen(int mouseX, int mouseY, float partialTicks) { this.drawDefaultBackground(); super.drawScreen(mouseX, mouseY, partialTicks); EntityPlayer player = this.mc.player; ItemStack stack = player.inventory.getCurrentItem(); NBTTagCompound nbt = NBTHelper.loadStackNBT(stack); if (player != null && stack != null && nbt != null && stack.getItem() instanceof ItemShield) { drawCenteredString(fontRendererObj, I18n.format("levels.misc.attributes"), width / 2, 20, 0xFFFFFF); drawCenteredString(fontRendererObj, I18n.format("levels.misc.attributes.tokens") + ": " + Experience.getAttributeTokens(nbt), width / 2 - 112, 40, 0xFFFFFF); drawCenteredString(fontRendererObj, I18n.format("levels.misc.attributes.current"), width / 2 + 112, 40, 0xFFFFFF); int k = -1; for (int i = 0; i < BowAttribute.BOW_ATTRIBUTES.size(); i++) { if (BowAttribute.BOW_ATTRIBUTES.get(i).hasAttribute(nbt)) { k++; drawCenteredString(fontRendererObj, BowAttribute.BOW_ATTRIBUTES.get(i).getName(nbt), width / 2 + 112, 60 + (10 * k), BowAttribute.BOW_ATTRIBUTES.get(i).getHex()); } } displayButtons(nbt); drawTooltips(nbt, mouseX, mouseY); } }
@SideOnly(Side.CLIENT) @SubscribeEvent public void onKeyPress(InputEvent.KeyInputEvent event) { KeyBinding l = ClientProxy.keyBindingL; Minecraft mc = Minecraft.getMinecraft(); EntityPlayer player = mc.player; if (player != null) { ItemStack stack = player.inventory.getCurrentItem(); if (stack != null) { Item current = stack.getItem(); if (current != null) { if (current instanceof ItemSword || current instanceof ItemTool || current instanceof ItemArmor || current instanceof ItemBow || current instanceof ItemShield) { if (l.isPressed()) { player.openGui(Levels.instance, GuiHandler.ITEM_INFORMATION, player.getEntityWorld(), (int) player.posX, (int) player.posY, (int) player.posZ); } } } } } }
/** * Draws the strings for the ability selection screen. * @param stack * @param abilities * @param nbt */ private void drawStrings(ItemStack stack, NBTTagCompound nbt) { Rarity rarity = Rarity.getRarity(nbt); drawCenteredString(fontRendererObj, stack.getDisplayName(), width / 2, 20, rarity.getHex()); drawString(fontRendererObj, I18n.format("levels.misc.rarity") + ": " + rarity.getName(), width / 2 - 50, 40, rarity.getHex()); drawCenteredString(fontRendererObj, I18n.format("levels.misc.attributes"), width / 2, 80, 0xFFFFFF); drawCenteredString(fontRendererObj, I18n.format("levels.misc.attributes.tokens") + ": " + Experience.getAttributeTokens(nbt), width / 2 - 112, 100, 0xFFFFFF); drawCenteredString(fontRendererObj, I18n.format("levels.misc.attributes.current"), width / 2 + 112, 100, 0xFFFFFF); if (Experience.getLevel(nbt) == Config.maxLevel) { drawString(fontRendererObj, I18n.format("levels.misc.level") + ": " + I18n.format("levels.misc.max"), width / 2 - 50, 50, 0xFFFFFF); drawString(fontRendererObj, I18n.format("levels.misc.experience") + ": " + I18n.format("levels.misc.max"), width / 2 - 50, 60, 0xFFFFFF); } else { drawString(fontRendererObj, I18n.format("levels.misc.level") + ": " + Experience.getLevel(nbt), width / 2 - 50, 50, 0xFFFFFF); drawString(fontRendererObj, I18n.format("levels.misc.experience") + ": " + Experience.getExperience(nbt) + " / " + Experience.getNextLevelExperience(Experience.getLevel(nbt)), width / 2 - 50, 60, 0xFFFFFF); } int k = -1; if (stack.getItem() instanceof ItemSword) { for (int i = 0; i < WeaponAttribute.WEAPON_ATTRIBUTES.size(); i++) { if (WeaponAttribute.WEAPON_ATTRIBUTES.get(i).hasAttribute(nbt)) { k++; drawCenteredString(fontRendererObj, WeaponAttribute.WEAPON_ATTRIBUTES.get(i).getName(nbt), width / 2 + 112, 115 + (10 * k), WeaponAttribute.WEAPON_ATTRIBUTES.get(i).getHex()); } } } else if (stack.getItem() instanceof ItemTool) { } else if (stack.getItem() instanceof ItemBow) { for (int i = 0; i < BowAttribute.BOW_ATTRIBUTES.size(); i++) { if (BowAttribute.BOW_ATTRIBUTES.get(i).hasAttribute(nbt)) { k++; drawCenteredString(fontRendererObj, BowAttribute.BOW_ATTRIBUTES.get(i).getName(nbt), width / 2 + 112, 115 + (10 * k), BowAttribute.BOW_ATTRIBUTES.get(i).getHex()); } } } else if (stack.getItem() instanceof ItemArmor) { for (int i = 0; i < ArmorAttribute.ARMOR_ATTRIBUTES.size(); i++) { if (ArmorAttribute.ARMOR_ATTRIBUTES.get(i).hasAttribute(nbt)) { k++; drawCenteredString(fontRendererObj, ArmorAttribute.ARMOR_ATTRIBUTES.get(i).getName(nbt), width / 2 + 112, 115 + (10 * k), ArmorAttribute.ARMOR_ATTRIBUTES.get(i).getHex()); } } } else if (stack.getItem() instanceof ItemShield) { for (int i = 0; i < ShieldAttribute.SHIELD_ATTRIBUTES.size(); i++) { if (ShieldAttribute.SHIELD_ATTRIBUTES.get(i).hasAttribute(nbt)) { k++; drawCenteredString(fontRendererObj, ShieldAttribute.SHIELD_ATTRIBUTES.get(i).getName(nbt), width / 2 + 112, 115 + (10 * k), ShieldAttribute.SHIELD_ATTRIBUTES.get(i).getHex()); } } } }