Помогите проверка возможности установить блок, WG

  • Автор темы Автор темы Zcrafts
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Zcrafts

Активный участник
Пользователь
Баллы
61
Имя в Minecraft
Zigo
В чем суть: нужно проверить может ли игрок допустим установить блок на своих координатах.
Всё
А теперь суть всей идеи: допустим кто-то припёрся в чужой приват и тупо мешает. Теперь игрок может написать команду /phelnah <ник> и его тпхает на спавн и кикает с каким-то сообщением типа "Тебе тут не рады". но если игрок состоит в привате, или модер или админ, а у них есть возможность строить в привате, то игроки пишет ответ мол "Данного игрока нельзя прогнать". Но в чем фишка игрок должен сам мочь строить в том месте где стоит тот игрок которого он "посылает".
И да я не силён в пунктуации и те запятые которые я пропустил оставлю здесь:",,,,,,,,,,,,,,,,," :lol:.
 
А, версия 1.7.10, буду тестировать на последнем термосе.
 
Подключение плагина WorldGuard:
Java:
private WorldGuardPlugin worldGuard = (WorldGuardPlugin) getServer().getPluginManager().getPlugin("WorldGuard");
Проверка на возможность строить на location игрока:
Java:
worldGuard.canBuild(player, location) ;
Дальше идёт обработка нужной команды с проверкой прав и телепортация с сообщением.
 
Подключение плагина WorldGuard:
Java:
private WorldGuardPlugin worldGuard = (WorldGuardPlugin) getServer().getPluginManager().getPlugin("WorldGuard");
Проверка на возможность строить на location игрока:
Java:
worldGuard.canBuild(player, location) ;
Дальше идёт обработка нужной команды с проверкой прав и телепортация с сообщением.
А если тот игрок окажется совсем на другом регионе?)
 
Ну ты проверил на canBuild и больше ничего.
Игрок может вообще не на том регионе, от куда его послалали.
Ну конечно, проверить местоположение нужно, но это я писать не стал, подумал и так всем ясно.
 
Ну конечно, проверить местоположение нужно, но это я писать не стал, подумал и так всем ясно.
Потому, тут будет уместно так,

ApplicableRegionSet set = wg.getRegionManager(world).getApplicableRegions(location);
for(ProtectedRegion rg : set.getRegions()) {
Наши действия
}
P.s так мы сможем проверить, послал ли его владелец того региона. Находится ли тот чел в том самом регионе, от куда его послали.
 
Потому, тут будет уместно так,

ApplicableRegionSet set = wg.getRegionManager(world).getApplicableRegions(location);
for(ProtectedRegion rg : set.getRegions()) {
Наши действия
}
P.s так мы сможем проверить, послал ли его владелец того региона. Находится ли тот чел в том самом регионе, от куда его послали.
Да, верно, спасибо за дополнение.
 
фишка в том что нельзя прогнать того кто может строить в регионе, туда же входит модератор и администратор (у них пермишеном разрешено это), но при этом игрок написавший команду должен мочь строить в локации на кого направлена команда, но там будет небольшой костыль, дабы избежать ситуации незаприваченого мира игрок без прав, какой-то левый несуществующий =! может строить.
КонструкцияНаЯзыкеПонятномуКаждому:
Код:
Эвент команды(Отправитель, Команда, аргументы[]){
    if(Команда == "послать" && отправитель является Игрок){
       Посланный = гетИгрокПоНику(аргументы[0]);
       Левыйигрок = гетИгрокПоНику("shkoloOlolosha");
       локация = Посланный.гетЛокация();
          if(можетстроить(Отправитель,локация)&&
                        !можетстроить(Посланный,локация)&&
                                 !можетстроить(Левыйигрок,локация)){
          послать(Посланный);
          }else{
                Отправитель.сендинфо("Тебе нельзя этого делать");
          }
    }
}
 
фишка в том что нельзя прогнать того кто может строить в регионе, туда же входит модератор и администратор (у них пермишеном разрешено это), но при этом игрок написавший команду должен мочь строить в локации на кого направлена команда, но там будет небольшой костыль, дабы избежать ситуации незаприваченого мира игрок без прав, какой-то левый несуществующий =! может строить.
КонструкцияНаЯзыкеПонятномуКаждому:
Код:
Эвент команды(Отправитель, Команда, аргументы[]){
    if(Команда == "послать" && отправитель является Игрок){
       Посланный = гетИгрокПоНику(аргументы[0]);
       Левыйигрок = гетИгрокПоНику("shkoloOlolosha");
       локация = Посланный.гетЛокация();
          if(можетстроить(Отправитель,локация)&&
                        !можетстроить(Посланный,локация)&&
                                 !можетстроить(Левыйигрок,локация)){
          послать(Посланный);
          }else{
                Отправитель.сендинфо("Тебе нельзя этого делать");
          }
    }
}
Слушай, выше приведены все ключевые моменты, которые необходимо учесть при реализации решения этой проблемы.Тебе остается лишь добавить несколько логических проверок и только всего.Если ты этого сделать не можешь, то лучше начать с чего-нибудь более простого.Рассчитывать на то что за тебя напишут готовый плагин, после того как выше привели все нужные моменты, которые нужно знать, так же не стоит.
 
Я и не прошу написать за меня, ну поскольку я подобного нигде не видел, хотя бы оно не мешало, может кто-то возьмёт на вооружение. Я это написал ради идеи, возможно, кто-то проработает этот функционал в каком-то другом более крупном плагине будет как маленькая фича.
Закрыто.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх