@Override public float getDestroySpeed(@Nonnull ItemStack stack, @Nonnull IBlockState state) { if (ItemDarkSteelPickaxe.isToolEffective(state, stack)) { if (DarkSteelConfig.axePowerUsePerDamagePoint.get() <= 0 ? EnergyUpgradeManager.itemHasAnyPowerUpgrade(stack) : EnergyUpgradeManager.getEnergyStored(stack) > 0) { return toolMaterial.getEfficiency() + DarkSteelConfig.axeEfficiencyBoostWhenPowered.get(); } return toolMaterial.getEfficiency(); } return super.getDestroySpeed(stack, state); }
ToolSetVanilla(String name, ToolMaterial materialIn, String ingot) { this.name = name.toLowerCase(Locale.US); this.ingot = ingot; this.material = materialIn; /* BOW */ arrowDamage = material.getAttackDamage() / 4; arrowSpeed = material.getEfficiency() / 20; zoomMultiplier = MathHelper.clamp(material.getEfficiency() / 30, 0, zoomMultiplier * 2); /* FISHING ROD */ luckModifier = material.getHarvestLevel() / 2; speedModifier = (int) material.getEfficiency() / 3; }
ToolSet(String name, ToolMaterial materialIn, String ingot) { this.name = name.toLowerCase(Locale.US); this.ingot = ingot; this.material = materialIn; arrowDamage = material.getAttackDamage() / 4; arrowSpeed = material.getEfficiency() / 20; zoomMultiplier = MathHelper.clamp(material.getEfficiency() / 30, zoomMultiplier, zoomMultiplier * 2); luckModifier = material.getHarvestLevel() / 2; speedModifier = (int) material.getEfficiency() / 3; }
efficiency = material.getEfficiency(); attackDamage = typeDamage * material.getAttackDamage();
ItemTool toolItem = (ItemTool) testTool.getItem(); if (testTool.getDestroySpeed(blockState) >= toolItem.toolMaterial.getEfficiency()) {
private static void registerEmeraldMaterial() { MaterialRegistry.emeraldArmorMaterial = EnumHelper.addArmorMaterial(emeraldName, Const.MODRES + emeraldName, diamondDurability + 30, //was -2 affects DURABILITY new int[] { ArmorMaterial.DIAMOND.getDamageReductionAmount(EntityEquipmentSlot.FEET), ArmorMaterial.DIAMOND.getDamageReductionAmount(EntityEquipmentSlot.LEGS), ArmorMaterial.DIAMOND.getDamageReductionAmount(EntityEquipmentSlot.CHEST), ArmorMaterial.DIAMOND.getDamageReductionAmount(EntityEquipmentSlot.HEAD) }, ArmorMaterial.GOLD.getEnchantability(), ArmorMaterial.DIAMOND.getSoundEvent(), ArmorMaterial.DIAMOND.getToughness() + 1);//was / 2 MaterialRegistry.emeraldArmorMaterial.repairMaterial = new ItemStack(Items.EMERALD); //max uses is durability ex The number of uses this material allows. //as of 1.9.4 : (wood = 59, stone = 131, iron = 250, diamond = 1561, gold = 32) MaterialRegistry.emeraldToolMaterial = EnumHelper.addToolMaterial(emeraldName, ToolMaterial.DIAMOND.getHarvestLevel(), ToolMaterial.DIAMOND.getMaxUses(), //was - 261 ToolMaterial.DIAMOND.getEfficiency(), ToolMaterial.DIAMOND.getAttackDamage(), //was - 0.25F ToolMaterial.GOLD.getEnchantability()); MaterialRegistry.emeraldToolMaterial.setRepairItem(MaterialRegistry.emeraldArmorMaterial.repairMaterial); }
private static void registerPurpleMaterial() { ArmorMaterial mimicArmor = ArmorMaterial.DIAMOND; MaterialRegistry.powerArmorMaterial = EnumHelper.addArmorMaterial(MATERIALNAME, Const.MODRES + MATERIALNAME, diamondDurability * 2, // affects DURABILITY . 15 is the same as iron new int[] { mimicArmor.getDamageReductionAmount(EntityEquipmentSlot.FEET) + 1, mimicArmor.getDamageReductionAmount(EntityEquipmentSlot.LEGS) + 1, mimicArmor.getDamageReductionAmount(EntityEquipmentSlot.CHEST) + 1, mimicArmor.getDamageReductionAmount(EntityEquipmentSlot.HEAD) + 2 }, mimicArmor.getEnchantability() / 4, mimicArmor.getSoundEvent(), mimicArmor.getToughness() + 2); MaterialRegistry.powerArmorMaterial.repairMaterial = new ItemStack(Blocks.OBSIDIAN); //now the tool material MaterialRegistry.powerToolMaterial = EnumHelper.addToolMaterial(MATERIALNAME, ToolMaterial.DIAMOND.getHarvestLevel(), ToolMaterial.DIAMOND.getMaxUses() * 4, //was - 261 ToolMaterial.DIAMOND.getEfficiency(), ToolMaterial.DIAMOND.getAttackDamage() * 8, //best draconic evolution sword is 35 base, so this is not that crazy ToolMaterial.GOLD.getEnchantability() * 2); MaterialRegistry.powerToolMaterial.setRepairItem(MaterialRegistry.powerArmorMaterial.repairMaterial); }
@Override public float getWorkEffectiveness(WorkType type) { if (canWorkAt(type)) { float effectiveness = 1.f + this.getLevelingStats().getLevel() * 0.05F; Item item = getHeldItemMainhand().getItem(); if (item instanceof ItemTool) { effectiveness += ((ItemTool) item).toolMaterial.getEfficiency() * 0.05f; } else if (item instanceof ItemHoe) { ToolMaterial mat = ToolMaterial.valueOf(((ItemHoe) item).getMaterialName()); effectiveness += mat.getEfficiency() * 0.05f; } else if (item instanceof ItemHammer) { effectiveness += ((ItemHammer) item).getMaterial().getEfficiency() * 0.05f; } else if (item instanceof ItemQuill) { effectiveness += ((ItemQuill) item).getMaterial().getEfficiency() * 0.05f; } return effectiveness; } return 0.F; }
@Override public float getDestroySpeed(@Nonnull ItemStack stack, @Nonnull IBlockState state) { if (state.getMaterial() == Material.GLASS) { return toolMaterial.getEfficiency(); } if (useObsidianEffeciency(stack, state)) { return toolMaterial.getEfficiency() + DarkSteelConfig.pickEfficiencyBoostWhenPowered.get() + DarkSteelConfig.pickEfficiencyObsidian.get(); } if (isToolEffective(state, stack)) { if (DarkSteelConfig.pickPowerUsePerDamagePoint.get() <= 0 ? EnergyUpgradeManager.itemHasAnyPowerUpgrade(stack) : EnergyUpgradeManager.getEnergyStored(stack) > 0) { return toolMaterial.getEfficiency() + DarkSteelConfig.pickEfficiencyBoostWhenPowered.get(); } return toolMaterial.getEfficiency(); } return super.getDestroySpeed(stack, state); }
/** * Netherbrick is between stone and iron, still with stone harvest level */ private static void registerNetherMaterials() { MaterialRegistry.netherToolMaterial = EnumHelper.addToolMaterial("nether", ToolMaterial.STONE.getHarvestLevel(), (ToolMaterial.STONE.getMaxUses() + ToolMaterial.IRON.getMaxUses()) / 2, (ToolMaterial.STONE.getEfficiency() + //halfway in between ToolMaterial.IRON.getEfficiency()) / 2, ToolMaterial.IRON.getAttackDamage(), ToolMaterial.GOLD.getEnchantability()); MaterialRegistry.netherToolMaterial.setRepairItem(new ItemStack(Items.NETHERBRICK)); } }
/** * Sandstone is between wood and stone, with stone harvest level */ private static void registerSandstoneMaterials() { MaterialRegistry.sandstoneToolMaterial = EnumHelper.addToolMaterial("sandstone", ToolMaterial.STONE.getHarvestLevel(), (ToolMaterial.STONE.getMaxUses() + ToolMaterial.WOOD.getMaxUses()) / 2, (ToolMaterial.STONE.getEfficiency() + ToolMaterial.STONE.getEfficiency()) / 2, (ToolMaterial.STONE.getAttackDamage() + ToolMaterial.WOOD.getAttackDamage()) / 2.0F, ToolMaterial.GOLD.getEnchantability()); MaterialRegistry.sandstoneToolMaterial.setRepairItem(new ItemStack(Blocks.SANDSTONE)); }
@Override public float getDestroySpeed(ItemStack stack, IBlockState state) { return getActivated(stack) ? toolMaterial.getEfficiency() : 1.0F; }
private static int toolPowerCompare(ItemStack stack1, ItemStack stack2) { ToolMaterial mat1 = ReflectionHelper.getPrivateValue(ItemTool.class, (ItemTool) stack1.getItem(), LibObfuscation.TOOL_MATERIAL); ToolMaterial mat2 = ReflectionHelper.getPrivateValue(ItemTool.class, (ItemTool) stack2.getItem(), LibObfuscation.TOOL_MATERIAL); return (int) (mat2.getEfficiency() * 100 - mat1.getEfficiency() * 100); }