Posted April 30, 20214 yr Hello i'm trying to create a Custim item extending AxeItem and editing its attackdamage when breaking a block. 1. what method is the best to use in this case ? 2. how do i get the Custom item from an ItemStack? 3. how can i give the Player the modified item ? I'm currently using forge 1.16.5.
April 30, 20214 yr Author so i got this: @Override public Multimap<Attribute, AttributeModifier> getAttributeModifiers(EquipmentSlotType slot, ItemStack stack) { return super.getAttributeModifiers(slot, stack); } @Override public boolean mineBlock(ItemStack item, World w, BlockState state, BlockPos pos, LivingEntity entity) { PlayerEntity p = (PlayerEntity) entity; p.sendMessage(new StringTextComponent("test"), p.getUUID()); return super.mineBlock(item, w, state, pos, entity); } but how do i change the damage and the tooltip ? Edit: i mean the attackdamage Edited April 30, 20214 yr by Minimigamer
April 30, 20214 yr return a map that contains the attribute modifiers that you are going to add to the weapon (check SwordItem), but instead of create a constant one you want to add the modifiers dynamically (based on the stack's nbt tag) in the method getAttributeModifiers. Override addInformation to add tooltips. Edited April 30, 20214 yr by poopoodice
May 1, 20214 yr Author I got those methods: @Override public Multimap<Attribute, AttributeModifier> getAttributeModifiers(EquipmentSlotType slot, ItemStack stack) { return super.getAttributeModifiers(slot, stack); } @Override public boolean mineBlock(ItemStack item, World w, BlockState state, BlockPos pos, LivingEntity entity) { PlayerEntity p = (PlayerEntity) entity; p.sendMessage(new StringTextComponent("test"), p.getUUID()); return super.mineBlock(item, w, state, pos, entity); } but i have no idea how to set a AttributeModifier
May 1, 20214 yr Author I looked it up but i didnt get how to get an Attribute the Method: stack.addAttributeModifier(Attribute., AttributeModifier, slot); asks for an Attribute. and if that makes a difference my item class extends aceItem
May 1, 20214 yr Author Yea i know but how do i convert the uuid of the attribute to a Attribute object ?
May 1, 20214 yr Author this ?: ToolItem(float p_i48512_1_, float p_i48512_2_, IItemTier p_i48512_3_, java.util.Set<Block> p_i48512_4_, Item.Properties p_i48512_5_)
May 1, 20214 yr Author do you mean this: ? Constructor Detail ToolItem protected ToolItem(float attackDamageIn, float attackSpeedIn, IItemTier tier, java.util.Set<Block> effectiveBlocksIn, Item.Properties builder) i font know hat you mean can you please send me a link or something ?
May 1, 20214 yr Author alright got it. now i got this: @Override public Multimap<Attribute, AttributeModifier> getAttributeModifiers(EquipmentSlotType slot, ItemStack stack) { stack.addAttributeModifier(Attributes.ATTACK_DAMAGE, new AttributeModifier(BASE_ATTACK_DAMAGE_UUID, "new", minedBlocks*0.2, AttributeModifier.Operation.ADDITION), slot); return super.getAttributeModifiers(slot, stack); } but why can you no longer see the item properties like dmage when you hover over the item ingame ? Edited May 1, 20214 yr by Minimigamer
May 1, 20214 yr Author now i got this: @Override public Multimap<Attribute, AttributeModifier> getAttributeModifiers(EquipmentSlotType slot, ItemStack stack) { Multimap<Attribute, AttributeModifier> modifiers = super.getAttributeModifiers(slot, stack); modifiers.put(Attributes.ATTACK_DAMAGE, new AttributeModifier(BASE_ATTACK_DAMAGE_UUID, "Tool modifier", minedBlocks*0.2, AttributeModifier.Operation.ADDITION)); return modifiers; } but this throws an "java.lang.UnsupportedOperationException".
May 2, 20214 yr Author like this ? @Override public Multimap<Attribute, AttributeModifier> getAttributeModifiers(EquipmentSlotType slot, ItemStack stack) { Builder<Attribute, AttributeModifier> builder = ImmutableMultimap.builder(); builder.put(Attributes.ATTACK_DAMAGE, new AttributeModifier(BASE_ATTACK_DAMAGE_UUID, "Tool modifier", minedBlocks*0.2, AttributeModifier.Operation.ADDITION)); return builder.build(); }
May 2, 20214 yr Author I tried this: @Override public Multimap<Attribute, AttributeModifier> getAttributeModifiers(EquipmentSlotType slot, ItemStack stack) { Builder<Attribute, AttributeModifier> builder = ImmutableMultimap.builder(); builder.putAll(super.getAttributeModifiers(slot, stack)); builder.put(Attributes.ATTACK_DAMAGE, new AttributeModifier(BASE_ATTACK_DAMAGE_UUID, "Tool modifier", minedBlocks*0.2, AttributeModifier.Operation.ADDITION)); return builder.build(); }
May 2, 20214 yr Author but if you hover over the item ingame you are not able to see the damage and attackspeed
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.