Jump to content

Recommended Posts

Posted (edited)

I have went through the forums and multiple posts and have came up with the following code. However, the bit of code doesn't seem to change anything, regardless of what I have tried.

 

My goal is to have the damage increase depending on the amount of mobs killed, and also to increase the speed of the sword based on this. Neither of the modified stats are having any effect on the sword in the game. To test the method, I changed the attackMod to a flat 100 and it still only did 8 damage.

 

@Override
	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)super.getAttackDamage() + 100, 0));
            multimap.put(SharedMonsterAttributes.ATTACK_SPEED.getName(), new AttributeModifier(ATTACK_SPEED_MODIFIER, "Weapon modifier", -2.4D + speedMod, 0));
        }

        return multimap;
    }

 

The whole file can be found here

If any other code is needed, ask and I shall provide. Thanks in advance!

Edited by Elrol_Arrowsend
Solved again
Posted

This happens because you are extending ItemSword and instantinating the base MultiMap through a super invocation. That returns you a multimap with the sword's base values already in place set by ItemSword. Your additions are not taken by the game since they are already applied by ItemSword, and they don't override the old ones because it's a MultiMap. 

Basically create a new empty multimap instead of grabbing the one from ItemSword.

  • Like 1
Posted

Well, while testing it seems like I found an issue, while I hold just one sword, it works perfectly, but if I have one sword that has 0 souls, and another with 1000, they both have the same attack and speed that was modified by the sword with 1000 souls. Where exactly have I messed up?

 

Here is the current code that I am working with.

Posted
10 minutes ago, Elrol_Arrowsend said:

Is there a way to get the current held item in the getItemAttributeModifiers method?

Use the overload of that method that takes in an ItemStack as one of it's parameters.

  • Like 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

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