fix: restore full WorldGuard flags support, default only block-break=allow
This commit is contained in:
parent
b80fefa6a4
commit
bfdf197de4
5 changed files with 42 additions and 32 deletions
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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"
|
||||||
|
|
||||||
# ============================================
|
# ============================================
|
||||||
# ДОПОЛНИТЕЛЬНЫЕ НАСТРОЙКИ
|
# ДОПОЛНИТЕЛЬНЫЕ НАСТРОЙКИ
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue