-
-
Notifications
You must be signed in to change notification settings - Fork 103
/
ItemHelper.java
64 lines (50 loc) · 2.66 KB
/
ItemHelper.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package net.aufdemrand.denizen.nms.interfaces;
import net.aufdemrand.denizen.nms.enums.EntityAttribute;
import net.aufdemrand.denizen.nms.util.EntityAttributeModifier;
import net.aufdemrand.denizen.nms.util.PlayerProfile;
import net.aufdemrand.denizen.nms.util.jnbt.CompoundTag;
import net.aufdemrand.denizen.nms.util.jnbt.Tag;
import org.bukkit.Color;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import java.util.*;
public interface ItemHelper {
String getInternalNameFromMaterial(Material material);
Material getMaterialFromInternalName(String internalName);
String getJsonString(ItemStack itemStack);
PlayerProfile getSkullSkin(ItemStack itemStack);
ItemStack setSkullSkin(ItemStack itemStack, PlayerProfile playerProfile);
ItemStack addNbtData(ItemStack itemStack, String key, Tag value);
CompoundTag getNbtData(ItemStack itemStack);
ItemStack setNbtData(ItemStack itemStack, CompoundTag compoundTag);
default Map<EntityAttribute, List<EntityAttributeModifier>> getAttributeModifiers(ItemStack itemStack) {
Map<EntityAttribute, List<EntityAttributeModifier>> modifiers = new HashMap<>();
List<Tag> modifierList = getNbtData(itemStack).getList("AttributeModifiers");
for (Tag tag : modifierList) {
if (!(tag instanceof CompoundTag)) {
continue;
}
CompoundTag modifier = (CompoundTag) tag;
EntityAttribute attribute = EntityAttribute.getByName(modifier.getString("AttributeName"));
if (attribute == null) {
continue;
}
if (!modifiers.containsKey(attribute)) {
modifiers.put(attribute, new ArrayList<>());
}
UUID uuid = new UUID(modifier.getLong("UUIDMost"), modifier.getLong("UUIDLeast"));
String name = modifier.getString("Name");
EntityAttributeModifier.Operation operation = EntityAttributeModifier.Operation.values()[modifier.getInt("Operation")];
if (operation == null) {
continue;
}
double amount = modifier.getDouble("Amount");
modifiers.get(attribute).add(new EntityAttributeModifier(uuid, name, operation, amount));
}
return modifiers;
}
ItemStack setAttributeModifiers(ItemStack itemStack, Map<EntityAttribute, List<EntityAttributeModifier>> modifiers);
PotionEffect getPotionEffect(PotionEffectType type, int duration, int amplifier, boolean ambient, boolean particles, Color color, boolean icon);
}