fix: restore full WorldGuard flags support, default only block-break=allow

This commit is contained in:
loki5512344 2026-06-01 11:52:19 +02:00
parent b80fefa6a4
commit bfdf197de4
5 changed files with 42 additions and 32 deletions

View file

@ -23,7 +23,7 @@ public final class WorldGuardConfigLoader {
/** /**
* Parses WorldGuard configuration from YAML. * Parses WorldGuard configuration from YAML.
* Simplified: only block-break flag. * Supports any WorldGuard flags. Default: block-break=allow.
*/ */
public WorldGuardConfig parse(YamlConfiguration yaml) { public WorldGuardConfig parse(YamlConfiguration yaml) {
ConfigurationSection wgSection = yaml.getConfigurationSection("worldguard"); ConfigurationSection wgSection = yaml.getConfigurationSection("worldguard");
@ -55,10 +55,14 @@ public final class WorldGuardConfigLoader {
members = defaults.getStringList("worldguard.members"); members = defaults.getStringList("worldguard.members");
} }
// Simplified: only block-break flag // Support any WorldGuard flags. Default: only block-break=allow
// allow = все могут ломать, deny = никто не может, -g non_members = только владельцы List<String> flags = yaml.getStringList("worldguard.flags");
String blockBreak = yaml.getString("worldguard.block-break", if (flags.isEmpty()) {
defaults.getString("worldguard.block-break", "allow")); flags = defaults.getStringList("worldguard.flags");
}
if (flags.isEmpty()) {
flags = List.of("block-break=allow");
}
boolean protect = yaml.getBoolean("worldguard.protect-on-create", boolean protect = yaml.getBoolean("worldguard.protect-on-create",
defaults.getBoolean("worldguard.protect-on-create", true)); defaults.getBoolean("worldguard.protect-on-create", true));
@ -68,7 +72,7 @@ public final class WorldGuardConfigLoader {
.template(template) .template(template)
.owners(owners) .owners(owners)
.members(members) .members(members)
.blockBreak(blockBreak) .flags(flags)
.protectOnCreate(protect) .protectOnCreate(protect)
.build(); .build();
} }
@ -83,21 +87,21 @@ public final class WorldGuardConfigLoader {
yaml.set("worldguard.region-template", config.regionNameTemplate()); yaml.set("worldguard.region-template", config.regionNameTemplate());
yaml.set("worldguard.owners", config.owners()); yaml.set("worldguard.owners", config.owners());
yaml.set("worldguard.members", config.members()); 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()); yaml.set("worldguard.protect-on-create", config.protectOnCreate());
} }
} }
/** /**
* Sets default values for WorldGuard configuration. * 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) { public void setDefaults(YamlConfiguration yaml) {
yaml.set("worldguard.enabled", false); yaml.set("worldguard.enabled", false);
yaml.set("worldguard.region-template", "{mine_name}_{random_4}"); yaml.set("worldguard.region-template", "{mine_name}_{random_4}");
yaml.set("worldguard.owners", List.of()); yaml.set("worldguard.owners", List.of());
yaml.set("worldguard.members", 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); yaml.set("worldguard.protect-on-create", true);
} }
} }

View file

@ -6,14 +6,14 @@ import java.util.Random;
/** /**
* Configuration for WorldGuard auto-region creation. * 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( public record WorldGuardConfig(
boolean enabled, boolean enabled,
String regionNameTemplate, String regionNameTemplate,
List<String> owners, List<String> owners,
List<String> members, List<String> members,
String blockBreak, List<String> flags,
boolean protectOnCreate boolean protectOnCreate
) { ) {
@ -27,8 +27,8 @@ public record WorldGuardConfig(
: DEFAULT_TEMPLATE; : DEFAULT_TEMPLATE;
owners = owners != null ? List.copyOf(owners) : List.of(); owners = owners != null ? List.copyOf(owners) : List.of();
members = members != null ? List.copyOf(members) : List.of(); members = members != null ? List.copyOf(members) : List.of();
// block-break: allow = все могут ломать, deny = никто не может, -g non_members = только владельцы // Default: only block-break=allow. User can add any flags they want.
blockBreak = blockBreak != null && !blockBreak.isBlank() ? blockBreak : "allow"; flags = flags != null && !flags.isEmpty() ? List.copyOf(flags) : List.of("block-break=allow");
protectOnCreate = protectOnCreate; protectOnCreate = protectOnCreate;
} }
@ -76,7 +76,8 @@ public record WorldGuardConfig(
/** /**
* Default configuration with auto-region enabled. * 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() { public static WorldGuardConfig defaults() {
return new WorldGuardConfig( return new WorldGuardConfig(
@ -84,7 +85,7 @@ public record WorldGuardConfig(
DEFAULT_TEMPLATE, DEFAULT_TEMPLATE,
List.of(), List.of(),
List.of(), List.of(),
"allow", // allow = все могут ломать List.of("block-break=allow"),
true true
); );
} }
@ -98,7 +99,7 @@ public record WorldGuardConfig(
DEFAULT_TEMPLATE, DEFAULT_TEMPLATE,
List.of(), List.of(),
List.of(), List.of(),
"allow", List.of(),
false false
); );
} }
@ -115,7 +116,7 @@ public record WorldGuardConfig(
private String template = DEFAULT_TEMPLATE; private String template = DEFAULT_TEMPLATE;
private List<String> owners = List.of(); private List<String> owners = List.of();
private List<String> members = List.of(); private List<String> members = List.of();
private String blockBreak = "allow"; private List<String> flags = List.of("block-break=allow");
private boolean protectOnCreate = true; private boolean protectOnCreate = true;
public Builder enabled(boolean enabled) { public Builder enabled(boolean enabled) {
@ -138,8 +139,8 @@ public record WorldGuardConfig(
return this; return this;
} }
public Builder blockBreak(String blockBreak) { public Builder flags(List<String> flags) {
this.blockBreak = blockBreak; this.flags = flags;
return this; return this;
} }
@ -149,6 +150,6 @@ public record WorldGuardConfig(
} }
public WorldGuardConfig build() { public WorldGuardConfig build() {
return new WorldGuardConfig(enabled, template, owners, members, blockBreak, protectOnCreate); return new WorldGuardConfig(enabled, template, owners, members, flags, protectOnCreate);
} }
} }

View file

@ -16,7 +16,7 @@ debug: false
reset-notifications: reset-notifications:
# Уведомлять о сбросе шахты # Уведомлять о сбросе шахты
enabled: true enabled: false
# Тип уведомления: CHAT, ACTIONBAR, TITLE, BOSSBAR, NONE # Тип уведомления: CHAT, ACTIONBAR, TITLE, BOSSBAR, NONE
type: CHAT type: CHAT
# Всем игрокам на сервере (true) или только рядом с шахтой (false) # Всем игрокам на сервере (true) или только рядом с шахтой (false)

View file

@ -92,12 +92,9 @@ worldguard:
members: [] members: []
# WorldGuard flags to set # WorldGuard flags to set
# Можно добавить любые другие флаги: pvp, tnt, build, и т.д.
flags: flags:
- "passthrough=deny" - "block-break=allow"
- "build=allow"
- "pvp=deny"
- "tnt=deny"
- "creeper-explosion=deny"
# Automatically protect the region on creation # Automatically protect the region on creation
protect-on-create: true protect-on-create: true

View file

@ -144,7 +144,8 @@ ui:
# WORLDGUARD ИНТЕГРАЦИЯ (опционально) # WORLDGUARD ИНТЕГРАЦИЯ (опционально)
# ============================================ # ============================================
# Создаёт регион для защиты шахты # Создаёт регион для защиты шахты
# Только флаг на разрушение блоков (игроки могут ломать, гриферы - нет) # По умолчанию: только block-break=allow (все могут ломать)
# Можно добавить ЛЮБЫЕ флаги WorldGuard!
worldguard: worldguard:
enabled: false enabled: false
# Шаблон названия региона # Шаблон названия региона
@ -158,11 +159,18 @@ worldguard:
# Участники региона # Участники региона
members: [] members: []
# Только флаг block-break - кто может ломать блоки в шахте # Флаги WorldGuard. По умолчанию: только block-break=allow
# allow - все могут ломать # МОЖНО ДОБАВИТЬ ЛЮБЫЕ ФЛАГИ:
# deny - никто не может ломать # - "block-break=allow" # все могут ломать
# -g non_members - только владельцы/участники # - "block-break=deny" # никто не может ломать
block-break: "allow" # - "block-break=-g members" # только владельцы/участники
# - "pvp=deny" # запретить PvP
# - "tnt=deny" # запретить TNT
# - "creeper-explosion=deny" # запретить взрывы криперов
# - "mob-spawning=deny" # запретить спавн мобов
# - "use=allow" # разрешить использование механизмов
flags:
- "block-break=allow"
# ============================================ # ============================================
# ДОПОЛНИТЕЛЬНЫЕ НАСТРОЙКИ # ДОПОЛНИТЕЛЬНЫЕ НАСТРОЙКИ