فهرست منبع

Add support for data value ranges in blocks.yml

For example `Block_1|0-5`
TfT_02 11 سال پیش
والد
کامیت
44a4448527
1فایلهای تغییر یافته به همراه41 افزوده شده و 21 حذف شده
  1. 41 21
      src/main/java/com/gmail/nossr50/config/mods/CustomBlockConfig.java

+ 41 - 21
src/main/java/com/gmail/nossr50/config/mods/CustomBlockConfig.java

@@ -72,35 +72,55 @@ public class CustomBlockConfig extends ConfigLoader {
                 continue;
             }
 
+            if (blockInfo.length == 2) {
+                String[] dataInfo = blockInfo[1].split("[-]");
+
+                if (dataInfo.length == 2) {
+                    byte startByte = Byte.valueOf(dataInfo[0]);
+                    byte endByte = Byte.valueOf(dataInfo[1]);
+
+                    for (byte i = startByte; i < endByte; i++) {
+                        MaterialData blockMaterialData = new MaterialData(blockMaterial, i);
+                        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));
     }
 }