Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug] Error loading timers #285

Open
Miaoyww opened this issue Aug 8, 2024 · 1 comment
Open

[Bug] Error loading timers #285

Miaoyww opened this issue Aug 8, 2024 · 1 comment
Labels
bug Something isn't working confirmed Confirmed bug

Comments

@Miaoyww
Copy link
Contributor

Miaoyww commented Aug 8, 2024

some gson issues:
2472
2689
error log

[11:46:11 ERROR]: Error occurred while enabling CommandTimer v8.7.5 (Is it up to date?)
com.google.gson.JsonParseException: java.text.ParseException: Unparseable date: "Feb 8, 2023, 9:19:51 PM"
        at commandtimer-java21.jar/me.playbosswar.com.utils.gson.GsonDate.deserialize(GsonDate.java:39) ~[commandtimer-java21.jar:?]
        at commandtimer-java21.jar/me.playbosswar.com.utils.gson.GsonDate.deserialize(GsonDate.java:14) ~[commandtimer-java21.jar:?]
        at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:76) ~[gson-2.10.1.jar:?]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.readIntoField(ReflectiveTypeAdapterFactory.java:212) ~[gson-2.10.1.jar:?]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$FieldReflectionAdapter.readField(ReflectiveTypeAdapterFactory.java:433) ~[gson-2.10.1.jar:?]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:393) ~[gson-2.10.1.jar:?]
        at com.google.gson.Gson.fromJson(Gson.java:1227) ~[gson-2.10.1.jar:?]
        at com.google.gson.Gson.fromJson(Gson.java:1137) ~[gson-2.10.1.jar:?]
        at com.google.gson.Gson.fromJson(Gson.java:1047) ~[gson-2.10.1.jar:?]
        at com.google.gson.Gson.fromJson(Gson.java:1014) ~[gson-2.10.1.jar:?]
        at commandtimer-java21.jar/me.playbosswar.com.utils.gson.GsonConverter.fromJson(GsonConverter.java:29) ~[commandtimer-java21.jar:?]
        at commandtimer-java21.jar/me.playbosswar.com.utils.Files.deserializeJsonFilesIntoCommandTimers(Files.java:118) ~[commandtimer-java21.jar:?]
        at commandtimer-java21.jar/me.playbosswar.com.tasks.TasksManager.<init>(TasksManager.java:35) ~[commandtimer-java21.jar:?]
        at commandtimer-java21.jar/me.playbosswar.com.CommandTimerPlugin.onEnable(CommandTimerPlugin.java:70) ~[commandtimer-java21.jar:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:288) ~[paper-api-1.20.6-R0.1-SNAPSHOT.jar:?]
        at io.papermc.paper.plugin.manager.PaperPluginInstanceManager.enablePlugin(PaperPluginInstanceManager.java:202) ~[paper-1.20.6.jar:1.20.6-148-20f5165]
        at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.enablePlugin(PaperPluginManagerImpl.java:109) ~[paper-1.20.6.jar:1.20.6-148-20f5165]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:520) ~[paper-api-1.20.6-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.craftbukkit.CraftServer.enablePlugin(CraftServer.java:626) ~[paper-1.20.6.jar:1.20.6-148-20f5165]
        at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:575) ~[paper-1.20.6.jar:1.20.6-148-20f5165]
        at org.bukkit.craftbukkit.CraftServer.reload(CraftServer.java:1117) ~[paper-1.20.6.jar:1.20.6-148-20f5165]
        at org.bukkit.Bukkit.reload(Bukkit.java:1023) ~[paper-api-1.20.6-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:59) ~[paper-api-1.20.6-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:165) ~[paper-api-1.20.6-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java:986) ~[paper-1.20.6.jar:1.20.6-148-20f5165]
        at org.bukkit.craftbukkit.CraftServer.dispatchServerCommand(CraftServer.java:971) ~[paper-1.20.6.jar:1.20.6-148-20f5165]
        at net.minecraft.server.dedicated.DedicatedServer.handleConsoleInputs(DedicatedServer.java:521) ~[paper-1.20.6.jar:1.20.6-148-20f5165]
        at net.minecraft.server.dedicated.DedicatedServer.tickChildren(DedicatedServer.java:468) ~[paper-1.20.6.jar:1.20.6-148-20f5165]
        at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1571) ~[paper-1.20.6.jar:1.20.6-148-20f5165]
        at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1231) ~[paper-1.20.6.jar:1.20.6-148-20f5165]
        at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:323) ~[paper-1.20.6.jar:1.20.6-148-20f5165]
        at java.base/java.lang.Thread.run(Thread.java:1570) ~[?:?]
Caused by: java.text.ParseException: Unparseable date: "Feb 8, 2023, 9:19:51 PM"
        at java.base/java.text.DateFormat.parse(DateFormat.java:403) ~[?:?]
        at commandtimer-java21.jar/me.playbosswar.com.utils.gson.GsonDate.deserialize(GsonDate.java:37) ~[commandtimer-java21.jar:?]
        ... 31 more

i have changed the source code at utils/GsonDate and it solved this problem
i do not make sure if it is the best soultion but it solved my problem.

    public Date deserialize(JsonElement jsonElement, Type type,
                            JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
        SimpleDateFormat formatter = new SimpleDateFormat(FORMAT);
        try {
            return formatter.parse(jsonElement.getAsString());
        } catch(ParseException ex1) {
            // Check if maybe it's in the old format
            Bukkit.getLogger().log(Level.WARNING, "Could not parse date in new format, trying old format");
            try {
                SimpleDateFormat oldFormatter = new SimpleDateFormat("MMM d, yyyy, H:mm:ss a");
                return oldFormatter.parse(jsonElement.getAsString());
            } catch(ParseException ex2) {
                Bukkit.getLogger().log(Level.WARNING, "Could not parse date in new format, trying old format");
                try {
                    SimpleDateFormat oldFormatter = new SimpleDateFormat("MMM d, yyyy, hh:mm:ss a", Locale.ENGLISH);
                    return oldFormatter.parse(jsonElement.getAsString());
                } catch(ParseException ex3) {
                    try {
                        SimpleDateFormat oldFormatter = new SimpleDateFormat("MMM d, yyyy, HH:mm:ss");
                        return oldFormatter.parse(jsonElement.getAsString());
                    } catch(ParseException ex4) {
                        throw new JsonParseException(ex4);
                    }
                }
            }
        }
    }
Miaoyww added a commit to Miaoyww/CommandTimer that referenced this issue Aug 8, 2024
@titivermeesch titivermeesch added bug Something isn't working confirmed Confirmed bug labels Aug 8, 2024
@titivermeesch
Copy link
Owner

Thanks for submitting your issue. This is indeed a long standing issue where users have old date formats. A few are covered already but looks like some are still missing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working confirmed Confirmed bug
Projects
None yet
Development

No branches or pull requests

2 participants