действительно, ща
import com.sk89q.worldguard.protection.flags.Flag;
import com.sk89q.worldguard.protection.flags.Flags;
import com.sk89q.worldguard.protection.flags.InvalidFlagFormat;
import com.sk89q.worldguard.protection.flags.RegionGroup;
import com.sk89q.worldguard.protection.flags.StringFlag;
import com.sk89q.worldguard.protection.managers.RegionManager;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import org.bukkit.ChatColor;
import org.bukkit.plugin.java.JavaPlugin;
public class MyPlugin extends JavaPlugin {
// Создаем новый флаг
private static final Flag<String> ALLOWED_BLOCKS = new StringFlag("allowed-blocks");
@Override
public void onEnable() {
// Регистрируем флаг в WorldGuard
Flags.register(ALLOWED_BLOCKS);
// Добавляем обработчик флага ALLOWED_BLOCKS
ALLOWED_BLOCKS.setRegionGroupFlag(RegionGroup.MEMBERS);
// Добавляем обработчик команды /setallowedblocks
getCommand("setallowedblocks").setExecutor((sender, command, label, args) -> {
if (args.length < 2) {
sender.sendMessage(ChatColor.RED + "Использование: /setallowedblocks <region> <allowed_blocks>");
return true;
}
String regionName = args[0];
String allowedBlocks = String.join(",", args).substring(regionName.length() + 1);
// Получаем менеджер регионов для текущего мира
RegionManager regionManager = WorldGuard.getInstance().getPlatform().getRegionContainer().get(BukkitAdapter.adapt(sender.getWorld()));
// Получаем регион по имени
ProtectedRegion region = regionManager.getRegion(regionName);
// Проверяем, что регион существует
if (region == null) {
sender.sendMessage(ChatColor.RED + "Ошибка: регион не найден.");
return true;
}
// Устанавливаем флаг для региона
try {
// Получаем значение флага ALLOWED_BLOCKS для данного региона
String previousAllowedBlocks = region.getFlag(ALLOWED_BLOCKS);
// Если значение флага не изменилось, выводим сообщение и возвращаем true
if (allowedBlocks.equals(previousAllowedBlocks)) {
sender.sendMessage(ChatColor.YELLOW + "Разрешенные блоки для региона " + regionName + " уже были установлены на " + allowedBlocks);
return true;
}
region.setFlag(ALLOWED_BLOCKS, allowedBlocks);
sender.sendMessage(ChatColor.GREEN + "Установлены разрешенные блоки для региона " + regionName + ": " + allowedBlocks);
} catch (InvalidFlagFormat e) {
sender.sendMessage(ChatColor.RED + "Ошибка: неверный формат значения флага ALLOWED_BLOCKS.");
return true;
}
return true;
});
}
@Override
public void onDisable() {
// Снимаем регистрацию флага при выключении плагина
Flags.unregister(ALLOWED_BLOCKS);
}