WorldGuard - открытие вагонеток с воронкой в рг

Mrkiller

Пользователь
Сообщения
259
Решения
4
Всем привет, ребята. Кто может написать плагин, который разрешить игрокам открывать вагонетки с воронкой в других регионов? Делаю гриф, кому не сложно, напишите :)
Ядро - Paper 1.16.5
 
Всем привет, ребята. Кто может написать плагин, который разрешить игрокам открывать вагонетки с воронкой в других регионов? Делаю гриф, кому не сложно, напишите :)
Ядро - Paper 1.16.5
Java:
@EventHandler (priority = EventPriority.LOWEST)
public void onInteract(EntityInteractEvent e) {
    if(e.getEntity() instanceof Entity.HOPER_MINECART) {
        e.setCancelled(false);
    }
} // ТОЧНО НЕ ПОМНЮ ПИСАЛ ОТ РУКИ
 
Будьте осторожны с рекомендациями этого пользователя.
Вот этот ивент попробуй.

Java:
@EventHandler(priority = EventPriority.MONITOR)
    public void onUse(PlayerInteractEntityEvent e) {
        if(e.getRightClicked().getType() == EntityType.MINECART_HOPPER){
            Bukkit.getLogger().info("Hopper Clicked!");
            e.setCancelled(false);
        }
    }

EntityInteractEvent - взаимодействие сущности и блока.
PlayerInteractEntityEvent - взаимодействие игрока и сущности.
 
Строго запрещено использование нецензурных слов, брани, оскорбительных выражений, в независимости от того, в каком виде и кому они были адресованы
Вот этот ивент попробуй.

Java:
@EventHandler(priority = EventPriority.MONITOR)
    public void onUse(PlayerInteractEntityEvent e) {
        if(e.getRightClicked().getType() == EntityType.MINECART_HOPPER){
            Bukkit.getLogger().info("Hopper Clicked!");
            e.setCancelled(false);
        }
    }

EntityInteractEvent - взаимодействие сущности и блока.
PlayerInteractEntityEvent - взаимодействие игрока и сущности.
offtop пипяу...

Объединено

Вот этот ивент попробуй.

Java:
@EventHandler(priority = EventPriority.MONITOR)
    public void onUse(PlayerInteractEntityEvent e) {
        if(e.getRightClicked().getType() == EntityType.MINECART_HOPPER){
            Bukkit.getLogger().info("Hopper Clicked!");
            e.setCancelled(false);
        }
    }

EntityInteractEvent - взаимодействие сущности и блока.
PlayerInteractEntityEvent - взаимодействие игрока и сущности.
Java:
// если и сравнивать то только так:
if(e.getRightClicked() instanceof HopperMinecart) {
    // code
}
Объединено

Вот этот ивент попробуй.

Java:
@EventHandler(priority = EventPriority.MONITOR)
    public void onUse(PlayerInteractEntityEvent e) {
        if(e.getRightClicked().getType() == EntityType.MINECART_HOPPER){
            Bukkit.getLogger().info("Hopper Clicked!");
            e.setCancelled(false);
        }
    }

EntityInteractEvent - взаимодействие сущности и блока.
PlayerInteractEntityEvent - взаимодействие игрока и сущности.
а EventPriority.MONITOR вроде как запускается после запуска всех эвентов.
Если по этой логике, то WorldGuard event запустится раньше чем твой и он отменит твое действие.
 
Последнее редактирование модератором:
а EventPriority.MONITOR вроде как запускается после запуска всех эвентов.
Если по этой логике, то WorldGuard event запустится раньше чем твой и он отменит твое действие.
В WorldGuardGriefFix от Overwrite, все ивенты по разрешению грифа поршнями, вагонетками и т.д. именно этот уровень и всё работает (Да и он сам вроде имеет хорошую репутацию тут).
Вам необходимо зарегистрироваться для просмотра изображений-вложений

И я решил не проводить кучу тестов и проверок, а использовать уже готовый и рабочий вариант.
 
В WorldGuardGriefFix от Overwrite, все ивенты по разрешению грифа поршнями, вагонетками и т.д. именно этот уровень и всё работает (Да и он сам вроде имеет хорошую репутацию тут).
Вам необходимо зарегистрироваться для просмотра изображений-вложений

И я решил не проводить кучу тестов и проверок, а использовать уже готовый и рабочий вариант.
использовал метод LOWEST = отмена вообще всех эвентов wg, и поверх их накладывал свои. Новые сообщения, партиклы, тайтлы и тд.
 
