Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package net.minecraft.item;
- import com.google.common.collect.Multimap;
- import net.minecraft.block.Block;
- import net.minecraft.block.material.Material;
- import net.minecraft.block.state.IBlockState;
- import net.minecraft.creativetab.CreativeTabs;
- import net.minecraft.entity.EntityLivingBase;
- import net.minecraft.entity.SharedMonsterAttributes;
- import net.minecraft.entity.ai.attributes.AttributeModifier;
- import net.minecraft.init.Blocks;
- import net.minecraft.inventory.EntityEquipmentSlot;
- import net.minecraft.util.math.BlockPos;
- import net.minecraft.world.World;
- import net.minecraftforge.fml.relauncher.Side;
- import net.minecraftforge.fml.relauncher.SideOnly;
- public class ItemSword extends Item
- {
- private final float attackDamage;
- private final Item.ToolMaterial material;
- public ItemSword(Item.ToolMaterial material)
- {
- this.material = material;
- this.maxStackSize = 1;
- this.setMaxDamage(material.getMaxUses());
- this.setCreativeTab(CreativeTabs.COMBAT);
- this.attackDamage = 3.0F + material.getDamageVsEntity();
- }
- /**
- * Returns the amount of damage this item will deal. One heart of damage is equal to 2 damage points.
- */
- public float getDamageVsEntity()
- {
- return this.material.getDamageVsEntity();
- }
- public float getStrVsBlock(ItemStack stack, IBlockState state)
- {
- Block block = state.getBlock();
- if (block == Blocks.WEB)
- {
- return 15.0F;
- }
- else
- {
- Material material = state.getMaterial();
- return material != Material.PLANTS && material != Material.VINE && material != Material.CORAL && material != Material.LEAVES && material != Material.GOURD ? 1.0F : 1.5F;
- }
- }
- /**
- * Current implementations of this method in child classes do not use the entry argument beside ev. They just raise
- * the damage on the stack.
- */
- public boolean hitEntity(ItemStack stack, EntityLivingBase target, EntityLivingBase attacker)
- {
- stack.damageItem(1, attacker);
- return true;
- }
- /**
- * Called when a Block is destroyed using this Item. Return true to trigger the "Use Item" statistic.
- */
- public boolean onBlockDestroyed(ItemStack stack, World worldIn, IBlockState state, BlockPos pos, EntityLivingBase entityLiving)
- {
- if ((double)state.getBlockHardness(worldIn, pos) != 0.0D)
- {
- stack.damageItem(2, entityLiving);
- }
- return true;
- }
- /**
- * Check whether this Item can harvest the given Block
- */
- public boolean canHarvestBlock(IBlockState blockIn)
- {
- return blockIn.getBlock() == Blocks.WEB;
- }
- /**
- * Returns True is the item is renderer in full 3D when hold.
- */
- @SideOnly(Side.CLIENT)
- public boolean isFull3D()
- {
- return true;
- }
- /**
- * Return the enchantability factor of the item, most of the time is based on material.
- */
- public int getItemEnchantability()
- {
- return this.material.getEnchantability();
- }
- /**
- * Return the name for this tool's material.
- */
- public String getToolMaterialName()
- {
- return this.material.toString();
- }
- /**
- * Return whether this item is repairable in an anvil.
- */
- public boolean getIsRepairable(ItemStack toRepair, ItemStack repair)
- {
- ItemStack mat = this.material.getRepairItemStack();
- if (!mat.isEmpty() && net.minecraftforge.oredict.OreDictionary.itemMatches(mat, repair, false)) return true;
- return super.getIsRepairable(toRepair, repair);
- }
- /**
- * Gets a map of item attribute modifiers, used by ItemSword to increase hit damage.
- */
- public Multimap<String, AttributeModifier> getItemAttributeModifiers(EntityEquipmentSlot equipmentSlot)
- {
- Multimap<String, AttributeModifier> multimap = super.getItemAttributeModifiers(equipmentSlot);
- if (equipmentSlot == EntityEquipmentSlot.MAINHAND)
- {
- multimap.put(SharedMonsterAttributes.ATTACK_DAMAGE.getName(), new AttributeModifier(ATTACK_DAMAGE_MODIFIER, "Weapon modifier", (double)this.attackDamage, 0));
- multimap.put(SharedMonsterAttributes.ATTACK_SPEED.getName(), new AttributeModifier(ATTACK_SPEED_MODIFIER, "Weapon modifier", -2.4000000953674316D, 0));
- }
- return multimap;
- }
- }
Add Comment
Please, Sign In to add comment