Kaynağa Gözat

Add support for data value ranges in blocks.yml

For example `Block_1|0-5`
TfT_02 11 yıl önce
ebeveyn
işleme
a80cdaff71

+ 42 - 22
src/main/java/com/gmail/nossr50/config/mods/CustomBlockConfig.java

@@ -68,39 +68,59 @@ public class CustomBlockConfig extends ConfigLoader {
             Material blockMaterial = Material.matchMaterial(blockInfo[0]);
 
             if (blockMaterial == null) {
-                plugin.getLogger().warning("Invalid material name. This item will be skipped. - " + blockInfo[0]);
+                plugin.getLogger().warning("Invalid material name. [" + blockInfo[0] + "] This item will be skipped. - " + blockName);
                 continue;
             }
 
+            if (blockInfo.length == 2) {
+                String[] dataInfo = blockInfo[1].split("[-]");
+
+                if (dataInfo.length == 2) {
+                    byte startData = Byte.valueOf(dataInfo[0]);
+                    byte endData = Byte.valueOf(dataInfo[1]);
+
+                    for (byte blockData = startData; blockData <= endData; blockData++) {
+                        MaterialData blockMaterialData = new MaterialData(blockMaterial, blockData);
+                        loadBlock(skillType, blockList, blockName, blockMaterialData);
+                    }
+
+                    return;
+                }
+            }
+
             byte blockData = (blockInfo.length == 2) ? Byte.valueOf(blockInfo[1]) : 0;
+
             MaterialData blockMaterialData = new MaterialData(blockMaterial, blockData);
+            loadBlock(skillType, blockList, blockName, blockMaterialData);
+        }
+    }
 
-            if (blockList != null) {
-                blockList.add(blockMaterialData);
-            }
+    private void loadBlock(String skillType, List<MaterialData> blockList, String blockName, MaterialData blockMaterialData) {
+        if (blockList != null) {
+            blockList.add(blockMaterialData);
+        }
 
-            if (skillType.equals("Ability_Blocks")) {
-                continue;
-            }
+        if (skillType.equals("Ability_Blocks")) {
+            return;
+        }
 
-            int xp = config.getInt(skillType + "." + blockName + ".XP_Gain");
-            int smeltingXp = 0;
+        int xp = config.getInt(skillType + "." + blockName + ".XP_Gain");
+        int smeltingXp = 0;
 
-            if (skillType.equals("Mining") && config.getBoolean(skillType + "." + blockName + ".Is_Ore")) {
-                customOres.add(blockMaterialData);
-                smeltingXp = config.getInt(skillType + "." + blockName + ".Smelting_XP_Gain", xp / 10);
+        if (skillType.equals("Mining") && config.getBoolean(skillType + "." + blockName + ".Is_Ore")) {
+            customOres.add(blockMaterialData);
+            smeltingXp = config.getInt(skillType + "." + blockName + ".Smelting_XP_Gain", xp / 10);
+        }
+        else if (skillType.equals("Woodcutting")) {
+            if (config.getBoolean(skillType + "." + blockName + ".Is_Log")) {
+                customLogs.add(blockMaterialData);
             }
-            else if (skillType.equals("Woodcutting")) {
-                if (config.getBoolean(skillType + "." + blockName + ".Is_Log")) {
-                    customLogs.add(blockMaterialData);
-                }
-                else {
-                    customLeaves.add(blockMaterialData);
-                    xp = 0; // Leaves don't grant XP
-                }
+            else {
+                customLeaves.add(blockMaterialData);
+                xp = 0; // Leaves don't grant XP
             }
-
-            customBlockMap.put(blockMaterialData, new CustomBlock(xp, config.getBoolean(skillType + "." + blockName + ".Double_Drops_Enabled"), smeltingXp));
         }
+
+        customBlockMap.put(blockMaterialData, new CustomBlock(xp, config.getBoolean(skillType + "." + blockName + ".Double_Drops_Enabled"), smeltingXp));
     }
 }