Jump to content

[Solved][1.12.2] Changing Sword damage Dynamically


Elrol_Arrowsend

Recommended Posts

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
Link to comment
Share on other sites

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
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.