2
0
nossr50 6 жил өмнө
parent
commit
12964a816d

+ 22 - 0
src/main/java/com/gmail/nossr50/config/hocon/serializers/RepairWildcardSerializer.java

@@ -0,0 +1,22 @@
+package com.gmail.nossr50.config.hocon.serializers;
+
+import com.gmail.nossr50.config.hocon.skills.repair.RepairWildcard;
+import com.google.common.reflect.TypeToken;
+import ninja.leaping.configurate.ConfigurationNode;
+import ninja.leaping.configurate.objectmapping.ObjectMappingException;
+import ninja.leaping.configurate.objectmapping.serialize.TypeSerializer;
+import org.checkerframework.checker.nullness.qual.NonNull;
+import org.checkerframework.checker.nullness.qual.Nullable;
+
+public class RepairWildcardSerializer implements TypeSerializer<RepairWildcard> {
+    @Nullable
+    @Override
+    public RepairWildcard deserialize(@NonNull TypeToken<?> type, @NonNull ConfigurationNode value) throws ObjectMappingException {
+        return null;
+    }
+
+    @Override
+    public void serialize(@NonNull TypeToken<?> type, @Nullable RepairWildcard obj, @NonNull ConfigurationNode value) throws ObjectMappingException {
+
+    }
+}

+ 16 - 2
src/main/java/com/gmail/nossr50/config/hocon/skills/repair/ConfigRepair.java

@@ -9,8 +9,7 @@ import ninja.leaping.configurate.objectmapping.Setting;
 import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;
 import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable;
 import org.bukkit.Material;
 import org.bukkit.Material;
 
 
-import java.util.ArrayList;
-import java.util.Arrays;
+import java.util.*;
 
 
 import static org.bukkit.Material.*;
 import static org.bukkit.Material.*;
 
 
@@ -18,6 +17,7 @@ import static org.bukkit.Material.*;
 public class ConfigRepair {
 public class ConfigRepair {
 
 
     public static final ArrayList<Repairable> CONFIG_REPAIRABLES_DEFAULTS;
     public static final ArrayList<Repairable> CONFIG_REPAIRABLES_DEFAULTS;
+    public static final HashSet<RepairWildcard> REPAIR_WILDCARDS_DEFAULTS;
     public static final Material[] PLANKS = new Material[]{OAK_PLANKS, BIRCH_PLANKS, DARK_OAK_PLANKS, ACACIA_PLANKS, JUNGLE_PLANKS, SPRUCE_PLANKS};
     public static final Material[] PLANKS = new Material[]{OAK_PLANKS, BIRCH_PLANKS, DARK_OAK_PLANKS, ACACIA_PLANKS, JUNGLE_PLANKS, SPRUCE_PLANKS};
 
 
     static {
     static {
@@ -70,6 +70,13 @@ public class ConfigRepair {
         CONFIG_REPAIRABLES_DEFAULTS.add(new Repairable(DIAMOND_LEGGINGS, DIAMOND, 1, 0, 2D));
         CONFIG_REPAIRABLES_DEFAULTS.add(new Repairable(DIAMOND_LEGGINGS, DIAMOND, 1, 0, 2D));
         CONFIG_REPAIRABLES_DEFAULTS.add(new Repairable(DIAMOND_BOOTS, DIAMOND, 1, 0, 2D));
         CONFIG_REPAIRABLES_DEFAULTS.add(new Repairable(DIAMOND_BOOTS, DIAMOND, 1, 0, 2D));
 
 
+        REPAIR_WILDCARDS_DEFAULTS = new HashSet<>();
+
+        RepairWildcard repairWildcardPlanks = new RepairWildcard("Planks");
+        List<String> planksList = Arrays.asList(new String[]{OAK_PLANKS.getKey().toString(),
+                BIRCH_PLANKS.getKey().toString(), DARK_OAK_PLANKS.getKey().toString(), ACACIA_PLANKS.getKey().toString(), JUNGLE_PLANKS.getKey().toString(), SPRUCE_PLANKS.getKey().toString()});
+        repairWildcardPlanks.addMatchCandidates(planksList);
+        REPAIR_WILDCARDS_DEFAULTS.add(repairWildcardPlanks);
     }
     }
 
 
     @Setting(value = "General")
     @Setting(value = "General")
@@ -90,6 +97,9 @@ public class ConfigRepair {
             "\nTIP: You can omit \"minecraft:\" from the Name ID if you want to, for example you can write \"red_wool\" instead of \"minecraft:red_wool\"")
             "\nTIP: You can omit \"minecraft:\" from the Name ID if you want to, for example you can write \"red_wool\" instead of \"minecraft:red_wool\"")
     private ArrayList<Repairable> configRepairablesList = CONFIG_REPAIRABLES_DEFAULTS;
     private ArrayList<Repairable> configRepairablesList = CONFIG_REPAIRABLES_DEFAULTS;
 
 
+    @Setting(value = "Z-Repairables-Wildcards", comment = "Used to define an alias that can be matched to several materials.")
+    private HashSet<RepairWildcard> repairWildcards = new HashSet<>();
+
     public ConfigRepairGeneral getRepairGeneral() {
     public ConfigRepairGeneral getRepairGeneral() {
         return repairGeneral;
         return repairGeneral;
     }
     }
@@ -113,4 +123,8 @@ public class ConfigRepair {
     public ArrayList<Repairable> getConfigRepairablesList() {
     public ArrayList<Repairable> getConfigRepairablesList() {
         return configRepairablesList;
         return configRepairablesList;
     }
     }
+
+    public HashSet<RepairWildcard> getRepairWildcards() {
+        return repairWildcards;
+    }
 }
 }

+ 42 - 0
src/main/java/com/gmail/nossr50/config/hocon/skills/repair/RepairWildcard.java

@@ -0,0 +1,42 @@
+package com.gmail.nossr50.config.hocon.skills.repair;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+public class RepairWildcard {
+
+    private String wildcardName;
+    private ArrayList<String> matchCandidates;
+
+    public RepairWildcard(String wildcardName) {
+        this.wildcardName = wildcardName;
+        matchCandidates = new ArrayList<>();
+    }
+
+    public void addMatchCandidates(List<String> arrayList) {
+        matchCandidates.addAll(arrayList);
+    }
+
+    public ArrayList<String> getMatchCandidates() {
+        return matchCandidates;
+    }
+
+    public String getWildcardName() {
+        return wildcardName;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (!(o instanceof RepairWildcard)) return false;
+        RepairWildcard that = (RepairWildcard) o;
+        return getWildcardName().equals(that.getWildcardName()) &&
+                Objects.equals(getMatchCandidates(), that.getMatchCandidates());
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(getWildcardName(), getMatchCandidates());
+    }
+}