Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Туториал Разработка плагина - online

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем pomo4ka, 31 май 2011.

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

    pomo4ka Старожил

    Баллы:
    103
    Всем привет. Я новичек в языке Java и разработке плагинов.
    Сдесь я буду писать небольшие скрипты как сделать плагин.
    Если есть желающие научить или помочь, пожалуйста пиши сюда :)

    Показывает статус подключения / отключения плагина в консоли:

    Код:
    package me.pomo4ka.test; //Название пакета
    
    import java.util.logging.Logger;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class test extends JavaPlugin{
    Logger log = Logger.getLogger("Minecraft"); //Подключаем к консоли Minecraft
    public void onEnable(){
    log.info("Test plugin is enabled!"); //Показывает что плагин подключен
    }
    public void onDisable(){
    log.info("Test plugin is disable!"); //Показывает что плагин отключен
    }
    }
    
    Выглядит это вот так:
    test.jpg
     
    appl3_w0rm, good(), Sheogorath и 4 другим нравится это.
  2. Хостинг MineCraft
    <
  3. Artemus

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

    Баллы:
    63
    Я бы не против помочь но есть проблема я почти не знаком с языком java но если тут смогут обьяснить то буду помогать с удовольствием
     
    ПриветОтМиднайта и Sheogorath нравится это.
  4. UnderTheCross

    UnderTheCross Активный участник

    Баллы:
    88
    При входе в игру появляется приветствие. В аттаче приложил исходники
    v1
    [​IMG]
    Приветствие.java
    Код:
    package UnderTheCross;
    
    import org.bukkit.event.Event.Priority;
    import org.bukkit.event.Event.Type;
    import org.bukkit.plugin.PluginDescriptionFile;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class Приветствие extends JavaPlugin {
     private PluginDescriptionFile info;
     private PluginManager manager;
    
     public void onDisable() {
     info = getDescription();
     System.out.println("[" + info.getName() + " " + info.getVersion() + "] disable.");
    
     }
    
     public void onEnable() {
     info = getDescription();
     manager = getServer().getPluginManager();
     
     manager.registerEvent(Type.PLAYER_JOIN, new Игроки(this), Priority.Low, this);
     
     System.out.println("[" + info.getName() + " " + info.getVersion() + "] enabled.");
    
     }
    }
    
    Игроки.java
    Код:
    package UnderTheCross;
    
    import org.bukkit.entity.Player;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.event.player.PlayerListener;
    
    public class Игроки extends PlayerListener{
    
        Приветствие plugin;
    
        public Игроки(Приветствие plugin) {
            this.plugin = plugin;
        }
    
        @Override
        public void onPlayerJoin(PlayerJoinEvent event) {
            Player player = event.getPlayer();
    
            if(player != null)
                player.sendMessage("Добро пожаловать " + player.getDisplayName());
        }
    
    }
    
    plugin.yml
    Код:
    name: Welcome
    version: 0.1
    main: UnderTheCross.Приветствие
    authors: [UnderTheCross]
     

    Вложения:

    • src.zip
      Размер файла:
      1,3 КБ
      Просмотров:
      89
    Sheogorath нравится это.
  5. miker9

    miker9 Активный участник

    Баллы:
    88
    При создание плагина у меня возникла такая проблема:На любой event появляется ошибка could not pass event [имя эвента] to [имя listener-a].В чем может быть проблема?
     
  6. UnderTheCross

    UnderTheCross Активный участник

    Баллы:
    88
    Попробуй добавить
    Код:
    import org.bukkit.event.Event;
    import org.bukkit.event.Event.Priority;
    import org.bukkit.event.server.PluginDisableEvent;
    import org.bukkit.event.server.PluginEnableEvent;
    import org.bukkit.event.server.ServerListener;
     
  7. miker9

    miker9 Активный участник

    Баллы:
    88
    При импорте org.bukkit.event.server.ServerListener; org.bukkit.event.server.PluginEnableEvent; org.bukkit.event.server.PluginDisableEvent; эклипс говорит что они не используются, а остальное и так импортировано.
     
  8. UnderTheCross

    UnderTheCross Активный участник

    Баллы:
    88
    Скинь код посмотрю
     
  9. miker9

    miker9 Активный участник

    Баллы:
    88
    Код:
    
    import org.bukkit.event.Event;
    import org.bukkit.event.Event.Priority;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class wcmain extends JavaPlugin{
        private final wcPlayerListener pl = new wcPlayerListener();
        @Override
        public void onDisable() {
            System.out.println("Test plugin was disabled");
        }
    
        @Override
        public void onEnable() {
            PluginManager pm = getServer().getPluginManager();
            pm.registerEvent(Event.Type.PLAYER_LOGIN, this.pl, Priority.Normal, this);
            System.out.println("Test plugin was enabled");
        }
    }
    Код:
    
    import org.bukkit.Server;
    import org.bukkit.entity.Player;
    import org.bukkit.event.player.PlayerListener;
    import org.bukkit.event.player.PlayerLoginEvent;
    
    public class wcPlayerListener extends PlayerListener{
        public void onPlayerLogin(PlayerLoginEvent event)
        {
            Player player = event.getPlayer();
            Server server = player.getServer();
            if(player.isOp())
            {
            server.broadcastMessage("Администратор " + player.getName() + " Присойденился к серверу!");
            }
        }
    
    }
    
     
    MineMan910 нравится это.
  10. UnderTheCross

    UnderTheCross Активный участник

    Баллы:
    88
    Все нормально если эклипс выдает ошибку скачай NetBeans IDE
     
    Vedroyder нравится это.
  11. miker9

    miker9 Активный участник

    Баллы:
    88
    Ошибку выдает сервер.
     
  12. UnderTheCross

    UnderTheCross Активный участник

    Баллы:
    88
    Вы создали файл plugin.yml? У меня все норм, но сам плагин не работает, то есть при заходе на сервер ничего не пишет
     
  13. miker9

    miker9 Активный участник

    Баллы:
    88
    Код:
    name: Welcome op
    version: 0.1
    main: welcome.wcmain
    Вот он.
    Он должен писать только про опов.
     
    ВремяПриключений нравится это.
  14. UnderTheCross

    UnderTheCross Активный участник

    Баллы:
    88
    Я знаю, я свой переделал для опов все норм, но ваш не работает
     
  15. UnderTheCross

    UnderTheCross Активный участник

    Баллы:
    88
    У тебя ошибка в том что надо не PlayerLogin, а PlayerJoin
    Вот такой код будет
    Код:
    import org.bukkit.event.Event;
    import org.bukkit.event.Event.Priority;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class wcmain extends JavaPlugin{
        private final wcPlayerListener pl = new wcPlayerListener();
        @Override
        public void onDisable() {
            System.out.println("Test plugin was disabled");
        }
    
        @Override
        public void onEnable() {
            PluginManager pm = getServer().getPluginManager();
            pm.registerEvent(Event.Type.PLAYER_JOIN, this.pl, Priority.Normal, this);
            System.out.println("Test plugin was enabled");
        }
    }
    Код:
    import org.bukkit.Server;
    import org.bukkit.entity.Player;
    import org.bukkit.event.player.PlayerListener;
    import org.bukkit.event.player.PlayerJoinEvent;
    
    public class wcPlayerListener extends PlayerListener{
        public void onPlayerJoin(PlayerJoinEvent event)
        {
            Player player = event.getPlayer();
            Server server = player.getServer();
            if(player.isOp())
            {
            server.broadcastMessage("Администратор " + player.getName() + " Присойденился к серверу!");
            }
        }
    
    }
     
    Оригинало_о нравится это.
  16. miker9

    miker9 Активный участник

    Баллы:
    88
    Я понял в чем ошибка.Я сначала импортировал буккит с десктопа, потом удалил его и импортировал в эклипс еще один буккит из папки сервера(старый тоже остался в эклипсе) и изза этого происходили ошибки.:)
     
  17. UnderTheCross

    UnderTheCross Активный участник

    Баллы:
    88
    И с PlayerLogin все работает?
     
  18. miker9

    miker9 Активный участник

    Баллы:
    88
    Нет, наверно это что то другое.
     
  19. UnderTheCross

    UnderTheCross Активный участник

    Баллы:
    88
    Тот код который скидывал я работает нормально
     
  20. miker9

    miker9 Активный участник

    Баллы:
    88
    Block reporter.Сообщает в чат если кто то(не оп) поместил лаву, воду или динамит а также их координаты.
    Код:
    package block_reporter;
    
    import org.bukkit.event.Event;
    import org.bukkit.event.Event.Priority;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class BC_main extends JavaPlugin{
        public final BC_BlockListener BL = new BC_BlockListener();
        @Override
        public void onDisable() {
            System.out.println("Block reporter 0.1 was disabled");
        }
    
        @Override
        public void onEnable() {
            PluginManager PGM = getServer().getPluginManager();
            PGM.registerEvent(Event.Type.BLOCK_PLACE, BL, Priority.Normal, this);
            System.out.println("Block reporter 0.1 was enabled");
        }
    }
    
    Код:
    package block_reporter;
    
    import org.bukkit.Server;
    import org.bukkit.block.Block;
    import org.bukkit.entity.Player;
    import org.bukkit.event.block.BlockListener;
    import org.bukkit.event.block.BlockPlaceEvent;
    
    public class BC_BlockListener extends BlockListener{
        public void onBlockPlace(BlockPlaceEvent event)
        {
            Player player = event.getPlayer();
            Server server = player.getServer();
            Block block = event.getBlock();
            int ID = block.getTypeId();
            if(!player.isOp())
            {
                if(ID == 10)
                {
                    server.broadcastMessage(player.getDisplayName() + " Поставил лаву " + block.getX() + " " + block.getY() + " " + block.getZ());
                }
                else if(ID == 8)
                {
                    server.broadcastMessage(player.getDisplayName() + " Поставил воду " + block.getX() + " " + block.getY() + " " + block.getZ());
                }
                else if(ID == 46)
                {
                    server.broadcastMessage(player.getDisplayName() + " Поставил динамит " + block.getX() + " " + block.getY() + " " + block.getZ());
                }
            }
        }
    }
     
  21. Lets_Rock

    Lets_Rock Активный участник

    Баллы:
    63
    Я сообственно, буду готов помочь, если какой-нибудь пользователь скинет мне туториал по этому языку, или будет меня учить сам. :)
     

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