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

Помогите WorldEdit selection event. Поймать выделение территории

Тема в разделе "Разработка плагинов для новичков", создана пользователем MOR_IV, 27 янв 2016.

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

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

    Баллы:
    88
    Имя в Minecraft:
    MOR_IV
    Мне надо отловить выделение территории игроком, будь то топор, hpos, //move, //expand и т.п.
    слушать все команды как то громоздко. Нашел http://wiki.sk89q.com/wiki/WorldEdit/API/Hooking_EditSession
    Но ни фига не пойму, можно ли это использовать.

    Код ниже в консоли выполнятся только при команде //wand
    и то в консоли вижу: 1, 2 повторяющиеся 3 раза.
    Походу я идиот или лыжи не едут.
    WE 6+
    Код:
    package ru.mor.iv.lockregion.listeners;
    
    import org.bukkit.Bukkit;
    
    import com.sk89q.worldedit.Vector;
    import com.sk89q.worldedit.blocks.BaseBlock;
    import com.sk89q.worldedit.event.extent.EditSessionEvent;
    import com.sk89q.worldedit.extension.platform.Actor;
    import com.sk89q.worldedit.extent.Extent;
    import com.sk89q.worldedit.extent.logging.AbstractLoggingExtent;
    import com.sk89q.worldedit.util.eventbus.Subscribe;
    
    public class SelectionListener {
        @Subscribe
        public void wrapForLogging(EditSessionEvent event) {
            Bukkit.getLogger().info("1");
            Actor actor = event.getActor();
            if (actor != null && actor.isPlayer()) {
                event.setExtent(new MyLogger(actor, event.getExtent()));
            }
        }
       
       
        public class MyLogger extends AbstractLoggingExtent {
            private final Actor actor;
        
            public MyLogger(Actor actor, Extent extent) {
                super(extent);
                this.actor = actor;
                Bukkit.getLogger().info("2");
            }
           
            @Override
            protected void onBlockChange(Vector position, BaseBlock newBlock) {
                Bukkit.getLogger().info("3");
            }
        }
    }
     
  2. Автор темы
    MOR_IV

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

    Баллы:
    88
    Имя в Minecraft:
    MOR_IV
  3. XjCyan1de

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

    Баллы:
    76
    Имя в Minecraft:
    XjCyan1de
  4. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173

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