Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
public void onJoinRg(RegionEnterEvent e)
{
Player p = e.getPlayer();
Vehicle vehicle = Main.plugin.getPlayerVehicle(p);
if(e.getRegion().getId().equalsIgnoreCase("gaz") || e.getRegion().getId().equalsIgnoreCase("gaz1") || e.getRegion().getId().equalsIgnoreCase("gaz2"))
{
if(p.getInventory().contains(Material.IRON_NUGGET) && vehicle != null)
{
e.setCancelled(true);
p.sendMessage(Utils.getColor("&6 У Вас в инвентаре уже есть бензин!"));
}
}
}
Мои глаза...Не работает. Мб я что-то не так делаю?
P.S использую wgregionevents для ивентов входа/выхода из ргPHP:public void onJoinRg(RegionEnterEvent e) { Player p = e.getPlayer(); Vehicle vehicle = Main.plugin.getPlayerVehicle(p); if(e.getRegion().getId().equalsIgnoreCase("gaz") || e.getRegion().getId().equalsIgnoreCase("gaz1") || e.getRegion().getId().equalsIgnoreCase("gaz2")) { if(p.getInventory().contains(Material.IRON_NUGGET) && vehicle != null) { e.setCancelled(true); p.sendMessage(Utils.getColor("&6 У Вас в инвентаре уже есть бензин!")); } } }
Я слету нашел проблему и эта проблема в неуказанной аннотацииНе работает. Мб я что-то не так делаю?
P.S использую wgregionevents для ивентов входа/выхода из ргPHP:public void onJoinRg(RegionEnterEvent e) { Player p = e.getPlayer(); Vehicle vehicle = Main.plugin.getPlayerVehicle(p); if(e.getRegion().getId().equalsIgnoreCase("gaz") || e.getRegion().getId().equalsIgnoreCase("gaz1") || e.getRegion().getId().equalsIgnoreCase("gaz2")) { if(p.getInventory().contains(Material.IRON_NUGGET) && vehicle != null) { e.setCancelled(true); p.sendMessage(Utils.getColor("&6 У Вас в инвентаре уже есть бензин!")); } } }
@EventHandler
Либо регистрация, либо аннотация, одно из двухДа я вот тоже заметил, но подумал что не факт, что чел ее может просто не скопировал сюда. А может и совсем не зарегал ивенты, мало ли 🙂
Ну давай, расскажи мне что тут не так, научи меня как лучшеМои глаза...
Ну давай, расскажи мне что тут не так, научи меня как лучше
Та после такого дальше и смотреть не хочется, что за говно там)Main.plugin
Ну не юзает он DI и геттер к Plugin, это не очень и страшно для негоТа после такого дальше и смотреть не хочется, что за говно там)
Все, кто начинал с Bukkit, а не Java*Он же новичок еще, чего ты так докопался. Все мы так говнокодили в первые разы 🙂
Сделал так как ты сказал, и действительно, ивент не срабатывает если я на машине... Но что же делать в такой ситуации?Чекай дебаг сообщения как я писал выше. Скорее там сам ивент не срабатывает.
1. Стиль кода с ошибками. Скобки { не нужно выносить на новую строку, а оставлять через пробел
2. Часть кода можно оптимизировать, к примеру:
лучше бы заменить на подобное:Код:if(e.getRegion().getId().equalsIgnoreCase("gaz") || e.getRegion().getId().equalsIgnoreCase("gaz1") || e.getRegion().getId().equalsIgnoreCase("gaz2"))
+ обьединить со следующим условием через &&Код:if(e.getRegion().getId().toLowerCase().startsWith("gaz"))
Ну или если нужно конкретно эти 3 региона, то:
Всегда "кешируй" результат, если он используется в дальнейшем много раз.Код:String regionID = e.getRegion().getId(); List<String> regions = Arrays.asList("gaz", "gaz1", "gaz2"); if(regions.contains(regionID))
Хм, а где же конструктивная критика? Ты указал на "Main.plugin" и что? Или ты думаешь что я 2 раза обратился к main? Я просто не очень понял суть твоего сообщенияТа после такого дальше и смотреть не хочется, что за говно там)
Он к тому, что не нужно юзать статик главного класса, а юзать объект этого класса, который нужно передать в конструктор другого класса, т.е. DI крчХм, а где же конструктивная критика? Ты указал на "Main.plugin" и что? Или ты думаешь что я 2 раза обратился к main? Я просто не очень понял суть твоего сообщения
Теперь понятно. СпасибоОн к тому, что не нужно юзать статик главного класса, а юзать объект этого класса, который нужно передать в конструктор другого класса, т.е. DI крч
в WGAPI нет эвентов которые отслеживают это, а у меня нормально работает WG RegionEventsА почему ивент не срабатывает? Я правильно понимаю, что придется выбросить этот "WGRegionEvents" и делать без него, используя wg api ?
Я не про эвенты, я знаю что там их нет. У меня тоже нормально работает wg region events, но когда я именно на машине из vehicles, эвенты из этого плагина просто не срабатывают. Сейчас вообще не знаю что мне делать =(в WGAPI нет эвентов которые отслеживают это, а у меня нормально работает WG RegionEvents
Хорошо, спасибо большое! Я попробую и если у меня чего-то не получится - я открою тему снова =)Да, тебе придется делать вручную детект перехода в регион из региона. Проблема - тот плагин учитывает только PlayerMoveEvent, но в вагонетке например при движении не вызывается PlayerMoveEvent, а только VehicleMoveEvent. На лодке вызываются оба ивента.
Можешь еще взять тот плагин и немного изменить, добавив VehicleMoveEvent под общую схему.