Простой плагин на примере NoSteve

Discussion in 'Разработка плагинов' started by fromgate, 8/12/15.

  1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
Dismiss Notice
We welcome you on our site. This site is devoted to the Nukkit project and all that is connected with him. Here you can communicate, download plugins, also many other things get acquainted! Register the account right now :3
  1. fromgate

    fromgate Administrator

    Messages:
    665
    Likes Received:
    186
    В качестве примера, привожу самый простой плагин, который только может быть: NoSteve


    Исходный код - всего навсего один класс:
    Code:
    package ru.nukkit.plugins.nosteve;
    
    import cn.nukkit.event.EventHandler;
    import cn.nukkit.event.Listener;
    import cn.nukkit.event.player.PlayerLoginEvent;
    import cn.nukkit.plugin.PluginBase;
    
    public class NoSteve extends PluginBase implements Listener {
    
    [pre][code]public void log (String message){
        this.getLogger().info(colorize (message));
    }
    
    @Override
    public void onEnable() {
        log ("&fenabled!");
        this.getServer().getPluginManager().registerEvents(this,this);
    }
    
    public String colorize(String textToTranslate){
        char[] b = textToTranslate.toCharArray();                                                       
        for (int i = 0; i < b.length - 1; i++) {                                                       
            if ((b[i] == '&') && ("0123456789AaBbCcDdEeFfKkLlMmNnOoRr".indexOf(b[(i + 1)]) > -1))
            {                                                                                             
                b[i] = '§';                                                                                 
                b[(i + 1)] = Character.toLowerCase(b[(i + 1)]);                                             
            }                                                                                             
        }                                                                                               
        return new String(b);                                                                           
    }
    
    @EventHandler
    public void onLogin (PlayerLoginEvent event){
        if (!event.getPlayer().getName().equalsIgnoreCase("Steve")) return;
        event.setKickMessage(colorize ("&cSteve, you're not welcome here!"));
        event.setCancelled(true);
    }
    [/pre]
    }
    [/CODE]

    Вот plugin.yml:
    Code:
    #name, main, version and api are required
    name: NoSteve
    main: ru.nukkit.plugins.nosteve.NoSteve
    
    [size=7]remember version and api is string, don't write it like this: 1.0.0, or there will be an exception[/size]
    version: "0.0.1"
    api: ["1.0.0"]
    load: POSTWORLD
    author: fromgate, nukkit.ru
    description: Steve name is forbidden at your server!
     
  2. Iggy

    Iggy Pioneer

    Messages:
    17
    Likes Received:
    1
    Minecraft:
    Iggy
    Очень интересный проект, но где я могу взять API документацию для плагинов?)
     
  3. fromgate

    fromgate Administrator

    Messages:
    665
    Likes Received:
    186
    @Iggy
    Документации пока не существует.
    Но в тоже время, лично для меня она не требуется (как не требовалась и документация для bukkit).
    Методы названы "логично", по сравнению с craftbukkit - есть огромное преимущество: тут нет NMS.
    Т.е. подключаешь в качестве библиотеки nukkit.jar и компилируешь.
    В качестве образца - можно брать любой плагин декомпилировать или смотреть исходники на githab'е.

    Вот мои наккит-плагины на гитхабе:
    https://github.com/fromgate/Welcome
    https://github.com/fromgate/WhereAmI
    https://github.com/fromgate/Space2Slash

    Система развивается, каждый день что-то добавляется.
    Теоретически это может коснуться и готовых плагинов, но этого пугаться не нужно - всё что меняется - это к лучшему ;)
     

Share This Page