Dans-Plugins / Medieval-Factions

Allows players to organize themselves into feudal, diplomatic, lawful groups akin to nations.
https://www.spigotmc.org/resources/medieval-factions.79941/
GNU General Public License v3.0
49 stars 33 forks source link

Fix loading error while enabling the plugin when updating from v3.7-beta-5 to v4.0-beta-1 #909

Closed dmccoystephenson closed 3 years ago

dmccoystephenson commented 3 years ago

22.01 19:48:54 [Server] Server thread/ERROR Error occurred while enabling MedievalFactions v4.0-beta-1 (Is it up to date?) 22.01 19:48:54 [Server] INFO com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 11 path $ 22.01 19:48:54 [Server] INFO at com.google.gson.Gson.assertFullConsumption(Gson.java:863) ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094] 22.01 19:48:54 [Server] INFO at com.google.gson.Gson.fromJson(Gson.java:853) ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094] 22.01 19:48:54 [Server] INFO at com.google.gson.Gson.fromJson(Gson.java:801) ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094] 22.01 19:48:54 [Server] INFO at com.google.gson.Gson.fromJson(Gson.java:773) ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094] 22.01 19:48:54 [Server] INFO at dansplugins.factionsystem.objects.Faction.load(Faction.java:445) ~[?:?] 22.01 19:48:54 [Server] INFO at dansplugins.factionsystem.objects.Faction.(Faction.java:70) ~[?:?] 22.01 19:48:54 [Server] INFO at dansplugins.factionsystem.StorageManager.loadFactions(StorageManager.java:129) ~[?:?] 22.01 19:48:54 [Server] INFO at dansplugins.factionsystem.StorageManager.load(StorageManager.java:116) ~[?:?] 22.01 19:48:54 [Server] INFO at dansplugins.factionsystem.MedievalFactions.onEnable(MedievalFactions.java:49) ~[?:?] 22.01 19:48:54 [Server] INFO at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:263) ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094] 22.01 19:48:54 [Server] INFO at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:351) ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094] 22.01 19:48:54 [Server] INFO at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:480) ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094] 22.01 19:48:54 [Server] INFO at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugin(CraftServer.java:494) ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094] 22.01 19:48:54 [Server] INFO at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugins(CraftServer.java:408) ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094] 22.01 19:48:54 [Server] INFO at net.minecraft.server.v1_16_R3.MinecraftServer.loadWorld(MinecraftServer.java:435) ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094] 22.01 19:48:54 [Server] INFO at net.minecraft.server.v1_16_R3.DedicatedServer.init(DedicatedServer.java:218) ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094] 22.01 19:48:54 [Server] INFO at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:809) ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094] 22.01 19:48:54 [Server] INFO at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$0(MinecraftServer.java:164) ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094] 22.01 19:48:54 [Server] INFO at java.lang.Thread.run(Thread.java:748) [?:1.8.0_265] 22.01 19:48:54 [Server] INFO Caused by: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 11 path $ 22.01 19:48:54 [Server] INFO at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1559) ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094] 22.01 19:48:54 [Server] INFO at com.google.gson.stream.JsonReader.checkLenient(JsonReader.java:1401) ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094] 22.01 19:48:54 [Server] INFO at com.google.gson.stream.JsonReader.doPeek(JsonReader.java:542) ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094] 22.01 19:48:54 [Server] INFO at com.google.gson.stream.JsonReader.peek(JsonReader.java:425) ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094] 22.01 19:48:54 [Server] INFO at com.google.gson.Gson.assertFullConsumption(Gson.java:859) ~[spigot-1.16.5.jar:2991-Spigot-018b9a0-f3f3094] 22.01 19:48:54 [Server] INFO ... 18 more

dmccoystephenson commented 3 years ago

This occurred on my server, which is hosted by PebbleHost.

dmccoystephenson commented 3 years ago

Related Code

    private void load(Map<String, String> data) {
        Gson gson = new GsonBuilder().setPrettyPrinting().create();

        Type arrayListTypeString = new TypeToken<ArrayList<String>>(){}.getType();
        Type arrayListTypeUUID = new TypeToken<ArrayList<UUID>>(){}.getType();
        Type mapType = new TypeToken<HashMap<String, String>>(){}.getType();

        members = gson.fromJson(data.get("members"), arrayListTypeUUID);
        enemyFactions = gson.fromJson(data.get("enemyFactions"), arrayListTypeString);
        officers = gson.fromJson(data.get("officers"), arrayListTypeUUID);
        allyFactions = gson.fromJson(data.get("allyFactions"), arrayListTypeString);
        laws = gson.fromJson(data.get("laws"), arrayListTypeString);
        name = gson.fromJson(data.get("name"), String.class);
        description = gson.fromJson(data.get("description"), String.class);
        owner = UUID.fromString(gson.fromJson(data.get("owner"), String.class));
        cumulativePowerLevel = gson.fromJson(data.get("cumulativePowerLevel"), Integer.TYPE);
        factionHome = loadLocation(gson.fromJson(data.get("location"), mapType), gson);
        liege = gson.fromJson(data.getOrDefault("liege", "none"), String.class);
        vassals = gson.fromJson(data.getOrDefault("vassals", "[]"), arrayListTypeString);
        prefix = gson.fromJson(data.getOrDefault("prefix", getName()), String.class);

//        System.out.println("Loading Faction Gates...");
        ArrayList<String> gateList = new ArrayList<String>();
        gateList = gson.fromJson(data.get("factionGates"), arrayListTypeString);
        if (gateList != null)
        {
            for (String item : gateList)
            {
                Gate g = Gate.load(item);
                gates.add(g);
            }
        }
        else
        {
            System.out.println(LocaleManager.getInstance().getText("MissingFactionGatesJSONCollection"));
        }
    }
dmccoystephenson commented 3 years ago

Updating worked on ServerMiner. Now I just have to test it on PebbleHost.