From b382bdf3a5e3833865f0e1852a44a514a8b26b41 Mon Sep 17 00:00:00 2001 From: JFronny Date: Mon, 14 Aug 2023 17:27:32 +0200 Subject: [PATCH] fix: use correct regex to check for legal strings --- run/resourcepacks/testpack/respackopts.json5 | 4 ++-- .../io/gitlab/jfronny/respackopts/Respackopts.java | 10 ++++++---- .../gitlab/jfronny/respackopts/RespackoptsConfig.java | 2 ++ .../jfronny/respackopts/filters/DebugEvents.java | 5 ++++- .../respackopts/mixin/ResourcePackManagerMixin.java | 2 +- src/main/resources/assets/respackopts/lang/en_us.json | 2 ++ 6 files changed, 17 insertions(+), 8 deletions(-) diff --git a/run/resourcepacks/testpack/respackopts.json5 b/run/resourcepacks/testpack/respackopts.json5 index 3110f08..8f39c10 100644 --- a/run/resourcepacks/testpack/respackopts.json5 +++ b/run/resourcepacks/testpack/respackopts.json5 @@ -29,11 +29,11 @@ thisIsCool: true, numberInSub: 15, enumInSub: [ - "zthis is default", + "zthisIsDefault", "yay1", "yay2", "yay3", - "athis is last" + "athisIsLast" ], sliderTest: { min: 15, diff --git a/src/main/java/io/gitlab/jfronny/respackopts/Respackopts.java b/src/main/java/io/gitlab/jfronny/respackopts/Respackopts.java index 0e9d5da..1b6402d 100644 --- a/src/main/java/io/gitlab/jfronny/respackopts/Respackopts.java +++ b/src/main/java/io/gitlab/jfronny/respackopts/Respackopts.java @@ -8,8 +8,7 @@ import io.gitlab.jfronny.muscript.StandardLib; import io.gitlab.jfronny.muscript.ast.*; import io.gitlab.jfronny.muscript.data.Scope; import io.gitlab.jfronny.muscript.data.dynamic.additional.DFinal; -import io.gitlab.jfronny.respackopts.filters.DirFilterEvents; -import io.gitlab.jfronny.respackopts.filters.FileFilterEvents; +import io.gitlab.jfronny.respackopts.filters.*; import io.gitlab.jfronny.respackopts.gson.*; import io.gitlab.jfronny.respackopts.gson.entry.*; import io.gitlab.jfronny.respackopts.integration.SaveHook; @@ -76,8 +75,10 @@ public class Respackopts implements ModInitializer, SaveHook { @Override public void onInitialize() { + if (RespackoptsConfig.ioLogs) DebugEvents.preInit(); DirFilterEvents.init(); FileFilterEvents.init(); + if (RespackoptsConfig.ioLogs) DebugEvents.postInit(); ServerInstanceHolder.init(); } @@ -100,11 +101,12 @@ public class Respackopts implements ModInitializer, SaveHook { // [\\s_] = whitespace or underscores // | = or // [^a-zA-Z_] = not character or underscore - private static final Pattern UNSUPPORTED = Pattern.compile("[^a-zA-Z_]|^[\\s_]*|[\\s_]*$"); + private static final Pattern UNSUPPORTED = Pattern.compile("\\W+|^\\d+"); + private static final Pattern SANITIZABLE = Pattern.compile(UNSUPPORTED + "|^_+|_+$"); public static String sanitizeString(String s) { // This trims whitespace/underscores and removes non-alphabetical or underscore characters - return UNSUPPORTED.matcher(s).replaceAll(""); + return SANITIZABLE.matcher(s).replaceAll(""); } public static boolean isLegal(String s) { diff --git a/src/main/java/io/gitlab/jfronny/respackopts/RespackoptsConfig.java b/src/main/java/io/gitlab/jfronny/respackopts/RespackoptsConfig.java index ee55c1c..65a4a8c 100644 --- a/src/main/java/io/gitlab/jfronny/respackopts/RespackoptsConfig.java +++ b/src/main/java/io/gitlab/jfronny/respackopts/RespackoptsConfig.java @@ -11,6 +11,7 @@ import java.util.List; public class RespackoptsConfig implements JfCustomConfig { public static boolean debugCommands = false; public static boolean debugLogs = false; + public static boolean ioLogs = false; public static boolean dashloaderCompat = true; @Override @@ -19,6 +20,7 @@ public class RespackoptsConfig implements JfCustomConfig { Respackopts.CONFIG = dsl.register(builder -> builder .value("debugCommands", debugCommands, () -> debugCommands, v -> debugCommands = v) .value("debugLogs", debugLogs, () -> debugLogs, v -> debugLogs = v) + .value("ioLogs", ioLogs, () -> ioLogs, v -> ioLogs = v) .value("dashloaderCompat", dashloaderCompat, () -> dashloaderCompat, v -> dashloaderCompat = v) .setPath(Respackopts.FALLBACK_CONF_DIR.resolve("_respackopts.conf")) .referenceConfig(() -> { diff --git a/src/main/java/io/gitlab/jfronny/respackopts/filters/DebugEvents.java b/src/main/java/io/gitlab/jfronny/respackopts/filters/DebugEvents.java index 662cecc..709307b 100644 --- a/src/main/java/io/gitlab/jfronny/respackopts/filters/DebugEvents.java +++ b/src/main/java/io/gitlab/jfronny/respackopts/filters/DebugEvents.java @@ -12,8 +12,11 @@ import java.util.function.Supplier; public enum DebugEvents implements UserResourceEvents.FindResource, UserResourceEvents.ParseMetadata, UserResourceEvents.Open, UserResourceEvents.OpenRoot { INSTANCE; - public static void init() { + public static void preInit() { UserResourceEvents.FIND_RESOURCE.register(INSTANCE); + } + + public static void postInit() { UserResourceEvents.PARSE_METADATA.register(INSTANCE); UserResourceEvents.OPEN.register(INSTANCE); UserResourceEvents.OPEN_ROOT.register(INSTANCE); diff --git a/src/main/java/io/gitlab/jfronny/respackopts/mixin/ResourcePackManagerMixin.java b/src/main/java/io/gitlab/jfronny/respackopts/mixin/ResourcePackManagerMixin.java index b0fd131..c31d9e1 100644 --- a/src/main/java/io/gitlab/jfronny/respackopts/mixin/ResourcePackManagerMixin.java +++ b/src/main/java/io/gitlab/jfronny/respackopts/mixin/ResourcePackManagerMixin.java @@ -86,7 +86,7 @@ public class ResourcePackManagerMixin { PackMeta conf = Respackopts.GSON.fromJson(isr, PackMeta.class); if (!Respackopts.isLegal(conf.id)) { if (conf.version >= 10) { - Respackopts.LOGGER.error(displayName + " was not loaded as it uses an unsupported pack id"); + Respackopts.LOGGER.error(displayName + " was not loaded as it uses an unsupported pack id: " + conf.id); return null; } else conf.id = Respackopts.sanitizeString(conf.id); } diff --git a/src/main/resources/assets/respackopts/lang/en_us.json b/src/main/resources/assets/respackopts/lang/en_us.json index 060cd75..c2cf9a5 100644 --- a/src/main/resources/assets/respackopts/lang/en_us.json +++ b/src/main/resources/assets/respackopts/lang/en_us.json @@ -5,6 +5,8 @@ "respackopts.jfconfig.title": "ResPackOpts", "respackopts.jfconfig.debugCommands": "Debug Commands", "respackopts.jfconfig.debugLogs": "Debug Logs", + "respackopts.jfconfig.ioLogs": "IO Logs", + "respackopts.jfconfig.ioLogs.tooltip": "Log every resource access. WARNING: This WILL result in giant log files! (requires restart)", "respackopts.jfconfig.dashloaderCompat": "Dashloader compatibility", "respackopts.invalid": "Invalid value", "respackopts.dumpSucceeded": "Successfully dumped the resource to %s",