1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите BlazeAndCave's отслеживание ачивок

Тема в разделе "Разработка плагинов для новичков", создана пользователем iDimasik__, 5 фев 2021.

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

    iDimasik__ Новичок

    Баллы:
    6
    Кароче у меня проблемма, я написал плагин который при детекте выполнения ачивок выдавал очки на скордборд игроку, на ваниле этот плагин хорошо работал. Но когда я установил пак ачивок BlazeAndCave's он перестал нормально работать, когда ты ешь еду, то евент который обнаруживает выполнения ачивок начинает работать (хотя не должен). Кто знает как можно решить проблемму?
     
  2. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Прикалываешься? Ответил в прошлой теме, нужно лишь капельку включить соображалку.
    http://rubukkit.org/threads/otslezhivanie-achivok.174980/

    Сам скачал пак и увидел на сервере следующие категории advancement'ов:
    recipes, enchanting, bacap, nether, potion, technical, challenges, biomes, weaponry, combat, husbandry, mining, building, adventure, farming, animal, end, redstone, statistics, story

    А теперь догадайся, какие из них нужно отключить для обработки.

    Если совсем лень два слова написать - используй NMS (который на других версиях работать не будет):
    PHP:
    @EventHandler
    private void on(PlayerAdvancementDoneEvent event) {
        
    net.minecraft.server.v1_16_R3.AdvancementDisplay display = ((org.bukkit.craftbukkit.v1_16_R3.advancement.CraftAdvancementevent.getAdvancement()).getHandle().c();
        if (
    display == null) return;
        
    JsonObject json = (JsonObjectdisplay.k();
        
    boolean show_toast json.get("show_toast").getAsBoolean();
        
    boolean announce_to_chat json.get("announce_to_chat").getAsBoolean();
        if (!
    show_toast && !announce_to_chat) return;

        
    event.getPlayer().sendMessage("Вы выполнили ачивку " event.getAdvancement().getKey());
    }
     
    Последнее редактирование: 5 фев 2021

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