Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

[Обсудим] Проверка блока на приват WG

MrTrojan

Активный участник
Пользователь
Баллы
98
Имя в Minecraft
BlackTrojan
Всем привет, я столкнулся с проблемой, есть блок, если игрок ломает его, то нужно мне проверить запривачен ли блок регионом WorldGuard.

Гугл не помогает :(
 
тут куча примеров из различных плагинов, за пару мин можно найти что тебе нужно
 
Почему именно на приват WG. А если у человека стоит другой плагин?
По-мому нужен универсальный метод. И проверить это досаточно просто. Прежде чем ставить блок - самостоятельно проверить событием BlockPlaceEvent может ли игрок ставить в конкретном месте это блок. Если событие отменено - блок запривачен. Это будет и быстрее и универсальнее чем если проверять через WG.

Вот пример кода, который проверяет может ли игрок ломать блок - соответственно используется событие BlockBreakEvent, для BlockPlaceEvent можно сделать аналогичный вариант.
 
Почему именно на приват WG. А если у человека стоит другой плагин?
По-мому нужен универсальный метод. И проверить это досаточно просто. Прежде чем ставить блок - самостоятельно проверить событием BlockPlaceEvent может ли игрок ставить в конкретном месте это блок. Если событие отменено - блок запривачен. Это будет и быстрее и универсальнее чем если проверять через WG.

Вот пример кода, который проверяет может ли игрок ломать блок - соответственно используется событие BlockBreakEvent, для BlockPlaceEvent можно сделать аналогичный вариант.
Просто я пишу плагин, который позволит некоторым опнутым игрокам ставить блоки, если он поставит блок, то событие не будет отменено.
 
Тогда может пермишены настроить? Опа тоже можно ограничить кое в чем )
 
Почему именно на приват WG. А если у человека стоит другой плагин?
По-мому нужен универсальный метод. И проверить это досаточно просто. Прежде чем ставить блок - самостоятельно проверить событием BlockPlaceEvent может ли игрок ставить в конкретном месте это блок. Если событие отменено - блок запривачен. Это будет и быстрее и универсальнее чем если проверять через WG.

Вот пример кода, который проверяет может ли игрок ломать блок - соответственно используется событие BlockBreakEvent, для BlockPlaceEvent можно сделать аналогичный вариант.
На многих серверах продают возможность ломать и строять во всех регионах, так что для таких серверов способ не подходит.
 
По-мому нужен универсальный метод. И проверить это досаточно просто. Прежде чем ставить блок - самостоятельно проверить событием BlockPlaceEvent может ли игрок ставить в конкретном месте это блок. Если событие отменено - блок запривачен. Это будет и быстрее и универсальнее чем если проверять через WG.
Универсальный и плохой метод. Вы про плагины логов не подумали? Будут лишние записи о разрушении блоков. Получится что игрок ломал блок не один раз, а сразу два.
 
Почему именно на приват WG. А если у человека стоит другой плагин?
По-мому нужен универсальный метод. И проверить это досаточно просто. Прежде чем ставить блок - самостоятельно проверить событием BlockPlaceEvent может ли игрок ставить в конкретном месте это блок. Если событие отменено - блок запривачен. Это будет и быстрее и универсальнее чем если проверять через WG.

Вот пример кода, который проверяет может ли игрок ломать блок - соответственно используется событие BlockBreakEvent, для BlockPlaceEvent можно сделать аналогичный вариант.

Универсальный и плохой метод. Вы про плагины логов не подумали? Будут лишние записи о разрушении блоков. Получится что игрок ломал блок не один раз, а сразу два.

Я не понимаю, почему баккит изначально не сделал универсального метода, к которому цеплялись бы все прочие плагины-рестрикторы, это бы решило множество проблем с ними. Год назад я выдвигал идею плагина, который будет выполнять эту функцию - http://rubukkit.org/threads/claim-api.67307/, но без поддержки авторов плагинов это бессмысленно.
 
Не вижу проблем использовать API WG, написать 5-6 строчек кода и в "боевых" условиях проверить нагрузку на сервер при его использовании.
Поучить getApplicableRegions ломаемого блока, проверить на null, если не не null и колво элементов массива >1 (или 2-х с учетом __global__) то блок в чьем-то привате.
 
Универсальный и плохой метод. Вы про плагины логов не подумали? Будут лишние записи о разрушении блоков. Получится что игрок ломал блок не один раз, а сразу два.

Вы слишком категоричны. И не правы. Если событие отменено логгер не пишет (а если пишет - то ему делать нечего). А вот вызов метода setType он не пишет.
Вот стандартная ситуация. Вы делаете плагин, в котором игрок ставит (или ломает) какое-то количество блоков.
Вы проверяете прокидывая событие возможность установки в этих блоках и если событие не отменено выполняете block.setType(..). Всё.
Логгер регистрирует ваше событие, а setType - не регистрирует.

А вот если Вы через WG проверяете приват блока, а потом block.setType то... события на установку блока нет. Никто о нём не знает. Логгеры идут курить, а админы не могут понять кто где нагрифил.
Кроме того, на сервере может ещё стоять Factions и ещё несколько других плагинов, которые так или иначе реализуют приват. Если Вы проверяете только на WG, то.... Увы.

Я не понимаю, почему баккит изначально не сделал универсального метода, к которому цеплялись бы все прочие плагины-рестрикторы, это бы решило множество проблем с ними. Год назад я выдвигал идею плагина, который будет выполнять эту функцию - http://rubukkit.org/threads/claim-api.67307/, но без поддержки авторов плагинов это бессмысленно.

Да потому что этот плагин не нужен. В Бакките уже есть то что нужно - события BlockPlaceEvent и BlockBreakEvent. Если событие отменено - приват есть. Если событие никто не отменил - у игрока досаточно прав чтобы ставить тут блоки.

Аналогично можно все события использовать. Кстати, Heroes именно таким способом проверяет можно ли наносить урон скиллами (заклинания и т.п.) игрокам.
 
Да потому что этот плагин не нужен. В Бакките уже есть то что нужно - события BlockPlaceEvent и BlockBreakEvent. Если событие отменено - приват есть. Если событие никто не отменил - у игрока досаточно прав чтобы ставить тут блоки.
Только для механизмов это не подходит. Они же не игроки. Использовать фейков - тоже не есть хорошо.

Если Вы проверяете только на WG, то.... Увы.
Я пишу плагины только для личных нужд. Я не пользуюсь другими плагинами привата, поэтому мне их поддержка нафиг не нужна.
 

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

Назад
Верх