Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Чем отличаются команды /rg define и /rg claim

Тема в разделе "Помощь", создана пользователем mitya12342, 28 фев 2015.

  1. Автор темы
    mitya12342

    mitya12342 Активный участник

    Баллы:
    61
    Имя в Minecraft:
    mitya12342
    Настраивал авто шахту по гайдам из интернета и у меня возник вопрос: В чем отличия rg define от rg claim (команды плагина WorldGuard)
     
  2. Хостинг MineCraft
    <
  3. Firkys

    Firkys Активный участник Пользователь

    Баллы:
    88
    Skype:
    Firkys
    Имя в Minecraft:
    Firkys
    Если грубо говоря:
    define -- для админов (почти не содержит какие либо лимиты для привата)
    claim -- для игроков (сдержит всякие лимиты)
     
  4. Автор темы
    mitya12342

    mitya12342 Активный участник

    Баллы:
    61
    Имя в Minecraft:
    mitya12342
    А если не грубо говоря, а мягко?
     
  5. Firkys

    Firkys Активный участник Пользователь

    Баллы:
    88
    Skype:
    Firkys
    Имя в Minecraft:
    Firkys
    Почитать вики или посмотреть исходный код.
    Но смысл я и так правильно передал. Если не хотите чтобы игроки не создавали огромные регионы, то лучше не давать доступ к define.

    Сравните исходный код обеих команд:

    Код:
        @Command(aliases = {"claim"},
                 usage = "<id> [<owner1> [<owner2> [<owners...>]]]",
                 desc = "Claim a region",
                 min = 1)
        public void claim(CommandContext args, CommandSender sender) throws CommandException {
            warnAboutSaveFailures(sender);
    
            Player player = plugin.checkPlayer(sender);
            LocalPlayer localPlayer = plugin.wrapPlayer(player);
            RegionPermissionModel permModel = getPermissionModel(sender);
           
            // Check permissions
            if (!permModel.mayClaim()) {
                throw new CommandPermissionsException();
            }
    
            String id = checkRegionId(args.getString(0), false);
    
            RegionManager manager = checkRegionManager(plugin, player.getWorld());
    
            checkRegionDoesNotExist(manager, id, false);
            ProtectedRegion region = checkRegionFromSelection(player, id);
    
            WorldConfiguration wcfg = plugin.getGlobalStateManager().get(player.getWorld());
    
            // Check whether the player has created too many regions
            if (!permModel.mayClaimRegionsUnbounded()) {
                int maxRegionCount = wcfg.getMaxRegionCount(player);
                if (maxRegionCount >= 0
                        && manager.getRegionCountOfPlayer(localPlayer) >= maxRegionCount) {
                    throw new CommandException(
                            "У вас слишком много регионов, удалите один и пробуйте снова.");
                }
            }
    
            ProtectedRegion existing = manager.getRegion(id);
    
            // Check for an existing region
            if (existing != null) {
                if (!existing.getOwners().contains(localPlayer)) {
                    throw new CommandException(
                            "This region already exists and you don't own it.");
                }
            }
    
            // We have to check whether this region violates the space of any other reion
            ApplicableRegionSet regions = manager.getApplicableRegions(region);
    
            // Check if this region overlaps any other region
            if (regions.size() > 0) {
                if (!regions.isOwnerOfAll(localPlayer)) {
                    throw new CommandException("Этот регион пересекается с другим регионом.");
                }
            } else {
                if (wcfg.claimOnlyInsideExistingRegions) {
                    throw new CommandException("You may only claim regions inside " +
                            "existing regions that you or your group own.");
                }
            }
    
            if (wcfg.maxClaimVolume >= Integer.MAX_VALUE) {
                throw new CommandException("The maximum claim volume get in the configuration is higher than is supported. " +
                        "Currently, it must be " + Integer.MAX_VALUE+ " or smaller. Please contact a server administrator.");
            }
    
            // Check claim volume
            if (!permModel.mayClaimRegionsUnbounded()) {
                if (region instanceof ProtectedPolygonalRegion) {
                    throw new CommandException("Polygons are currently not supported for /rg claim.");
                }
    
                if (region.volume() > wcfg.maxClaimVolume) {
                    player.sendMessage(ChatColor.RED + "Этот регион слишком большой.");
                    player.sendMessage(ChatColor.RED +
                            "Макс. размер: " + wcfg.maxClaimVolume + ", ваш размер: " + region.volume());
                    return;
                }
            }
    
            region.getOwners().addPlayer(player.getName());
    
            RegionAdder task = new RegionAdder(plugin, manager, region);
            ListenableFuture<?> future = plugin.getExecutorService().submit(task);
    
            AsyncCommandHelper.wrap(future, plugin, player)
                    .formatUsing(id)
                    .registerWithSupervisor("Claiming the region '%s'...")
                    .sendMessageAfterDelay("(Please wait... claiming '%s'...)")
                    .thenRespondWith(
                            "Новый регион создан под названием '%s'.",
                            "Не удалось создать регион под названием '%s'");
        }
    Код:
        @Command(aliases = {"define", "def", "d", "create"},
                 usage = "<id> [<owner1> [<owner2> [<owners...>]]]",
                 flags = "ng",
                 desc = "Defines a region",
                 min = 1)
        public void define(CommandContext args, CommandSender sender) throws CommandException {
            warnAboutSaveFailures(sender);
            Player player = plugin.checkPlayer(sender);
    
            // Check permissions
            if (!getPermissionModel(sender).mayDefine()) {
                throw new CommandPermissionsException();
            }
    
            String id = checkRegionId(args.getString(0), false);
    
            RegionManager manager = checkRegionManager(plugin, player.getWorld());
    
            checkRegionDoesNotExist(manager, id, true);
    
            ProtectedRegion region;
    
            if (args.hasFlag('g')) {
                region = new GlobalProtectedRegion(id);
            } else {
                region = checkRegionFromSelection(player, id);
                warnAboutDimensions(player, region);
                informNewUser(player, manager, region);
            }
    
            RegionAdder task = new RegionAdder(plugin, manager, region);
            task.addOwnersFromCommand(args, 2);
            ListenableFuture<?> future = plugin.getExecutorService().submit(task);
    
            AsyncCommandHelper.wrap(future, plugin, player)
                    .formatUsing(id)
                    .registerWithSupervisor("Adding the region '%s'...")
                    .sendMessageAfterDelay("(Please wait... adding '%s'...)")
                    .thenRespondWith(
                            "A new region has been made named '%s'.",
                            "Failed to add the region '%s'");
        }
     
  6. Автор темы
    mitya12342

    mitya12342 Активный участник

    Баллы:
    61
    Имя в Minecraft:
    mitya12342
    В исходном коде мало что понимаю, но смысл уловил. Спасибо ☺
     
  7. Phonix92a

    Phonix92a Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    phonix92a
    /rg claim - приват региона.
    /rg define - приват региона на другом регионе. То-есть например pvp арена внутри спавна, спавн приватишь /rg claim а pvp через /rg define.
    Удаче.):good:
     

Поделиться этой страницей