Search in sources :

Example 1 with IAdornedTool

use of toolbox.common.items.tools.IAdornedTool in project Adventurers-Toolbox by the-realest-stu.

the class SpecialToolAbilityHandler method onTooltip.

@SideOnly(Side.CLIENT)
@SubscribeEvent(priority = EventPriority.HIGH)
public void onTooltip(ItemTooltipEvent event) {
    if (event.getItemStack() != null && event.getEntityPlayer() != null) {
        ItemStack stack = event.getItemStack();
        Item item = stack.getItem();
        if (item instanceof ItemATAxe || item instanceof ItemATDagger || item instanceof ItemATHammer || item instanceof ItemATHandpick || item instanceof ItemATHoe || item instanceof ItemATMace || item instanceof ItemATPickaxe || item instanceof ItemATShovel || item instanceof ItemATSword) {
            boolean shift = GameSettings.isKeyDown(Minecraft.getMinecraft().gameSettings.keyBindSneak);
            boolean advanced = event.getFlags().isAdvanced();
            List<String> tooltip = event.getToolTip();
            tooltip.clear();
            String s = stack.getDisplayName();
            s = s + TextFormatting.RESET;
            if (advanced) {
                String s1 = "";
                if (!s.isEmpty()) {
                    s = s + " (";
                    s1 = ")";
                }
                int i = Item.getIdFromItem(item);
                if (stack.getHasSubtypes()) {
                    s = s + String.format("#%04d/%d%s", i, stack.getItemDamage(), s1);
                } else {
                    s = s + String.format("#%04d%s", i, s1);
                }
            }
            tooltip.add(s);
            int i1 = 0;
            if (shift) {
                tooltip.add("");
                if (item instanceof IHeadTool) {
                    HeadMaterial mat = IHeadTool.getHeadMat(stack);
                    tooltip.add(TextFormatting.YELLOW + " " + I18n.translateToLocal("desc.head.name") + ": " + I18n.translateToLocal("guide.mat." + mat.getName() + ".name"));
                }
                if (item instanceof IBladeTool) {
                    HeadMaterial mat = IBladeTool.getBladeMat(stack);
                    tooltip.add(TextFormatting.YELLOW + " " + I18n.translateToLocal("desc.blade.name") + ": " + I18n.translateToLocal("guide.mat." + mat.getName() + ".name"));
                }
                if (item instanceof ICrossguardTool) {
                    HeadMaterial mat = ICrossguardTool.getCrossguardMat(stack);
                    tooltip.add(TextFormatting.YELLOW + " " + I18n.translateToLocal("desc.crossguard.name") + ": " + I18n.translateToLocal("guide.mat." + mat.getName() + ".name"));
                }
                if (item instanceof IHaftTool) {
                    HaftMaterial mat = IHaftTool.getHaftMat(stack);
                    tooltip.add(TextFormatting.YELLOW + " " + I18n.translateToLocal("desc.haft.name") + ": " + I18n.translateToLocal("guide.mat." + mat.getName() + ".name"));
                }
                if (item instanceof IHandleTool) {
                    HandleMaterial mat = IHandleTool.getHandleMat(stack);
                    tooltip.add(TextFormatting.YELLOW + " " + I18n.translateToLocal("desc.handle.name") + ": " + I18n.translateToLocal("guide.mat." + mat.getName() + ".name"));
                }
                if (item instanceof IAdornedTool) {
                    AdornmentMaterial mat = IAdornedTool.getAdornmentMat(stack);
                    if (!mat.getName().equals("null")) {
                        tooltip.add(TextFormatting.YELLOW + " " + I18n.translateToLocal("desc.adornment.name") + ": " + I18n.translateToLocal("guide.mat." + mat.getName() + ".name"));
                    }
                }
                tooltip.add("");
            }
            if (stack.hasTagCompound() && stack.getTagCompound().hasKey("HideFlags", 99)) {
                i1 = stack.getTagCompound().getInteger("HideFlags");
            }
            if ((i1 & 32) == 0) {
                item.addInformation(stack, event.getEntityPlayer() == null ? null : event.getEntityPlayer().world, tooltip, event.getFlags());
            }
            if (item instanceof ItemSword && isVoidTool(stack) && CommonProxy.thaumcraftLoaded) {
                tooltip.add(TextFormatting.GOLD + I18n.translateToLocal("enchantment.special.sapless"));
            }
            if (stack.hasTagCompound()) {
                if ((i1 & 1) == 0) {
                    NBTTagList nbttaglist = stack.getEnchantmentTagList();
                    for (int j = 0; j < nbttaglist.tagCount(); ++j) {
                        NBTTagCompound nbttagcompound = nbttaglist.getCompoundTagAt(j);
                        int k = nbttagcompound.getShort("id");
                        int l = nbttagcompound.getShort("lvl");
                        Enchantment enchantment = Enchantment.getEnchantmentByID(k);
                        if (enchantment != null) {
                            tooltip.add(enchantment.getTranslatedName(l));
                        }
                    }
                }
                if (stack.getTagCompound().hasKey("display", 10)) {
                    NBTTagCompound nbttagcompound1 = stack.getTagCompound().getCompoundTag("display");
                    if (nbttagcompound1.getTagId("Lore") == 9) {
                        NBTTagList nbttaglist3 = nbttagcompound1.getTagList("Lore", 8);
                        if (!nbttaglist3.hasNoTags()) {
                            for (int l1 = 0; l1 < nbttaglist3.tagCount(); ++l1) {
                                tooltip.add(TextFormatting.DARK_PURPLE + "" + TextFormatting.ITALIC + nbttaglist3.getStringTagAt(l1));
                            }
                        }
                    }
                }
            }
            Multimap<String, AttributeModifier> multimap = stack.getAttributeModifiers(EntityEquipmentSlot.MAINHAND);
            if ((i1 & 2) == 0) {
                if (!tooltip.get(tooltip.size() - 1).isEmpty()) {
                    tooltip.add("");
                }
                if (item instanceof ItemATPickaxe || item instanceof ItemATHandpick || item instanceof ItemATHammer || item instanceof ItemATAxe || item instanceof ItemATShovel) {
                    int harvestLvl = -1;
                    float efficiency = 0F;
                    if (item instanceof ItemATPickaxe) {
                        harvestLvl = ((ItemATPickaxe) item).getHarvestLevel(stack);
                        efficiency = ((ItemATPickaxe) item).getEfficiency(stack);
                    } else if (item instanceof ItemATHandpick) {
                        harvestLvl = ((ItemATHandpick) item).getHarvestLevel(stack);
                        efficiency = ((ItemATHandpick) item).getEfficiency(stack);
                    } else if (item instanceof ItemATHammer) {
                        harvestLvl = ((ItemATHammer) item).getHarvestLevel(stack);
                        efficiency = ((ItemATHammer) item).getEfficiency(stack);
                    } else if (item instanceof ItemATAxe) {
                        harvestLvl = ((ItemATAxe) item).getHarvestLevel(stack);
                        efficiency = ((ItemATAxe) item).getEfficiency(stack);
                    } else if (item instanceof ItemATShovel) {
                        harvestLvl = ((ItemATShovel) item).getHarvestLevel(stack);
                        efficiency = ((ItemATShovel) item).getEfficiency(stack);
                    }
                    tooltip.add(I18n.translateToLocal("desc.harvest_level.name") + ": " + harvestLvl);
                    tooltip.add(I18n.translateToLocal("desc.efficiency.name") + ": " + ItemStack.DECIMALFORMAT.format(efficiency));
                }
                for (Entry<String, AttributeModifier> entry : multimap.entries()) {
                    AttributeModifier attributemodifier = entry.getValue();
                    double d0 = attributemodifier.getAmount();
                    if (event.getEntityPlayer() != null && (shift || item instanceof ItemSword)) {
                        if (attributemodifier.getID() == ItemBase.getAttackDamageUUID()) {
                            d0 = d0 + event.getEntityPlayer().getEntityAttribute(SharedMonsterAttributes.ATTACK_DAMAGE).getBaseValue();
                            d0 = d0 + (double) EnchantmentHelper.getModifierForCreature(stack, EnumCreatureAttribute.UNDEFINED);
                            double d1 = d0 * 100.0D;
                            ;
                            if (attributemodifier.getOperation() != 1 && attributemodifier.getOperation() != 2) {
                                d1 = d0;
                            }
                            tooltip.add(I18n.translateToLocal("desc.attack_damage.name") + ": " + ItemStack.DECIMALFORMAT.format(d1));
                        } else if (attributemodifier.getID() == ItemBase.getAttackSpeedUUID()) {
                            d0 += event.getEntityPlayer().getEntityAttribute(SharedMonsterAttributes.ATTACK_SPEED).getBaseValue();
                            double d1 = d0 * 100.0D;
                            ;
                            if (attributemodifier.getOperation() != 1 && attributemodifier.getOperation() != 2) {
                                d1 = d0;
                            }
                            tooltip.add(I18n.translateToLocal("desc.attack_speed.name") + ": " + ItemStack.DECIMALFORMAT.format(d1));
                        }
                    }
                }
                if (shift) {
                    tooltip.add(I18n.translateToLocal("desc.enchantability.name") + ": " + item.getItemEnchantability(stack));
                }
                if (stack.isItemDamaged() && stack.isItemStackDamageable()) {
                    tooltip.add(I18n.translateToLocal("desc.durability.name") + ": " + (stack.getMaxDamage() - stack.getItemDamage()) + " / " + ItemStack.DECIMALFORMAT.format(stack.getMaxDamage()));
                } else if (stack.isItemStackDamageable()) {
                    tooltip.add(I18n.translateToLocal("desc.durability.name") + ": " + stack.getMaxDamage());
                }
            }
            if (stack.hasTagCompound() && stack.getTagCompound().getBoolean("Unbreakable") && (i1 & 4) == 0) {
                tooltip.add(TextFormatting.BLUE + I18n.translateToLocal("item.unbreakable"));
            }
            if (stack.hasTagCompound() && stack.getTagCompound().hasKey("CanDestroy", 9) && (i1 & 8) == 0) {
                NBTTagList nbttaglist1 = stack.getTagCompound().getTagList("CanDestroy", 8);
                if (!nbttaglist1.hasNoTags()) {
                    tooltip.add("");
                    tooltip.add(TextFormatting.GRAY + I18n.translateToLocal("item.canBreak"));
                    for (int j1 = 0; j1 < nbttaglist1.tagCount(); ++j1) {
                        Block block = Block.getBlockFromName(nbttaglist1.getStringTagAt(j1));
                        if (block != null) {
                            tooltip.add(TextFormatting.DARK_GRAY + block.getLocalizedName());
                        } else {
                            tooltip.add(TextFormatting.DARK_GRAY + "missingno");
                        }
                    }
                }
            }
            if (advanced) {
                tooltip.add(TextFormatting.DARK_GRAY + ((ResourceLocation) Item.REGISTRY.getNameForObject(item)).toString());
                tooltip.add(TextFormatting.DARK_GRAY + I18n.translateToLocalFormatted("item.nbt_tags", stack.hasTagCompound() ? stack.getTagCompound().getKeySet().size() : 0));
            }
        }
    }
}
Also used : AdornmentMaterial(api.materials.AdornmentMaterial) ItemATShovel(toolbox.common.items.tools.ItemATShovel) ItemATSword(toolbox.common.items.tools.ItemATSword) IHaftTool(toolbox.common.items.tools.IHaftTool) ItemATHammer(toolbox.common.items.tools.ItemATHammer) NBTTagCompound(net.minecraft.nbt.NBTTagCompound) ICrossguardTool(toolbox.common.items.tools.ICrossguardTool) NBTTagList(net.minecraft.nbt.NBTTagList) Item(net.minecraft.item.Item) EntityItem(net.minecraft.entity.item.EntityItem) ItemATAxe(toolbox.common.items.tools.ItemATAxe) HandleMaterial(api.materials.HandleMaterial) ResourceLocation(net.minecraft.util.ResourceLocation) IHeadTool(toolbox.common.items.tools.IHeadTool) ItemSword(net.minecraft.item.ItemSword) ItemATHoe(toolbox.common.items.tools.ItemATHoe) ItemATPickaxe(toolbox.common.items.tools.ItemATPickaxe) HeadMaterial(api.materials.HeadMaterial) IBladeTool(toolbox.common.items.tools.IBladeTool) AttributeModifier(net.minecraft.entity.ai.attributes.AttributeModifier) IHandleTool(toolbox.common.items.tools.IHandleTool) Block(net.minecraft.block.Block) ItemStack(net.minecraft.item.ItemStack) ItemATMace(toolbox.common.items.tools.ItemATMace) Enchantment(net.minecraft.enchantment.Enchantment) IAdornedTool(toolbox.common.items.tools.IAdornedTool) ItemATDagger(toolbox.common.items.tools.ItemATDagger) ItemATHandpick(toolbox.common.items.tools.ItemATHandpick) HaftMaterial(api.materials.HaftMaterial) SubscribeEvent(net.minecraftforge.fml.common.eventhandler.SubscribeEvent) SideOnly(net.minecraftforge.fml.relauncher.SideOnly)

