Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

Is it possible to change attack speed and damage on different tools. I know on the axe it makes you change it.

All help is appreciated! :D

~ Ronaldi2001

  • Author

Ya I want to set it for my own tools. I want it so that there is no wait time and 100 damage.

~ Ronaldi2001

  • Author

I don't see it being overrided I just see where it is being implemented in ItemTool.

~ Ronaldi2001

  • Author

How exactly would I put it in my tool class that I want the damage be 100 and attack speed to be +10. I looked in the ItemTool call but I don't see what i'm supposed to do.

~ Ronaldi2001

this.damageVsEntity(100) ?

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

  • Author

Code In the sword class:

 

package ronaldi2001.MoreItems.tools;

import java.util.List;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item.ToolMaterial;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemSword;
import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import ronaldi2001.MoreItems.ColorfulText;
import ronaldi2001.MoreItems.main.MoreItems;

public class UltimateSword extends ItemSword {

private final float attackDamage;

public UltimateSword(String unlocalizedName, ToolMaterial material) {
	super(material);
	this.setUnlocalizedName(unlocalizedName);
	this.setCreativeTab(MoreItems.tabMoreItems);
	this.attackDamage = 99.0F;

}

@Override
    public boolean hasEffect(ItemStack par1ItemStack)
    {
    return true;
    }

@SideOnly(Side.CLIENT)
public void addInformation(ItemStack itemstack, EntityPlayer player, List datalist, boolean bool){
	datalist.add(TextFormatting.YELLOW + ColorfulText.ultimate("No Durability")+TextFormatting.RESET+"");
}
}

 

The outcome in Minecraft:

 

https://www.dropbox.com/s/zj1kl3q2pu77x6b/Ultimate%20Sword%20In%20Inventory.png?dl=0

~ Ronaldi2001

  • Author

I put all this in. I would assume that it would work with this but it doesn't.

package ronaldi2001.MoreItems.tools;

import java.util.List;

import com.google.common.collect.Multimap;

import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.ai.attributes.AttributeModifier;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.Item.ToolMaterial;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemSword;
import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import ronaldi2001.MoreItems.ColorfulText;
import ronaldi2001.MoreItems.init.MoreItemsTools;
import ronaldi2001.MoreItems.main.MoreItems;

public class UltimateSword extends ItemSword {

    private final float attackDamage;
    private final Item.ToolMaterial material;

public UltimateSword(Item.ToolMaterial material) {
	super(MoreItemsTools.ULTIMATETOOLS);
	this.material = material;
	this.setUnlocalizedName("ultimate_sword");
	this.setCreativeTab(MoreItems.tabMoreItems);
        this.attackDamage = 99.0F + material.getDamageVsEntity();
}

    public float getDamageVsEntity()
    {
        return this.material.getDamageVsEntity();
    }

@Override
    public boolean hasEffect(ItemStack par1ItemStack)
    {
    return true;
    }

@SideOnly(Side.CLIENT)
public void addInformation(ItemStack itemstack, EntityPlayer player, List datalist, boolean bool){
	datalist.add(TextFormatting.YELLOW + ColorfulText.ultimate("No Durability")+TextFormatting.RESET+"");
}

    public Multimap<String, AttributeModifier> getItemAttributeModifiers(EntityEquipmentSlot equipmentSlot)
    {
        Multimap<String, AttributeModifier> multimap = super.getItemAttributeModifiers(equipmentSlot);

        if (equipmentSlot == EntityEquipmentSlot.MAINHAND)
        {
            multimap.put(SharedMonsterAttributes.ATTACK_DAMAGE.getAttributeUnlocalizedName(), new AttributeModifier(ATTACK_DAMAGE_MODIFIER, "Weapon modifier", (double)this.attackDamage, 0));
            multimap.put(SharedMonsterAttributes.ATTACK_SPEED.getAttributeUnlocalizedName(), new AttributeModifier(ATTACK_SPEED_MODIFIER, "Weapon modifier", -2.4000000953674316D, 0));
        }

        return multimap;
    }
}

