浏览代码

Automatic spelling mistake correction on repair/salvage configs for
previously misspelled netherite materials

nossr50 5 年之前
父节点
当前提交
dab255254c

+ 3 - 0
Changelog.txt

@@ -1,7 +1,10 @@
 Version 2.1.130
     Fixed a bug that prevented Repair from working on the new Netherite weapons/armors
+    mcMMO will now run a script to fix a misspelling of netherite in repair/salvage configs (script only runs once and then never again)
+
 
     NOTES:
+    Early versions of 1.16 support had Netherite misspelled, the script I added executes before loading those config files to fix the spelling mistakes if it finds any
     If you are still having issues with Repair/Salvage, delete the repair and salvage .yml files in /plugins/mcMMO and restart the server
 
 Version 2.1.129

+ 9 - 0
src/main/java/com/gmail/nossr50/config/skills/repair/RepairConfigManager.java

@@ -1,7 +1,9 @@
 package com.gmail.nossr50.config.skills.repair;
 
+import com.gmail.nossr50.datatypes.database.UpgradeType;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.skills.repair.repairables.Repairable;
+import com.gmail.nossr50.util.FixSpellingNetheriteUtil;
 
 import java.io.File;
 import java.util.ArrayList;
@@ -31,6 +33,13 @@ public class RepairConfigManager {
                 continue;
             }
 
+
+            if(mcMMO.getUpgradeManager().shouldUpgrade(UpgradeType.FIX_SPELLING_NETHERITE_REPAIR)) {
+                //Check spelling mistakes (early versions of 1.16 support had Netherite misspelled)
+                plugin.getLogger().info("Checking for certain invalid material names in Repair config...");
+                FixSpellingNetheriteUtil.processFileCheck(mcMMO.p, fileName, UpgradeType.FIX_SPELLING_NETHERITE_REPAIR);
+            }
+
             RepairConfig rConfig = new RepairConfig(fileName);
             repairables.addAll(rConfig.getLoadedRepairables());
         }

+ 10 - 0
src/main/java/com/gmail/nossr50/config/skills/salvage/SalvageConfigManager.java

@@ -1,7 +1,9 @@
 package com.gmail.nossr50.config.skills.salvage;
 
+import com.gmail.nossr50.datatypes.database.UpgradeType;
 import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.skills.salvage.salvageables.Salvageable;
+import com.gmail.nossr50.util.FixSpellingNetheriteUtil;
 
 import java.io.File;
 import java.util.ArrayList;
@@ -31,6 +33,14 @@ public class SalvageConfigManager {
                 continue;
             }
 
+
+            if(mcMMO.getUpgradeManager().shouldUpgrade(UpgradeType.FIX_SPELLING_NETHERITE_SALVAGE)) {
+                //Check spelling mistakes (early versions of 1.16 support had Netherite misspelled)
+                plugin.getLogger().info("Checking for certain invalid material names in Salvage config...");
+                FixSpellingNetheriteUtil.processFileCheck(mcMMO.p, fileName, UpgradeType.FIX_SPELLING_NETHERITE_SALVAGE);
+            }
+
+
             SalvageConfig salvageConfig = new SalvageConfig(fileName);
             salvageables.addAll(salvageConfig.getLoadedSalvageables());
         }

+ 2 - 0
src/main/java/com/gmail/nossr50/datatypes/database/UpgradeType.java

@@ -14,4 +14,6 @@ public enum UpgradeType {
     DROP_NAME_UNIQUENESS,
     ADD_SKILL_TOTAL,
     ADD_UNIQUE_PLAYER_DATA,
+    FIX_SPELLING_NETHERITE_SALVAGE,
+    FIX_SPELLING_NETHERITE_REPAIR
 }

+ 0 - 1
src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java

@@ -12,7 +12,6 @@ import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.runnables.player.PlayerProfileSaveTask;
 import com.gmail.nossr50.skills.child.FamilyTree;
 import com.gmail.nossr50.util.player.UserManager;
-import com.gmail.nossr50.util.skills.SkillUtils;
 import com.google.common.collect.ImmutableMap;
 
 import java.util.HashMap;

+ 0 - 3
src/main/java/com/gmail/nossr50/skills/mining/Mining.java

@@ -3,10 +3,7 @@ package com.gmail.nossr50.skills.mining;
 import com.gmail.nossr50.config.experience.ExperienceConfig;
 import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
 import com.gmail.nossr50.mcMMO;
-import com.gmail.nossr50.util.Misc;
-import org.bukkit.Material;
 import org.bukkit.block.BlockState;
-import org.bukkit.inventory.ItemStack;
 
 public class Mining {
 

+ 0 - 1
src/main/java/com/gmail/nossr50/skills/mining/MiningManager.java

@@ -18,7 +18,6 @@ import com.gmail.nossr50.util.random.RandomChanceUtil;
 import com.gmail.nossr50.util.skills.RankUtils;
 import com.gmail.nossr50.util.skills.SkillUtils;
 import org.apache.commons.lang.math.RandomUtils;
-import org.bukkit.Bukkit;
 import org.bukkit.Material;
 import org.bukkit.block.Block;
 import org.bukkit.block.BlockState;

+ 60 - 0
src/main/java/com/gmail/nossr50/util/FixSpellingNetheriteUtil.java

@@ -0,0 +1,60 @@
+package com.gmail.nossr50.util;
+
+import com.gmail.nossr50.datatypes.database.UpgradeType;
+import com.gmail.nossr50.mcMMO;
+
+import java.io.*;
+
+public class FixSpellingNetheriteUtil {
+
+    public static void processFileCheck(mcMMO pluginRef, String fileName, UpgradeType upgradeType) {
+        pluginRef.getLogger().info("Checking " + fileName + " config material names...");
+
+        File configFile = new File(pluginRef.getDataFolder(), fileName);
+        if(configFile.exists()) {
+            BufferedReader bufferedReader = null;
+            FileWriter fileWriter = null;
+            try {
+                bufferedReader = new BufferedReader(new FileReader(configFile));
+                StringBuilder stringBuilder = new StringBuilder();
+                String curLine;
+
+                while ((curLine = bufferedReader.readLine()) != null) {
+                    String fixedLine = curLine.replace("NETHERRITE", "NETHERITE");
+                    stringBuilder.append(fixedLine);
+                    stringBuilder.append("\r\n");
+                }
+
+                //Close
+                bufferedReader.close();
+
+                fileWriter = new FileWriter(configFile);
+                fileWriter.write(stringBuilder.toString());
+                fileWriter.close();
+
+            } catch (IOException e) {
+                e.printStackTrace();
+            } finally {
+                if(bufferedReader != null) {
+                    try {
+                        bufferedReader.close();
+                    } catch (IOException e) {
+                        e.printStackTrace();
+                    }
+
+                    if(fileWriter != null) {
+                        try {
+                            fileWriter.close();
+                        } catch (IOException e) {
+                            e.printStackTrace();
+                        }
+                    }
+                }
+            }
+        }
+
+        pluginRef.getLogger().info("Finished checking "+fileName+" for certain misspelled material names.");
+
+        mcMMO.getUpgradeManager().setUpgradeCompleted(upgradeType);
+    }
+}

+ 2 - 0
src/main/resources/upgrades.yml

@@ -7,3 +7,5 @@ Upgrades_Finished:
     DROP_SQL_PARTY_NAMES: false
     DROP_SPOUT: false
     ADD_ALCHEMY: false
+    FIX_SPELLING_NETHERITE_SALVAGE: false
+    FIX_SPELLING_NETHERITE_REPAIR: false