diff --git a/src/main/java/dev/loki/lomines/data/config/loader/region/WorldGuardConfigLoader.java b/src/main/java/dev/loki/lomines/data/config/loader/region/WorldGuardConfigLoader.java index cfe442d..553b298 100644 --- a/src/main/java/dev/loki/lomines/data/config/loader/region/WorldGuardConfigLoader.java +++ b/src/main/java/dev/loki/lomines/data/config/loader/region/WorldGuardConfigLoader.java @@ -23,7 +23,7 @@ public final class WorldGuardConfigLoader { /** * Parses WorldGuard configuration from YAML. - * Simplified: only block-break flag. + * Supports any WorldGuard flags. Default: block-break=allow. */ public WorldGuardConfig parse(YamlConfiguration yaml) { ConfigurationSection wgSection = yaml.getConfigurationSection("worldguard"); @@ -55,10 +55,14 @@ public final class WorldGuardConfigLoader { members = defaults.getStringList("worldguard.members"); } - // Simplified: only block-break flag - // allow = все могут ломать, deny = никто не может, -g non_members = только владельцы - String blockBreak = yaml.getString("worldguard.block-break", - defaults.getString("worldguard.block-break", "allow")); + // Support any WorldGuard flags. Default: only block-break=allow + List flags = yaml.getStringList("worldguard.flags"); + if (flags.isEmpty()) { + flags = defaults.getStringList("worldguard.flags"); + } + if (flags.isEmpty()) { + flags = List.of("block-break=allow"); + } boolean protect = yaml.getBoolean("worldguard.protect-on-create", defaults.getBoolean("worldguard.protect-on-create", true)); @@ -68,7 +72,7 @@ public final class WorldGuardConfigLoader { .template(template) .owners(owners) .members(members) - .blockBreak(blockBreak) + .flags(flags) .protectOnCreate(protect) .build(); } @@ -83,21 +87,21 @@ public final class WorldGuardConfigLoader { yaml.set("worldguard.region-template", config.regionNameTemplate()); yaml.set("worldguard.owners", config.owners()); yaml.set("worldguard.members", config.members()); - yaml.set("worldguard.block-break", config.blockBreak()); + yaml.set("worldguard.flags", config.flags()); yaml.set("worldguard.protect-on-create", config.protectOnCreate()); } } /** * Sets default values for WorldGuard configuration. - * Simplified: only block-break flag. + * Default: only block-break=allow. User can add any flags. */ public void setDefaults(YamlConfiguration yaml) { yaml.set("worldguard.enabled", false); yaml.set("worldguard.region-template", "{mine_name}_{random_4}"); yaml.set("worldguard.owners", List.of()); yaml.set("worldguard.members", List.of()); - yaml.set("worldguard.block-break", "allow"); // allow = все могут ломать + yaml.set("worldguard.flags", List.of("block-break=allow")); yaml.set("worldguard.protect-on-create", true); } } diff --git a/src/main/java/dev/loki/lomines/integration/worldguard/WorldGuardConfig.java b/src/main/java/dev/loki/lomines/integration/worldguard/WorldGuardConfig.java index f44a4df..a933c5e 100644 --- a/src/main/java/dev/loki/lomines/integration/worldguard/WorldGuardConfig.java +++ b/src/main/java/dev/loki/lomines/integration/worldguard/WorldGuardConfig.java @@ -6,14 +6,14 @@ import java.util.Random; /** * Configuration for WorldGuard auto-region creation. - * Simplified: only controls who can break blocks in the mine. + * Supports any WorldGuard flags, default is only block-break=allow. */ public record WorldGuardConfig( boolean enabled, String regionNameTemplate, List owners, List members, - String blockBreak, + List flags, boolean protectOnCreate ) { @@ -27,8 +27,8 @@ public record WorldGuardConfig( : DEFAULT_TEMPLATE; owners = owners != null ? List.copyOf(owners) : List.of(); members = members != null ? List.copyOf(members) : List.of(); - // block-break: allow = все могут ломать, deny = никто не может, -g non_members = только владельцы - blockBreak = blockBreak != null && !blockBreak.isBlank() ? blockBreak : "allow"; + // Default: only block-break=allow. User can add any flags they want. + flags = flags != null && !flags.isEmpty() ? List.copyOf(flags) : List.of("block-break=allow"); protectOnCreate = protectOnCreate; } @@ -76,7 +76,8 @@ public record WorldGuardConfig( /** * Default configuration with auto-region enabled. - * Everyone can break blocks (allow). + * Default flag: block-break=allow (everyone can mine). + * User can add any other flags. */ public static WorldGuardConfig defaults() { return new WorldGuardConfig( @@ -84,7 +85,7 @@ public record WorldGuardConfig( DEFAULT_TEMPLATE, List.of(), List.of(), - "allow", // allow = все могут ломать + List.of("block-break=allow"), true ); } @@ -98,7 +99,7 @@ public record WorldGuardConfig( DEFAULT_TEMPLATE, List.of(), List.of(), - "allow", + List.of(), false ); } @@ -115,7 +116,7 @@ public record WorldGuardConfig( private String template = DEFAULT_TEMPLATE; private List owners = List.of(); private List members = List.of(); - private String blockBreak = "allow"; + private List flags = List.of("block-break=allow"); private boolean protectOnCreate = true; public Builder enabled(boolean enabled) { @@ -138,8 +139,8 @@ public record WorldGuardConfig( return this; } - public Builder blockBreak(String blockBreak) { - this.blockBreak = blockBreak; + public Builder flags(List flags) { + this.flags = flags; return this; } @@ -149,6 +150,6 @@ public record WorldGuardConfig( } public WorldGuardConfig build() { - return new WorldGuardConfig(enabled, template, owners, members, blockBreak, protectOnCreate); + return new WorldGuardConfig(enabled, template, owners, members, flags, protectOnCreate); } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index c471c06..4f26a35 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -16,7 +16,7 @@ debug: false reset-notifications: # Уведомлять о сбросе шахты - enabled: true + enabled: false # Тип уведомления: CHAT, ACTIONBAR, TITLE, BOSSBAR, NONE type: CHAT # Всем игрокам на сервере (true) или только рядом с шахтой (false) diff --git a/src/main/resources/defaults.yml b/src/main/resources/defaults.yml index 9b60ad0..1fda374 100644 --- a/src/main/resources/defaults.yml +++ b/src/main/resources/defaults.yml @@ -92,12 +92,9 @@ worldguard: members: [] # WorldGuard flags to set + # Можно добавить любые другие флаги: pvp, tnt, build, и т.д. flags: - - "passthrough=deny" - - "build=allow" - - "pvp=deny" - - "tnt=deny" - - "creeper-explosion=deny" + - "block-break=allow" # Automatically protect the region on creation protect-on-create: true diff --git a/src/main/resources/mines/example_mine.yml b/src/main/resources/mines/example_mine.yml index d2b05fe..181e09a 100644 --- a/src/main/resources/mines/example_mine.yml +++ b/src/main/resources/mines/example_mine.yml @@ -144,7 +144,8 @@ ui: # WORLDGUARD ИНТЕГРАЦИЯ (опционально) # ============================================ # Создаёт регион для защиты шахты -# Только флаг на разрушение блоков (игроки могут ломать, гриферы - нет) +# По умолчанию: только block-break=allow (все могут ломать) +# Можно добавить ЛЮБЫЕ флаги WorldGuard! worldguard: enabled: false # Шаблон названия региона @@ -158,11 +159,18 @@ worldguard: # Участники региона members: [] - # Только флаг block-break - кто может ломать блоки в шахте - # allow - все могут ломать - # deny - никто не может ломать - # -g non_members - только владельцы/участники - block-break: "allow" + # Флаги WorldGuard. По умолчанию: только block-break=allow + # МОЖНО ДОБАВИТЬ ЛЮБЫЕ ФЛАГИ: + # - "block-break=allow" # все могут ломать + # - "block-break=deny" # никто не может ломать + # - "block-break=-g members" # только владельцы/участники + # - "pvp=deny" # запретить PvP + # - "tnt=deny" # запретить TNT + # - "creeper-explosion=deny" # запретить взрывы криперов + # - "mob-spawning=deny" # запретить спавн мобов + # - "use=allow" # разрешить использование механизмов + flags: + - "block-break=allow" # ============================================ # ДОПОЛНИТЕЛЬНЫЕ НАСТРОЙКИ