fix: move example config to resources, simplify WG to block-break only, fix teleport for stuck players only, add messages.yml
This commit is contained in:
parent
f2be6d6ece
commit
b80fefa6a4
6 changed files with 206 additions and 38 deletions
|
|
@ -23,6 +23,7 @@ public final class WorldGuardConfigLoader {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parses WorldGuard configuration from YAML.
|
* Parses WorldGuard configuration from YAML.
|
||||||
|
* Simplified: only block-break flag.
|
||||||
*/
|
*/
|
||||||
public WorldGuardConfig parse(YamlConfiguration yaml) {
|
public WorldGuardConfig parse(YamlConfiguration yaml) {
|
||||||
ConfigurationSection wgSection = yaml.getConfigurationSection("worldguard");
|
ConfigurationSection wgSection = yaml.getConfigurationSection("worldguard");
|
||||||
|
|
@ -54,13 +55,10 @@ public final class WorldGuardConfigLoader {
|
||||||
members = defaults.getStringList("worldguard.members");
|
members = defaults.getStringList("worldguard.members");
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> flags = yaml.getStringList("worldguard.flags");
|
// Simplified: only block-break flag
|
||||||
if (flags.isEmpty()) {
|
// allow = все могут ломать, deny = никто не может, -g non_members = только владельцы
|
||||||
flags = defaults.getStringList("worldguard.flags");
|
String blockBreak = yaml.getString("worldguard.block-break",
|
||||||
}
|
defaults.getString("worldguard.block-break", "allow"));
|
||||||
if (flags.isEmpty()) {
|
|
||||||
flags = List.of("passthrough=deny", "build=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));
|
||||||
|
|
@ -70,7 +68,7 @@ public final class WorldGuardConfigLoader {
|
||||||
.template(template)
|
.template(template)
|
||||||
.owners(owners)
|
.owners(owners)
|
||||||
.members(members)
|
.members(members)
|
||||||
.flags(flags)
|
.blockBreak(blockBreak)
|
||||||
.protectOnCreate(protect)
|
.protectOnCreate(protect)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
@ -85,20 +83,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.flags", config.flags());
|
yaml.set("worldguard.block-break", config.blockBreak());
|
||||||
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.
|
||||||
*/
|
*/
|
||||||
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.flags", List.of("passthrough=deny", "build=allow"));
|
yaml.set("worldguard.block-break", "allow"); // allow = все могут ломать
|
||||||
yaml.set("worldguard.protect-on-create", true);
|
yaml.set("worldguard.protect-on-create", true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -171,9 +171,9 @@ public final class MineResetHandler {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Teleports players standing inside the mine to a safe location.
|
* Teleports ONLY stuck players (those inside solid blocks) to a safe location.
|
||||||
* Uses player-spawn location if configured, otherwise uses teleport location.
|
* Uses player-spawn location if configured, otherwise uses teleport location.
|
||||||
* Prevents players from suffocating in blocks by finding a safe teleport spot.
|
* Only teleports if player is suffocating in a block, not all players in mine!
|
||||||
*/
|
*/
|
||||||
private void teleportPlayers() {
|
private void teleportPlayers() {
|
||||||
// Get spawn location for stuck players (player-spawn config) or fall back to teleport location
|
// Get spawn location for stuck players (player-spawn config) or fall back to teleport location
|
||||||
|
|
@ -190,9 +190,20 @@ public final class MineResetHandler {
|
||||||
Location safeDest = BlockUpdateUtil.findSafeTeleportLocation(dest, 3);
|
Location safeDest = BlockUpdateUtil.findSafeTeleportLocation(dest, 3);
|
||||||
|
|
||||||
for (Player p : dest.getWorld().getPlayers()) {
|
for (Player p : dest.getWorld().getPlayers()) {
|
||||||
if (mine.contains(p.getLocation())) {
|
// Only teleport if player is INSIDE the mine AND is suffocating in a solid block
|
||||||
|
if (mine.contains(p.getLocation()) && isPlayerStuckInBlock(p)) {
|
||||||
p.teleport(safeDest);
|
p.teleport(safeDest);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if player is stuck inside a solid block (suffocating).
|
||||||
|
*/
|
||||||
|
private boolean isPlayerStuckInBlock(Player player) {
|
||||||
|
Location loc = player.getLocation();
|
||||||
|
var block = loc.getBlock();
|
||||||
|
// Check if block at player position is solid (not air/liquid)
|
||||||
|
return block.getType().isSolid() && !block.isLiquid();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,13 +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.
|
||||||
*/
|
*/
|
||||||
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,
|
||||||
List<String> flags,
|
String blockBreak,
|
||||||
boolean protectOnCreate
|
boolean protectOnCreate
|
||||||
) {
|
) {
|
||||||
|
|
||||||
|
|
@ -26,10 +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();
|
||||||
flags = flags != null ? List.copyOf(flags) : List.of(
|
// block-break: allow = все могут ломать, deny = никто не может, -g non_members = только владельцы
|
||||||
"passthrough=deny",
|
blockBreak = blockBreak != null && !blockBreak.isBlank() ? blockBreak : "allow";
|
||||||
"build=allow"
|
|
||||||
);
|
|
||||||
protectOnCreate = protectOnCreate;
|
protectOnCreate = protectOnCreate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -77,6 +76,7 @@ public record WorldGuardConfig(
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default configuration with auto-region enabled.
|
* Default configuration with auto-region enabled.
|
||||||
|
* Everyone can break blocks (allow).
|
||||||
*/
|
*/
|
||||||
public static WorldGuardConfig defaults() {
|
public static WorldGuardConfig defaults() {
|
||||||
return new WorldGuardConfig(
|
return new WorldGuardConfig(
|
||||||
|
|
@ -84,7 +84,7 @@ public record WorldGuardConfig(
|
||||||
DEFAULT_TEMPLATE,
|
DEFAULT_TEMPLATE,
|
||||||
List.of(),
|
List.of(),
|
||||||
List.of(),
|
List.of(),
|
||||||
List.of("passthrough=deny", "build=allow"),
|
"allow", // allow = все могут ломать
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -98,7 +98,7 @@ public record WorldGuardConfig(
|
||||||
DEFAULT_TEMPLATE,
|
DEFAULT_TEMPLATE,
|
||||||
List.of(),
|
List.of(),
|
||||||
List.of(),
|
List.of(),
|
||||||
List.of(),
|
"allow",
|
||||||
false
|
false
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -115,7 +115,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 List<String> flags = List.of("passthrough=deny", "build=allow");
|
private String blockBreak = "allow";
|
||||||
private boolean protectOnCreate = true;
|
private boolean protectOnCreate = true;
|
||||||
|
|
||||||
public Builder enabled(boolean enabled) {
|
public Builder enabled(boolean enabled) {
|
||||||
|
|
@ -138,8 +138,8 @@ public record WorldGuardConfig(
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder flags(List<String> flags) {
|
public Builder blockBreak(String blockBreak) {
|
||||||
this.flags = flags;
|
this.blockBreak = blockBreak;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -149,7 +149,6 @@ public record WorldGuardConfig(
|
||||||
}
|
}
|
||||||
|
|
||||||
public WorldGuardConfig build() {
|
public WorldGuardConfig build() {
|
||||||
return new WorldGuardConfig(enabled, template, owners, members, flags, protectOnCreate);
|
return new WorldGuardConfig(enabled, template, owners, members, blockBreak, protectOnCreate);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,42 @@
|
||||||
# LoMines Configuration
|
# ============================================
|
||||||
|
# LoMines - Основная конфигурация
|
||||||
|
# ============================================
|
||||||
|
|
||||||
# Enable statistics tracking for players
|
# Включить статистику игроков
|
||||||
statistics-enabled: true
|
statistics-enabled: true
|
||||||
|
|
||||||
# Enable debug logging
|
# Включить отладочный лог
|
||||||
debug: false
|
debug: false
|
||||||
|
|
||||||
# WorldGuard Integration Settings
|
# ============================================
|
||||||
worldguard:
|
# УВЕДОМЛЕНИЯ О СБРОСЕ ШАХТ
|
||||||
|
# ============================================
|
||||||
|
# Здесь можно настроить глобальные уведомления
|
||||||
|
# Детальная настройка в messages.yml
|
||||||
|
|
||||||
|
reset-notifications:
|
||||||
|
# Уведомлять о сбросе шахты
|
||||||
enabled: true
|
enabled: true
|
||||||
auto-create-regions: false
|
# Тип уведомления: CHAT, ACTIONBAR, TITLE, BOSSBAR, NONE
|
||||||
|
type: CHAT
|
||||||
|
# Всем игрокам на сервере (true) или только рядом с шахтой (false)
|
||||||
|
broadcast-global: false
|
||||||
|
# Дистанция от шахты если broadcast-global: false
|
||||||
|
range: 100
|
||||||
|
# Предупреждать перед сбросом
|
||||||
|
warnings:
|
||||||
|
enabled: true
|
||||||
|
# За сколько секунд до сброса предупреждать
|
||||||
|
seconds-before:
|
||||||
|
- 60
|
||||||
|
- 30
|
||||||
|
- 10
|
||||||
|
|
||||||
|
# ============================================
|
||||||
|
# WORLDGUARD ИНТЕГРАЦИЯ
|
||||||
|
# ============================================
|
||||||
|
worldguard:
|
||||||
|
# Автоматически создавать регионы для шахт
|
||||||
|
enabled: false
|
||||||
|
# Приоритет региона (выше = приоритетнее)
|
||||||
region-priority: 10
|
region-priority: 10
|
||||||
|
|
|
||||||
123
src/main/resources/messages.yml
Normal file
123
src/main/resources/messages.yml
Normal file
|
|
@ -0,0 +1,123 @@
|
||||||
|
# ============================================
|
||||||
|
# LoMines - Сообщения плагина
|
||||||
|
# ============================================
|
||||||
|
# Поддержка цветов: &#RRGGBB (HEX), &a..&f, <color>
|
||||||
|
# Плейсхолдеры: {player}, {mine}, {percent}, {time}, {blocks}
|
||||||
|
|
||||||
|
# ============================================
|
||||||
|
# УВЕДОМЛЕНИЯ О СБРОСЕ ШАХТ
|
||||||
|
# ============================================
|
||||||
|
|
||||||
|
# Когда шахта сброшена автоматически (по времени или проценту)
|
||||||
|
mine-reset-auto:
|
||||||
|
# Тип уведомления: CHAT, ACTIONBAR, TITLE, BOSSBAR, NONE
|
||||||
|
type: CHAT
|
||||||
|
# Дистанция от центра шахты (-1 = все игроки на сервере)
|
||||||
|
range: -1
|
||||||
|
# Сообщение (для CHAT и ACTIONBAR)
|
||||||
|
message: "�FF00[Шахты] &#FFFF00{mine} �FF00сброшена!"
|
||||||
|
# Для TITLE (оставить пустым если не нужно)
|
||||||
|
title: "&#FFFF00{mine}"
|
||||||
|
subtitle: "�FF00Сброшена!"
|
||||||
|
# Для BOSSBAR (оставить пустым если не нужно)
|
||||||
|
bossbar: "&#FFFF00{mine} &#AAAAAA| Сброшена"
|
||||||
|
bossbar-color: GREEN
|
||||||
|
bossbar-style: SOLID
|
||||||
|
# Длительность в тиках (20 = 1 секунда, только для TITLE и BOSSBAR)
|
||||||
|
duration: 60
|
||||||
|
|
||||||
|
# Когда шахта сброшена вручную командой
|
||||||
|
mine-reset-manual:
|
||||||
|
type: CHAT
|
||||||
|
range: -1
|
||||||
|
message: "�FF00[Шахты] &#FFFF00{mine} �FF00сброшена администратором!"
|
||||||
|
title: ""
|
||||||
|
subtitle: ""
|
||||||
|
bossbar: ""
|
||||||
|
bossbar-color: GREEN
|
||||||
|
bossbar-style: SOLID
|
||||||
|
duration: 60
|
||||||
|
|
||||||
|
# Предупреждение перед сбросом (за 60, 30, 10 секунд)
|
||||||
|
mine-reset-warning:
|
||||||
|
enabled: true
|
||||||
|
# За сколько секунд до сброса предупреждать
|
||||||
|
warnings:
|
||||||
|
- 60
|
||||||
|
- 30
|
||||||
|
- 10
|
||||||
|
type: CHAT
|
||||||
|
range: 100
|
||||||
|
message: "&#FFAA00[Шахты] &#FFFF00{mine} &#FFAA00сбросится через &#FF0000{time}"
|
||||||
|
title: ""
|
||||||
|
subtitle: ""
|
||||||
|
|
||||||
|
# ============================================
|
||||||
|
# СООБЩЕНИЯ КОМАНД
|
||||||
|
# ============================================
|
||||||
|
|
||||||
|
# Создание шахты
|
||||||
|
mine-created: "�FF00Шахта &#FFFF00{mine} �FF00успешно создана!"
|
||||||
|
mine-create-error: "&#FF0000Ошибка при создании шахты: {error}"
|
||||||
|
|
||||||
|
# Удаление шахты
|
||||||
|
mine-deleted: "�FF00Шахта &#FFFF00{mine} �FF00удалена!"
|
||||||
|
mine-delete-error: "&#FF0000Ошибка при удалении шахты: {error}"
|
||||||
|
|
||||||
|
# Перезагрузка шахты
|
||||||
|
mine-reloaded: "�FF00Шахта &#FFFF00{mine} �FF00перезагружена!"
|
||||||
|
mine-reload-error: "&#FF0000Ошибка при перезагрузке шахты: {error}"
|
||||||
|
|
||||||
|
# Перезагрузка всех шахт
|
||||||
|
mines-reloaded: "�FF00Все шахты перезагружены! ({count} штук)"
|
||||||
|
|
||||||
|
# Телепортация к шахте
|
||||||
|
mine-teleport: "�FF00Телепортировано к шахте &#FFFF00{mine}"
|
||||||
|
mine-teleport-no-location: "&#FF0000У шахты нет настроенной точки телепорта!"
|
||||||
|
|
||||||
|
# Информация о шахте
|
||||||
|
mine-info-header: "󙀸========== &#FFD700{mine} 󙀸=========="
|
||||||
|
mine-info-blocks: "&#AAAAAAБлоков: &#FFFFFF{blocks}&#AAAAAA/&#FFFFFF{total} &#AAAAAA(&#FFFFFF{percent}%&#AAAAAA)"
|
||||||
|
mine-info-reset: "&#AAAAAAСледующий сброс через: &#FFFFFF{time}"
|
||||||
|
mine-info-footer: "󙀸=============================="
|
||||||
|
|
||||||
|
# ============================================
|
||||||
|
# СООБЩЕНИЯ ИГРОКАМ
|
||||||
|
# ============================================
|
||||||
|
|
||||||
|
# Когда игрок ломает блок в шахте
|
||||||
|
block-break-reward: "�FF00+&#FFD700{amount} &#AAAAAAза добычу блока!"
|
||||||
|
|
||||||
|
# Когда игрок получает награду из random-rewards
|
||||||
|
reward-received: "�FF00Вы получили награду за добычу!"
|
||||||
|
|
||||||
|
# ============================================
|
||||||
|
# ОШИБКИ
|
||||||
|
# ============================================
|
||||||
|
|
||||||
|
no-permission: "&#FF0000У вас нет прав для этой команды!"
|
||||||
|
player-only: "&#FF0000Эта команда только для игроков!"
|
||||||
|
mine-not-found: "&#FF0000Шахта не найдена: &#FFFF00{mine}"
|
||||||
|
invalid-arguments: "&#FF0000Неверные аргументы команды!"
|
||||||
|
no-selection: "&#FF0000Выделите регион палочкой! ЛКМ - 1-я точка, ПКМ - 2-я точка"
|
||||||
|
wand-given: "�FF00Вы получили палочку для выделения шахты!"
|
||||||
|
|
||||||
|
# ============================================
|
||||||
|
# СТАТИСТИКА
|
||||||
|
# ============================================
|
||||||
|
|
||||||
|
stats-header: "󙀸========== &#FFD700Статистика {player} 󙀸=========="
|
||||||
|
stats-blocks: "&#AAAAAAБлоков добыто: &#FFFFFF{blocks}"
|
||||||
|
stats-resets: "&#AAAAAAШахт сброшено: &#FFFFFF{resets}"
|
||||||
|
stats-playtime: "&#AAAAAAВремя игры: &#FFFFFF{time}"
|
||||||
|
stats-rank: "&#AAAAAAПозиция в топе: &#FFFFFF#{rank}"
|
||||||
|
stats-footer: "󙀸======================================"
|
||||||
|
|
||||||
|
# ============================================
|
||||||
|
# ТОП ИГРОКОВ
|
||||||
|
# ============================================
|
||||||
|
|
||||||
|
top-header: "󙀸========== &#FFD700Топ по добыче 󙀸=========="
|
||||||
|
top-entry: "&#FFD700#{rank} &#AAAAAA| &#FFFFFF{player} &#AAAAAA| &#FFD700{blocks} блоков"
|
||||||
|
top-footer: "󙀸======================================"
|
||||||
|
top-empty: "&#AAAAAAТоп пуст - начните добывать блоки!"
|
||||||
|
|
@ -10,7 +10,7 @@ name: "&#FFD700Золотая шахта&#FFFFFF"
|
||||||
# ============================================
|
# ============================================
|
||||||
# РЕГИОНЫ (области спавна блоков)
|
# РЕГИОНЫ (области спавна блоков)
|
||||||
# ============================================
|
# ============================================
|
||||||
# Можно указать несколько регионов (до 100)
|
# Можно указать несколько регионов (до 10 точек = 5 регионов)
|
||||||
# Каждый регион = пара точек (от угла до угла)
|
# Каждый регион = пара точек (от угла до угла)
|
||||||
# Все регионы должны быть в ОДНОМ мире
|
# Все регионы должны быть в ОДНОМ мире
|
||||||
#
|
#
|
||||||
|
|
@ -77,15 +77,20 @@ reset:
|
||||||
# ============================================
|
# ============================================
|
||||||
# ТЕЛЕПОРТАЦИЯ ПРИ СБРОСЕ
|
# ТЕЛЕПОРТАЦИЯ ПРИ СБРОСЕ
|
||||||
# ============================================
|
# ============================================
|
||||||
|
# ИГРОКИ ТЕЛЕПОРТИРУЮТСЯ ТОЛЬКО ЕСЛИ ЗАСТРЯЛИ В БЛОКАХ!
|
||||||
|
#
|
||||||
|
# Точка телепорта - куда телепортировать при сбросе шахты
|
||||||
|
# (только если игрок оказался внутри блока после сброса)
|
||||||
teleport:
|
teleport:
|
||||||
enabled: false
|
enabled: false
|
||||||
location: "" # Формат: мир;x;y;z;yaw;pitch
|
location: "" # Формат: мир;x;y;z;yaw;pitch
|
||||||
|
|
||||||
# Точка спавна для "застрявших" игроков
|
# Точка спавна для "застрявших" игроков
|
||||||
# (если игрок оказался внутри блока после сброса)
|
# (если игрок оказался внутри блока после сброса)
|
||||||
|
# Если не задано - используется teleport.location
|
||||||
spawn:
|
spawn:
|
||||||
enabled: false
|
enabled: false
|
||||||
location: "" # Если не задано - используется teleport.location
|
location: "" # Формат: мир;x;y;z;yaw;pitch
|
||||||
|
|
||||||
# ============================================
|
# ============================================
|
||||||
# НАГРАДЫ ПРИ ДОБЫЧЕ
|
# НАГРАДЫ ПРИ ДОБЫЧЕ
|
||||||
|
|
@ -138,6 +143,8 @@ ui:
|
||||||
# ============================================
|
# ============================================
|
||||||
# WORLDGUARD ИНТЕГРАЦИЯ (опционально)
|
# WORLDGUARD ИНТЕГРАЦИЯ (опционально)
|
||||||
# ============================================
|
# ============================================
|
||||||
|
# Создаёт регион для защиты шахты
|
||||||
|
# Только флаг на разрушение блоков (игроки могут ломать, гриферы - нет)
|
||||||
worldguard:
|
worldguard:
|
||||||
enabled: false
|
enabled: false
|
||||||
# Шаблон названия региона
|
# Шаблон названия региона
|
||||||
|
|
@ -151,11 +158,11 @@ worldguard:
|
||||||
# Участники региона
|
# Участники региона
|
||||||
members: []
|
members: []
|
||||||
|
|
||||||
# Флаги WorldGuard
|
# Только флаг block-break - кто может ломать блоки в шахте
|
||||||
flags:
|
# allow - все могут ломать
|
||||||
- "passthrough deny"
|
# deny - никто не может ломать
|
||||||
- "build -g members allow"
|
# -g non_members - только владельцы/участники
|
||||||
- "pvp deny"
|
block-break: "allow"
|
||||||
|
|
||||||
# ============================================
|
# ============================================
|
||||||
# ДОПОЛНИТЕЛЬНЫЕ НАСТРОЙКИ
|
# ДОПОЛНИТЕЛЬНЫЕ НАСТРОЙКИ
|
||||||
Loading…
Add table
Add a link
Reference in a new issue