Example 2 with IAdornedTool

use of toolbox.common.items.tools.IAdornedTool in project Adventurers-Toolbox by the-realest-stu.

the class BookPageTool method getDisplayStack.

@Override
public ItemStack getDisplayStack() {
    ItemStack stack = new ItemStack(item);
    NBTTagCompound tag = new NBTTagCompound();
    if (item instanceof IHeadTool) {
        tag.setString(IHeadTool.HEAD_TAG, Materials.randomHead().getName());
    }
    if (item instanceof IBladeTool) {
        tag.setString(IBladeTool.BLADE_TAG, Materials.randomHead().getName());
    }
    if (item instanceof ICrossguardTool) {
        tag.setString(ICrossguardTool.CROSSGUARD_TAG, Materials.randomHead().getName());
    }
    if (item instanceof IHaftTool) {
        tag.setString(IHaftTool.HAFT_TAG, Materials.randomHaft().getName());
    }
    if (item instanceof IHandleTool) {
        tag.setString(IHandleTool.HANDLE_TAG, Materials.randomHandle().getName());
    }
    if (item instanceof IAdornedTool) {
        tag.setString(IAdornedTool.ADORNMENT_TAG, Materials.randomAdornment().getName());
    }
    stack.setTagCompound(tag);
    return stack;
}
Also used : ICrossguardTool(toolbox.common.items.tools.ICrossguardTool) IHaftTool(toolbox.common.items.tools.IHaftTool) IHandleTool(toolbox.common.items.tools.IHandleTool) NBTTagCompound(net.minecraft.nbt.NBTTagCompound) IBladeTool(toolbox.common.items.tools.IBladeTool) ItemStack(net.minecraft.item.ItemStack) IHeadTool(toolbox.common.items.tools.IHeadTool) IAdornedTool(toolbox.common.items.tools.IAdornedTool)

Example 3 with IAdornedTool

use of toolbox.common.items.tools.IAdornedTool in project Adventurers-Toolbox by the-realest-stu.

the class PartReplacementRecipe method matches.

@Override
public boolean matches(InventoryCrafting inv, World worldIn) {
    boolean foundTool = false;
    boolean foundPart = false;
    for (int i = 0; i < inv.getSizeInventory(); i++) {
        ItemStack temp = inv.getStackInSlot(i).copy();
        if (temp.isEmpty())
            continue;
        Item item = temp.getItem();
        if (!foundTool && item instanceof IAdornedTool) {
            foundTool = true;
            continue;
        }
        if (!foundPart) {
            for (ItemStack test : ModRecipes.adornment_map.keySet()) {
                if (!foundPart && ItemStack.areItemsEqual(test, temp) && ItemStack.areItemStackTagsEqual(test, temp)) {
                    foundPart = true;
                }
            }
            if (foundPart)
                continue;
        }
        if (!foundTool && !foundPart)
            return false;
    }
    return (foundTool && foundPart);
}
Also used : Item(net.minecraft.item.Item) ItemStack(net.minecraft.item.ItemStack) IAdornedTool(toolbox.common.items.tools.IAdornedTool)

Example 4 with IAdornedTool

use of toolbox.common.items.tools.IAdornedTool in project Adventurers-Toolbox by the-realest-stu.

