Browse Source

item attribute snuvi commands

Kajetan Johannes Hammerle 2 years ago
parent
commit
902763e78d
1 changed files with 23 additions and 1 deletions
  1. 23 1
      src/main/java/me/km/snuviscript/commands/ItemCommands.java

+ 23 - 1
src/main/java/me/km/snuviscript/commands/ItemCommands.java

@@ -1,6 +1,8 @@
 package me.km.snuviscript.commands;
 
 import java.util.List;
+import java.util.Map;
+import com.google.common.collect.Multimap;
 import me.hammerle.snuviscript.code.ScriptManager;
 import me.hammerle.snuviscript.code.SnuviUtils;
 import me.km.utils.ItemStackUtils;
@@ -88,7 +90,7 @@ public class ItemCommands {
         });
         sm.registerFunction("item.hide", (sc, in) -> {
             int flag = 0;
-            switch (in[1].getString(sc)) {
+            switch(in[1].getString(sc)) {
                 case "enchantments":
                     flag = 1;
                     break;
@@ -125,6 +127,26 @@ public class ItemCommands {
                             AttributeModifier.Operation.values()[in[4].getInt(sc)]),
                     (EquipmentSlotType) in[2].get(sc));
         });
+        sm.registerConsumer("item.clearattributes", (sc, in) -> {
+            ItemStack stack = (ItemStack) in[0].get(sc);
+            if(stack.hasTag()) {
+                stack.getTag().remove("AttributeModifiers");
+            }
+        });
+        sm.registerFunction("item.hasattributes", (sc, in) -> {
+            ItemStack stack = (ItemStack) in[0].get(sc);
+            return stack.hasTag() && stack.getTag().contains("AttributeModifiers", 9);
+        });
+        sm.registerConsumer("item.adddefaulttags", (sc, in) -> {
+            ItemStack stack = (ItemStack) in[0].get(sc);
+            for(EquipmentSlotType slot : EquipmentSlotType.values()) {
+                Multimap<Attribute, AttributeModifier> attributes =
+                        stack.getAttributeModifiers(slot);
+                for(Map.Entry<Attribute, AttributeModifier> e : attributes.entries()) {
+                    stack.addAttributeModifier(e.getKey(), e.getValue(), slot);
+                }
+            }
+        });
         sm.registerFunction("item.clone", (sc, in) -> ((ItemStack) in[0].get(sc)).copy());
         sm.registerFunction("item.getmaxdamage",
                 (sc, in) -> (double) ((ItemStack) in[0].get(sc)).getMaxDamage());