From 738445dfd9ad452cb5247270c80ff784e1682f79 Mon Sep 17 00:00:00 2001 From: XiaoMoMi <972454774@qq.com> Date: Fri, 22 Mar 2024 00:57:07 +0800 Subject: [PATCH] regex world match --- .../api/mechanic/misc/MatchRule.java | 8 ++++++++ build.gradle.kts | 2 +- plugin/build.gradle.kts | 3 ++- plugin/libs/AntiGriefLib-0.8.jar | Bin 0 -> 41270 bytes .../customcrops/mechanic/world/CWorld.java | 8 -------- .../mechanic/world/WorldManagerImpl.java | 16 ++++++++++++---- plugin/src/main/resources/config.yml | 2 +- 7 files changed, 24 insertions(+), 15 deletions(-) create mode 100644 api/src/main/java/net/momirealms/customcrops/api/mechanic/misc/MatchRule.java create mode 100644 plugin/libs/AntiGriefLib-0.8.jar diff --git a/api/src/main/java/net/momirealms/customcrops/api/mechanic/misc/MatchRule.java b/api/src/main/java/net/momirealms/customcrops/api/mechanic/misc/MatchRule.java new file mode 100644 index 0000000..8258d72 --- /dev/null +++ b/api/src/main/java/net/momirealms/customcrops/api/mechanic/misc/MatchRule.java @@ -0,0 +1,8 @@ +package net.momirealms.customcrops.api.mechanic.misc; + +public enum MatchRule { + + BLACKLIST, + WHITELIST, + REGEX +} diff --git a/build.gradle.kts b/build.gradle.kts index bfd1354..68e2d73 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,7 +8,7 @@ plugins { allprojects { project.group = "net.momirealms" - project.version = "3.4.3.0" + project.version = "3.4.3.1" apply() apply(plugin = "java") diff --git a/plugin/build.gradle.kts b/plugin/build.gradle.kts index 433e9cb..6d954cc 100644 --- a/plugin/build.gradle.kts +++ b/plugin/build.gradle.kts @@ -51,8 +51,9 @@ dependencies { implementation(project(":legacy-api")) implementation("net.kyori:adventure-api:4.15.0") implementation("net.kyori:adventure-platform-bukkit:4.3.2") - implementation("com.github.Xiao-MoMi:AntiGriefLib:0.8") + implementation("com.github.Xiao-MoMi:AntiGriefLib:0.9") implementation("com.github.Xiao-MoMi:BiomeAPI:0.3") + compileOnly("net.kyori:adventure-text-minimessage:4.15.0") compileOnly("net.kyori:adventure-text-serializer-legacy:4.15.0") compileOnly("de.tr7zw:item-nbt-api:2.12.2") diff --git a/plugin/libs/AntiGriefLib-0.8.jar b/plugin/libs/AntiGriefLib-0.8.jar new file mode 100644 index 0000000000000000000000000000000000000000..e655645d714dac581365f70c82b73cebba7ba718 GIT binary patch literal 41270 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 Qfdij4V5uq)we{Ek0Mk~AO8@`> literal 0 HcmV?d00001 diff --git a/plugin/src/main/java/net/momirealms/customcrops/mechanic/world/CWorld.java b/plugin/src/main/java/net/momirealms/customcrops/mechanic/world/CWorld.java index 0741514..f2f2805 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/mechanic/world/CWorld.java +++ b/plugin/src/main/java/net/momirealms/customcrops/mechanic/world/CWorld.java @@ -480,15 +480,7 @@ public class CWorld implements CustomCropsWorld { loadChunk(chunk); return chunk; } else { - // is an unloaded chunk, but has been generated -// if (bukkitWorld.isChunkGenerated(chunkPos.x(), chunkPos.z())) { -// Chunk bukkitChunk = bukkitWorld.getChunkAt(chunkPos.x(), chunkPos.z()); -// worldManager.handleChunkLoad(bukkitChunk); -// chunk = loadedChunks.get(chunkPos); -// return Objects.requireNonNullElseGet(chunk, () -> new CChunk(this, chunkPos)); -// } else { return null; -// } } } diff --git a/plugin/src/main/java/net/momirealms/customcrops/mechanic/world/WorldManagerImpl.java b/plugin/src/main/java/net/momirealms/customcrops/mechanic/world/WorldManagerImpl.java index 08819cc..24e215b 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/mechanic/world/WorldManagerImpl.java +++ b/plugin/src/main/java/net/momirealms/customcrops/mechanic/world/WorldManagerImpl.java @@ -20,6 +20,7 @@ package net.momirealms.customcrops.mechanic.world; import net.momirealms.customcrops.api.CustomCropsPlugin; import net.momirealms.customcrops.api.manager.WorldManager; import net.momirealms.customcrops.api.mechanic.item.*; +import net.momirealms.customcrops.api.mechanic.misc.MatchRule; import net.momirealms.customcrops.api.mechanic.world.AbstractWorldAdaptor; import net.momirealms.customcrops.api.mechanic.world.ChunkPos; import net.momirealms.customcrops.api.mechanic.world.CustomCropsBlock; @@ -50,7 +51,7 @@ public class WorldManagerImpl implements WorldManager, Listener { private final ConcurrentHashMap loadedWorlds; private final HashMap worldSettingMap; private WorldSetting defaultWorldSetting; - private boolean whiteListOrBlackList; + private MatchRule matchRule; private HashSet worldList; private AbstractWorldAdaptor worldAdaptor; private String absoluteWorldFolder; @@ -118,7 +119,7 @@ public class WorldManagerImpl implements WorldManager, Listener { } this.absoluteWorldFolder = section.getString("absolute-world-folder-path",""); - this.whiteListOrBlackList = section.getString("mode", "blacklist").equalsIgnoreCase("whitelist"); + this.matchRule = MatchRule.valueOf(section.getString("mode", "blacklist").toUpperCase(Locale.ENGLISH)); this.worldList = new HashSet<>(section.getStringList("list")); // limitation @@ -196,10 +197,17 @@ public class WorldManagerImpl implements WorldManager, Listener { @Override public boolean isMechanicEnabled(@NotNull World world) { - if (whiteListOrBlackList) { + if (matchRule == MatchRule.WHITELIST) { return worldList.contains(world.getName()); - } else { + } else if (matchRule == MatchRule.BLACKLIST) { return !worldList.contains(world.getName()); + } else { + for (String regex : worldList) { + if (world.getName().matches(regex)) { + return true; + } + } + return false; } } diff --git a/plugin/src/main/resources/config.yml b/plugin/src/main/resources/config.yml index 5af91b8..758262c 100644 --- a/plugin/src/main/resources/config.yml +++ b/plugin/src/main/resources/config.yml @@ -19,7 +19,7 @@ worlds: # Especially for realm systems absolute-world-folder-path: '' # A list of worlds that would decide where the plugin mechanisms take effect - # Mode: whitelist/blacklist + # Mode: whitelist/blacklist/regex mode: blacklist list: - blacklist_world