использовал метод LOWEST = отмена вообще всех эвентов wg, и поверх их накладывал свои. Новые сообщения, партиклы, тайтлы и тд.
У меня сработало только так
Даже highest не помогал
 
Вот этот ивент попробуй.

Java:
@EventHandler(priority = EventPriority.MONITOR)
    public void onUse(PlayerInteractEntityEvent e) {
        if(e.getRightClicked().getType() == EntityType.MINECART_HOPPER){
            Bukkit.getLogger().info("Hopper Clicked!");
            e.setCancelled(false);
        }
    }

EntityInteractEvent - взаимодействие сущности и блока.
PlayerInteractEntityEvent - взаимодействие игрока и сущности.
не работает
Объединено

Что-то ваще нечего не помогает
 
скажи игрокам чтобы после грифа из привата вагонетки удочками доставали и смотрели лут
не, ну помоги, как плагин работать то?
Объединено

скажи игрокам чтобы после грифа из привата вагонетки удочками доставали и смотрели лут
а новым как я буду говорить?
Объединено

offtop Как тему поднять?
 
Последнее редактирование:
не работает
Объединено

Что-то ваще нечего не помогает
Мне не удалось найти оптимизированный метод, чтобы отличить инвентарь вагонетки с воронкой и инвентарь воронки.
Java:
    @EventHandler(priority = EventPriority.HIGH)
    public void InventoryOpenEvent(InventoryOpenEvent e) {
        if (e.isCancelled() && e.getInventory().getType() == InventoryType.HOPPER) {
            e.setCancelled(false);
        }
    }
    @EventHandler(priority = EventPriority.HIGH)
    public void PlayerInteractAtEntityEvent(PlayerInteractAtEntityEvent e) {
        if (e.isCancelled() && e.getRightClicked().getType() == EntityType.MINECART_HOPPER) {
            e.setCancelled(false);
        }
    }
    @EventHandler(priority = EventPriority.HIGH)
    public void PlayerInteractEntityEvent(PlayerInteractEntityEvent e) {
        if (e.isCancelled() && e.getRightClicked().getType() == EntityType.MINECART_HOPPER) {
            e.setCancelled(false);
        }
    }
 
Мне не удалось найти оптимизированный метод, чтобы отличить инвентарь вагонетки с воронкой и инвентарь воронки.
Java:
    @EventHandler(priority = EventPriority.HIGH)
    public void InventoryOpenEvent(InventoryOpenEvent e) {
        if (e.isCancelled() && e.getInventory().getType() == InventoryType.HOPPER) {
            e.setCancelled(false);
        }
    }
    @EventHandler(priority = EventPriority.HIGH)
    public void PlayerInteractAtEntityEvent(PlayerInteractAtEntityEvent e) {
        if (e.isCancelled() && e.getRightClicked().getType() == EntityType.MINECART_HOPPER) {
            e.setCancelled(false);
        }
    }
    @EventHandler(priority = EventPriority.HIGH)
    public void PlayerInteractEntityEvent(PlayerInteractEntityEvent e) {
        if (e.isCancelled() && e.getRightClicked().getType() == EntityType.MINECART_HOPPER) {
            e.setCancelled(false);
        }
    }
Можешь написать плагин?
Объединено

Можешь написать плагин?
Именно не код скинуть, а написать?
 
@EventHandler(priority = EventPriority.MONITOR)
Никогда так не делай. MONITOR должен только отслеживать состояние отмены, но никак не менять это состояние. В крайнем случае используй HIGHEST

Если по этой логике, то WorldGuard event запустится раньше чем твой и он отменит твое действие.
Ты явно не понимаешь, как вообще работают приоритеты. Если нужно перезаписать отмену, сделанную ВГ - нужно обрабатывать как раз ПОСЛЕ ВГ. Иначе ВГ сам перепишет твоё изменение.
 
Никогда так не делай. MONITOR должен только отслеживать состояние отмены, но никак не менять это состояние. В крайнем случае используй HIGHEST


Ты явно не понимаешь, как вообще работают приоритеты. Если нужно перезаписать отмену, сделанную ВГ - нужно обрабатывать как раз ПОСЛЕ ВГ. Иначе ВГ сам перепишет твоё изменение.
не знаю, lowest сработал
 
да хватит писать жирным шрифтом
Я привык так писать :)
Объединено

Мне нечего не помогает, а ещё, и за того что нельзя открыть вагонетку с воронкой, нельзя и удочкой притянуть -_-
 
Назад
Сверху Снизу