Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package sirsalty.wodolotry.items;
- import java.util.Collection;
- import java.util.List;
- import java.util.Optional;
- import java.util.Set;
- import java.util.UUID;
- import com.google.common.collect.Multimap;
- import com.google.common.collect.Sets;
- import net.minecraft.block.Block;
- import net.minecraft.entity.SharedMonsterAttributes;
- import net.minecraft.entity.ai.attributes.AttributeModifier;
- import net.minecraft.entity.ai.attributes.IAttribute;
- import net.minecraft.entity.player.EntityPlayer;
- import net.minecraft.inventory.EntityEquipmentSlot;
- import net.minecraft.item.ItemStack;
- import net.minecraft.item.ItemSword;
- import net.minecraft.item.ItemTool;
- import net.minecraft.util.ResourceLocation;
- import net.minecraft.util.text.TextFormatting;
- import net.minecraftforge.common.util.EnumHelper;
- import sirsalty.wodolotry.Main;
- import sirsalty.wodolotry.Reference;
- import sirsalty.wodolotry.Util;
- public class ItemSoulStealer extends ItemTool {
- private static final Set<Block> EFFECTIVE_BLOCKS = Sets.newHashSet(new Block[] {});
- public ItemSoulStealer(String unlocalizedName, int uses, int damage) {
- super(EnumHelper.addToolMaterial(Reference.MODID, 0, uses, 0, damage, 0), EFFECTIVE_BLOCKS);
- this.setUnlocalizedName(unlocalizedName);
- this.setRegistryName(new ResourceLocation(Reference.MODID, unlocalizedName));
- this.setCreativeTab(Main.magic);
- }
- @Override
- public void addInformation(ItemStack stack, EntityPlayer playerIn, List<String> tooltip, boolean advanced) {
- super.addInformation(stack, playerIn, tooltip, advanced);
- tooltip.add(TextFormatting.GOLD + Util.getLang().localize("soulstealer.tooltip"));
- }
- @Override
- public Multimap<String, AttributeModifier> getAttributeModifiers(EntityEquipmentSlot slot, ItemStack stack) {
- final Multimap<String, AttributeModifier> modifiers = super.getAttributeModifiers(slot, stack);
- if (slot == EntityEquipmentSlot.MAINHAND) {
- replaceModifier(modifiers, SharedMonsterAttributes.ATTACK_SPEED, ATTACK_SPEED_MODIFIER, 2);
- }
- return modifiers;
- }
- /**
- * Replace a modifier in the {@link Multimap} with a copy that's had {@code multiplier} applied to its value.
- *
- * @param modifierMultimap The MultiMap
- * @param attribute The attribute being modified
- * @param id The ID of the modifier
- * @param multiplier The multiplier to apply
- */
- private void replaceModifier(Multimap<String, AttributeModifier> modifierMultimap, IAttribute attribute, UUID id, double multiplier) {
- // Get the modifiers for the specified attribute
- final Collection<AttributeModifier> modifiers = modifierMultimap.get(attribute.getAttributeUnlocalizedName());
- // Find the modifier with the specified ID, if any
- final Optional<AttributeModifier> modifierOptional = modifiers.stream().filter(attributeModifier -> attributeModifier.getID().equals(id)).findFirst();
- if (modifierOptional.isPresent()) { // If it exists,
- final AttributeModifier modifier = modifierOptional.get();
- modifiers.remove(modifier); // Remove it
- modifiers.add(new AttributeModifier(modifier.getID(), modifier.getName(), modifier.getAmount() * multiplier, modifier.getOperation())); // Add the new modifier
- }
- }
- }
Add Comment
Please, Sign In to add comment