~ Ronaldi2001

  • Author

What I have is the first thing I tried but it didn't work so idk. but this is the line in my class where I register the sword:

 

	GameRegistry.registerItem(ultimate_sword = new UltimateSword(ULTIMATETOOLS), "ultimate_sword");

 

With the .registerItem striked out.

 

~ Ronaldi2001

registerItem is struck-out because it's deprecated.  Use GameRegistry.register()

Be sure to call setRegistryName

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

  • Author

When I switch registerItem() to just register() it says I need to change it to either registerItem() or registerBlock().

~ Ronaldi2001

  • Author

Well, read the error message maybe?

 

I did and what should be there I have know idea?

 

Also holy crap that is an awful font.

 

That is my own handwriting and I turned it into a font.

~ Ronaldi2001

  • Author

What I said was wrong not every tool allows me to set the damageVsEntity and attackSpeed. The two tools that I am having trouble with is the Sword and Hoe.

~ Ronaldi2001

  • Author

I did it the same way I did and you said that should work but its not.

 

I put all this in. I would assume that it would work with this but it doesn't.

package ronaldi2001.MoreItems.tools;

import java.util.List;

import com.google.common.collect.Multimap;

import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.ai.attributes.AttributeModifier;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.Item.ToolMaterial;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemSword;
import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import ronaldi2001.MoreItems.ColorfulText;
import ronaldi2001.MoreItems.init.MoreItemsTools;
import ronaldi2001.MoreItems.main.MoreItems;

public class UltimateSword extends ItemSword {

    private final float attackDamage;
    private final Item.ToolMaterial material;

public UltimateSword(Item.ToolMaterial material) {
	super(MoreItemsTools.ULTIMATETOOLS);
	this.material = material;
	this.setUnlocalizedName("ultimate_sword");
	this.setCreativeTab(MoreItems.tabMoreItems);
        this.attackDamage = 99.0F + material.getDamageVsEntity();
}

    public float getDamageVsEntity()
    {
        return this.material.getDamageVsEntity();
    }

@Override
    public boolean hasEffect(ItemStack par1ItemStack)
    {
    return true;
    }

@SideOnly(Side.CLIENT)
public void addInformation(ItemStack itemstack, EntityPlayer player, List datalist, boolean bool){
	datalist.add(TextFormatting.YELLOW + ColorfulText.ultimate("No Durability")+TextFormatting.RESET+"");
}

    public Multimap<String, AttributeModifier> getItemAttributeModifiers(EntityEquipmentSlot equipmentSlot)
    {
        Multimap<String, AttributeModifier> multimap = super.getItemAttributeModifiers(equipmentSlot);

        if (equipmentSlot == EntityEquipmentSlot.MAINHAND)
        {
            multimap.put(SharedMonsterAttributes.ATTACK_DAMAGE.getAttributeUnlocalizedName(), new AttributeModifier(ATTACK_DAMAGE_MODIFIER, "Weapon modifier", (double)this.attackDamage, 0));
            multimap.put(SharedMonsterAttributes.ATTACK_SPEED.getAttributeUnlocalizedName(), new AttributeModifier(ATTACK_SPEED_MODIFIER, "Weapon modifier", -2.4000000953674316D, 0));
        }

        return multimap;
    }
}

 

You don't need half that code...  But yes, this should work. Are you actually using your sword class?

 

~ Ronaldi2001

  • Author

Should I override ItemTool instead?

This question makes no sense, you cannot override a class.

All you need to do is extend ItemSword and override

getAttributeModifiers(EntityEquipmentSlot, ItemStack)

to provide whatever modifiers you want.

 

When I said override I meant extend but I got It now thank you so much!!!

~ Ronaldi2001

Guest
This topic is now closed to further replies.

Important Information

By using this site, you agree to our Terms of Use.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.