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

Плагин [DEV] CustomGUI v1.1 - GUI API для плагинов [1.2.5]

Тема в разделе "Релизы плагинов", создана пользователем makkarpov, 26 июл 2012.

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

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

    Баллы:
    88
    CustomGUI - GUI API для плагинов
    Версия: v1.1

    Плагин предоставляет разработчиком API для создания своих GUI (окошки с кнопками). Для его работы нужна модификация клиента (приложена в архиве). Плагин предоставляет функционал для определения наличия мода у того или иного игрока (при попытке открыть GUI у игрока без мода ничего не произойдет, но ошибок не будет). Состав GUI определяется сервером

    Особенности:
    - требуется установка клиентского мода, но имеется возможность определить, имеет ли юзер мод, или нет

    Описание API:
    Внимание: добавьте softdepend: [CustomGuiApi] в ваш plugin.yml!
    Присоединение к плагину:
    Код:
    public CustomGuiPlugin cgp = null;
     
    public boolean initGui() {
        Plugin temp = getServer().getPluginManager().getPlugin("CustomGuiApi");
        if (!(temp instanceof CustomGuiPlugin)) return false;
        cgp = (CustomGuiPlugin) temp;
        return true;
    }
     
    public void onEnable() {
        ...
        initGui();
        ...
    }
    Регистрация обработчика событий (класс обработчика должен реализовывать интерфейс IGuiHandler):
    Код:
    cgp.addGuiHandler(this);
    Методы в интерфейсе - onJoinWithMod(Player p) (когда присоединяется игрок с установленным модом), onGuiEvent(GuiEvent evt) - когда игрок нажимает кнопку в GUI.

    Показ GUI игроку делается так:
    Код:
    GuiScreen scr = cgp.newGui(player, "WindowID");
     
    // добавление кнопок, картинок, надписей
     
    scr.send();
    WindowID - передается в GuiEvent, когда юзер нажал кнопку. Если установить WindowId пустой строкой, то событие GuiEvent не возникнет.
    Примеры использования API вы найдете в файле CustomGUIApiTest.jar (в архиве приложены исходники). Плагин теста активируется командой /testgui
    2012-07-26_20.57.58.png 2012-07-26_20.58.10.png 2012-07-26_20.58.17.png 2012-07-26_20.58.05.png

    Changelog:
    v 1.1
    - добавлено два новых класса - Progressbar и Slider
    v 1.0:
    - релиз

    [скачать]
     
    OsipXD, JackHammer, Klonaps и 13 другим нравится это.
  2. duckmen

    duckmen Гусибатор9000 Пользователь

    Баллы:
    173
    Skype:
    Duckmenn
    Имя в Minecraft:
    Duckmen
    сделай стандартный размер , шрифт жирным можешь оставить.

    Лог изменений суй в самый низ.
    а Описание API , думаю , лучше будет засунуть как документацию в архив с плагином
     
  3. Автор темы
    makkarpov

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

    Баллы:
    88
    Описание я засунул под споилер, чтобы скачивающие имели хоть какое-то представление о том, что они качают. Остальное поправил. В архиве примеры для API есть
     
    Vedroyder нравится это.
  4. Rissman

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

    Баллы:
    78
    Имя в Minecraft:
    Rissman
    Неплохо.
     
  5. AvengeR

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

    Баллы:
    88
    Супер.
    Интересно, а как будет выглядеть действие кнопки
    "отправить определенную команду в чат и закрыть GUI" ?
     
  6. Автор темы
    makkarpov

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

    Баллы:
    88
    В onGuiEvent() проверяете WinID и ID кнопки, если совпадают - делаете то, что надо (кажется, так: event.user.chat("/help")); В самой кнопке никаких опций указывать не надо
     
  7. AvengeR

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

    Баллы:
    88
    Код:
    2012-07-28 22:53:39 [SEVERE] Could not load 'plugins\CustomGuiApiTest.jar' in folder 'plugins'
    org.bukkit.plugin.InvalidPluginException: java.lang.NoClassDefFoundError: ru/mkcraft/customgui/IGuiHandler
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:151)
        at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:310)
        at forge.bukkit.ForgePluginManager.loadPlugin(ForgePluginManager.java:55)
        at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:231)
        at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:221)
        at org.bukkit.craftbukkit.CraftServer.<init>(CraftServer.java:197)
        at net.minecraft.server.ServerConfigurationManager.<init>(ServerConfigurationManager.java:59)
        at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:177)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:438)
        at net.minecraft.server.ThreadServerApplication.run(SourceFile:492)
    Caused by: java.lang.NoClassDefFoundError: ru/mkcraft/customgui/IGuiHandler
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:41)
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:29)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:140)
        ... 9 more
    Caused by: java.lang.ClassNotFoundException: ru.mkcraft.customgui.IGuiHandler
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:41)
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:29)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 25 more
    Ошибка при загрузке тестового плагина.
    p/s Стоит CB с Forge.
     
  8. Автор темы
    makkarpov

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

    Баллы:
    88
    Вы плагин CustomGuiServer.jar поставили? Именно там находится API, и как следствие он нужен для загрузки
     
  9. AvengeR

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

    Баллы:
    88
    Да да да, я поставил его.
    Я сначало подумал проблема в том что, GUI тест подгружается именно раньше чем GUIServer.
    Добавил в plugin.yml GUIServer строчку load: startup - не помогло.
     
  10. Автор темы
    makkarpov

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

    Баллы:
    88
    Можете скинуть весь лог загрузки?
     
  11. AvengeR

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

    Баллы:
    88
    Добавьте в шапку темы что в своем плагине, а именно в plugin.yml необходимо вписать необходимый параметр
    softdepend, он позволит сначало загрузится самому API а затем его дополнениям.
    Пример :
    Код:
    name: CustomGuiApiTest
    version: 1.0
    softdepend: [CustomGuiApi]
    main: ru.mkcraft.customguiapitest.Main
    commands:
      testgui:
        description: A gui test cmd
    
    P/S моя проблема решена. Советую исправить тестовый плагин.

    Огромное спасибо за ваше API. Буду делать свой сервер уникальнее :)
     
    Night-Died нравится это.
  12. Автор темы
    makkarpov

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

    Баллы:
    88
    Архив перезалил
     
    slavik123123123 нравится это.
  13. AvengeR

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

    Баллы:
    88
    А можно исходники плагина?)
     
  14. Автор темы
    makkarpov

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

    Баллы:
    88
    А смысл? Функции плагина - работа с протоколом, ничего больше
     
  15. ufes

    ufes Старожил Девелопер Пользователь

    Баллы:
    173
    Если сам делал, то ты крут
     
  16. ufes

    ufes Старожил Девелопер Пользователь

    Баллы:
    173
    Прошу залить на нормальный файлообменник, так как с рб качает долго. И безопасней будет.
     
  17. Автор темы
    makkarpov

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

    Баллы:
    88
    Добавил зеркало. Писал сам. Что касается отправки сообщения в чат:
    1) Создаете окно с каким нибудь ID
    2) Создаете кнопку, режим 0, с каким-нибудь ID
    3) В обработчике нажатия кнопки сверяете оба ID и если верны, то вызываете код написания в чат.

    Код написания в чат
     
  18. slenky

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

    Баллы:
    173
    Spoutcraft, добавление GUI - 5 минут :D
    Но работа отличная, ничего не скажешь.
     
    Сникерсни нравится это.
  19. AvengeR

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

    Баллы:
    88
    Споут не работает с Forge.
     
  20. ufes

    ufes Старожил Девелопер Пользователь

    Баллы:
    173
    там гемора дохера, ещё и моды не поставишь на сервер
     

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