the class PartReplacementRecipe method getCraftingResult.

@Override
public ItemStack getCraftingResult(InventoryCrafting inv) {
    ItemStack oldTool = ItemStack.EMPTY;
    ItemStack newPart = ItemStack.EMPTY;
    for (int i = 0; i < inv.getSizeInventory(); i++) {
        ItemStack temp = inv.getStackInSlot(i);
        if (temp.isEmpty())
            continue;
        Item item = temp.getItem();
        if (oldTool.isEmpty() && item instanceof IAdornedTool) {
            oldTool = temp.copy();
            continue;
        }
        if (newPart.isEmpty()) {
            for (ItemStack test : ModRecipes.adornment_map.keySet()) {
                if (newPart.isEmpty() && ItemStack.areItemsEqual(test, temp) && ItemStack.areItemStackTagsEqual(test, temp)) {
                    newPart = test;
                }
            }
            if (!newPart.isEmpty())
                continue;
        }
    }
    if (oldTool.isEmpty() || newPart.isEmpty())
        return ItemStack.EMPTY;
    ItemStack newTool = oldTool.copy();
    AdornmentMaterial oldMat = IAdornedTool.getAdornmentMat(oldTool);
    AdornmentMaterial newMat = ModRecipes.adornment_map.get(newPart);
    if (oldMat == newMat || newMat == null)
        return ItemStack.EMPTY;
    setPartMaterial(newTool, IAdornedTool.ADORNMENT_TAG, newMat.getName());
    int oldDamage = oldTool.getItemDamage();
    if (oldDamage > newTool.getMaxDamage())
        return ItemStack.EMPTY;
    newTool.setItemDamage(oldDamage);
    return newTool;
}
Also used : Item(net.minecraft.item.Item) AdornmentMaterial(api.materials.AdornmentMaterial) ItemStack(net.minecraft.item.ItemStack) IAdornedTool(toolbox.common.items.tools.IAdornedTool)

