فهرست منبع

Support `MATERIAL|data` format in treasures.yml

Allows users to use the same material type for multiple treasures in
treasures.yml

Fixes #1965
TfT_02 11 سال پیش
والد
کامیت
10dd7619bf
2فایلهای تغییر یافته به همراه14 افزوده شده و 10 حذف شده
  1. 1 0
      Changelog.txt
  2. 13 10
      src/main/java/com/gmail/nossr50/config/treasure/TreasureConfig.java

+ 1 - 0
Changelog.txt

@@ -8,6 +8,7 @@ Key:
   - Removal
 
 Version 1.5.01-dev
+ + Added support for `MATERIAL|data` format in treasures.yml
  = Fixed bug where the Updater was running on the main thread.
  ! Vanished players no longer get hit by AoE effects
 

+ 13 - 10
src/main/java/com/gmail/nossr50/config/treasure/TreasureConfig.java

@@ -160,26 +160,29 @@ public class TreasureConfig extends ConfigLoader {
             // Validate all the things!
             List<String> reason = new ArrayList<String>();
 
+            String[] treasureInfo = treasureName.split("[|]");
+            String materialName = treasureInfo[0];
+
             /*
              * Material, Amount, and Data
              */
             Material material;
 
-            if (treasureName.contains("POTION")) {
+            if (materialName.contains("POTION")) {
                 material = Material.POTION;
             }
-            else if (treasureName.contains("INK_SACK")) {
+            else if (materialName.contains("INK_SACK")) {
                 material = Material.INK_SACK;
             }
             else {
-                material = Material.matchMaterial(treasureName);
+                material = Material.matchMaterial(materialName);
             }
 
             int amount = config.getInt(type + "." + treasureName + ".Amount");
-            int data = config.getInt(type + "." + treasureName + ".Data");
+            short data = (treasureInfo.length == 2) ? Byte.valueOf(treasureInfo[1]) : (short) config.getInt(type + "." + treasureName + ".Data");
 
             if (material == null) {
-                reason.add("Invalid material: " + treasureName);
+                reason.add("Invalid material: " + materialName);
             }
 
             if (amount <= 0) {
@@ -228,8 +231,8 @@ public class TreasureConfig extends ConfigLoader {
              */
             ItemStack item = null;
 
-            if (treasureName.contains("POTION")) {
-                String potionType = treasureName.substring(7);
+            if (materialName.contains("POTION")) {
+                String potionType = materialName.substring(7);
 
                 try {
                     item = new Potion(PotionType.valueOf(potionType.toUpperCase().trim())).toItemStack(amount);
@@ -238,8 +241,8 @@ public class TreasureConfig extends ConfigLoader {
                     reason.add("Invalid Potion_Type: " + potionType);
                 }
             }
-            else if (treasureName.contains("INK_SACK")) {
-                String color = treasureName.substring(9);
+            else if (materialName.contains("INK_SACK")) {
+                String color = materialName.substring(9);
 
                 try {
                     Dye dye = new Dye();
@@ -252,7 +255,7 @@ public class TreasureConfig extends ConfigLoader {
                 }
             }
             else if (material != null) {
-                item = new ItemStack(material, amount, (short) data);
+                item = new ItemStack(material, amount, data);
 
                 if (config.contains(type + "." + treasureName + ".Custom_Name")) {
                     ItemMeta itemMeta = item.getItemMeta();