Example 5 with IAdornedTool

use of toolbox.common.items.tools.IAdornedTool in project Adventurers-Toolbox by the-realest-stu.

the class SpecialToolAbilityHandler method onPrismarineAdornedToolMine.

@SubscribeEvent
public void onPrismarineAdornedToolMine(PlayerEvent.BreakSpeed event) {
    if (event.getEntityPlayer() == null) {
        return;
    }
    EntityPlayer player = event.getEntityPlayer();
    ItemStack stack = event.getEntityPlayer().getHeldItemMainhand();
    if (stack.getItem() instanceof IAdornedTool && IAdornedTool.getAdornmentMat(stack) == ModMaterials.ADORNMENT_PRISMARINE && player.isInWater()) {
        event.setNewSpeed(event.getOriginalSpeed() * 2F);
    }
}
Also used : EntityPlayer(net.minecraft.entity.player.EntityPlayer) ItemStack(net.minecraft.item.ItemStack) IAdornedTool(toolbox.common.items.tools.IAdornedTool) SubscribeEvent(net.minecraftforge.fml.common.eventhandler.SubscribeEvent)

Aggregations

ItemStack (net.minecraft.item.ItemStack)5 IAdornedTool (toolbox.common.items.tools.IAdornedTool)5 Item (net.minecraft.item.Item)3 AdornmentMaterial (api.materials.AdornmentMaterial)2 NBTTagCompound (net.minecraft.nbt.NBTTagCompound)2 SubscribeEvent (net.minecraftforge.fml.common.eventhandler.SubscribeEvent)2 IBladeTool (toolbox.common.items.tools.IBladeTool)2 ICrossguardTool (toolbox.common.items.tools.ICrossguardTool)2 IHaftTool (toolbox.common.items.tools.IHaftTool)2 IHandleTool (toolbox.common.items.tools.IHandleTool)2 IHeadTool (toolbox.common.items.tools.IHeadTool)2 HaftMaterial (api.materials.HaftMaterial)1 HandleMaterial (api.materials.HandleMaterial)1 HeadMaterial (api.materials.HeadMaterial)1 Block (net.minecraft.block.Block)1 Enchantment (net.minecraft.enchantment.Enchantment)1 AttributeModifier (net.minecraft.entity.ai.attributes.AttributeModifier)1 EntityItem (net.minecraft.entity.item.EntityItem)1 EntityPlayer (net.minecraft.entity.player.EntityPlayer)1 ItemSword (net.minecraft.item.ItemSword)1