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

Плагин [DEV] PPLoader v1.1.0 - плагины на Python [1.6.4-R2.0]

Тема в разделе "Релизы плагинов", создана пользователем cyber_lis, 18 авг 2014.

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

    cyber_lis Активный участник Девелопер Пользователь

    Баллы:
    68
    PPLoader - Плагин для загрузки плагинов написанных на python:
    Версия: v1.1.0

    Разработка плагинов с помощью PPLoader идентична, разработке на java.
    Можно уверенно использовать документацию по разработки java плагинов,
    просто переводя код в python.

    Для того чтобы начать нужно:

    Пример простого плагина:
    Теперь вы можете в папке <ваш_сервер>/plugins создать папку test.py.dir(или любую другую главное чтобы заканчивалось на .py.dir) и можете закинуть туда файл plugin.yml и plugin.py

    plugin.yml
    Код:
        name: SamplePlugin
        main: SampleClass
        version: 0.1-dev
        commands:
            samplecommand:
                description: send a sample message
                usage: /<command>
    
    plugin.py
    Код:
        from org.bukkit.event import EventPriority
        from org.bukkit.event.player import PlayerJoinEvent
    
        class SimpleListener(PythonListener):
            def __init__(self, plugin):
                self.plugin = plugin
                PythonListener.__init__(self)
    
            @PythonEventHandler(PlayerJoinEvent, EventPriority.NORMAL)
            def onPlayerJoin(self, event):
                event.getPlayer().sendMessage('Wellcome to rccraft server')
              
        class SampleClass(PythonPlugin):
            def onEnable(self):
                pm = self.getServer().getPluginManager()
                self.listener = SimpleListener(self)
                pm.registerEvents(self.listener, self)
                print "sample plugin enabled"
    
            def onDisable(self):
                print "sample plugin disabled"
    
            def onCommand(self, sender, command, label, args):
                return False
    
    Не забывайте отделять блоки 4 пробелами!

    Руководство начинающего:
    https://github.com/cyberlis/pploader/wiki/Руководство-начинающего

    Особенности:
    • Позволяет загружать плагины написанные на python
    • Позволяет загружать/выгружать/перезагружать python плагины не перезагружая сервер

    Команды
    • /pploader load <plugin_file> plugin_file может любым заканчивающимся на .pyp, .py.zip, .py.dir (.py.dir обязательно каталог) Пример: /pploader load test.py.dir
    • /pploader unload <Plugin_Name> Plugin_Name имя плагина, которое вы указали в main в plugin.yml
    • /pploader reload <Plugin_Name> <plugin_file>

    Скачать плагин: http://dev.bukkit.org/bukkit-plugins/pploader/
    Исходный код: https://github.com/cyberlis/pploader
    Краткое введение на русском: https://github.com/cyberlis/pploader/blob/master/README_RUS.md
    Руководство начинающего: https://github.com/cyberlis/pploader/wiki/Руководство-начинающего

    Лог изменений:
    Версия 1.1.0
    • Бета релиз pploader1.1.0
     
    Последнее редактирование: 3 сен 2014
  2. MySt1k

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

    Баллы:
    173
    Эх... знать бы python =(
     
  3. Space Flux

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

    Баллы:
    46
    Ты можешь попробовать groovy :)
     
  4. Автор темы
    cyber_lis

    cyber_lis Активный участник Девелопер Пользователь

    Баллы:
    68
  5. ApaDoctor

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

    Баллы:
    103
    вау, нужно посмотреть...
    сильно грузит?
     
  6. Автор темы
    cyber_lis

    cyber_lis Активный участник Девелопер Пользователь

    Баллы:
    68
    Пока не заметил, чтоб что-то грузило. PPLoader дает возможность очень быстро написать плагин, чтобы поменять рецепт или добавить, пофиксить очередной дюп или баг. И все это достаточно быстро проверяется, потому что нет необходимости каждый раз компилировать плагин, а просто можно поменять пару значений и перегрузить плагин не вырубая сервер.
    Ну и тут ты можешь писать на питоне, что просто приятно ^__^
     
  7. ApaDoctor

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

    Баллы:
    103
    Да, писать на питоне однозначно приятно, прочувствовал это я благодаря VarScript'y
     
  8. Artem0001

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

    Баллы:
    78
    Имя в Minecraft:
    eWaster
    Я знаю python)
     
  9. ApaDoctor

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

    Баллы:
    103
    ну прям достижение - флаг тебе в руки, еще можешь сходить за пирожком(лежит на полке)!
    единственный человек, который знает пайтон на этом форуме:)
    З.ы. Не в обиду, конечно
     
  10. Artem0001

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

    Баллы:
    78
    Имя в Minecraft:
    eWaster
    Воу воу, полегче
    :)
     
  11. zuma2

    zuma2 Старожил Пользователь Заблокирован

    Баллы:
    173
    Skype:
    sytems.admin
    Имя в Minecraft:
    zuma2
    а че не php? :D
    А как же добавить рецепт?
    Пойду курить питон.
    Нету русской документации эвентов?
     
  12. Автор темы
    cyber_lis

    cyber_lis Активный участник Девелопер Пользователь

    Баллы:
    68
    Я
    Я русской не видел. Да и не нужна она особо. В руководстве для начинающих я дал ссылку на список эвентов. Их названия говорят сами за себя (например PlayerMoveEvent), а те пару строк которые написаны про событие можно и в гугл переводчи кинуть. Важно название эвента, чтобы его импортировать и какие доп. методы он содержит
     
  13. zuma2

    zuma2 Старожил Пользователь Заблокирован

    Баллы:
    173
    Skype:
    sytems.admin
    Имя в Minecraft:
    zuma2
    я однажды перевел плагин. получил перевод "Нажмите для паруса сервер'
    можно пример с верстаком? как добавить крафт.
     
  14. Автор темы
    cyber_lis

    cyber_lis Активный участник Девелопер Пользователь

    Баллы:
    68
    Пример простого плагина для добавления рецепта:

    Теперь вы можете в папке <ваш_сервер>/plugins создать папку test.py.dir(или любую другую главное чтобы заканчивалось на .py.dir) и можете закинуть туда файл plugin.yml и plugin.py

    plugin.yml
    Код:
        name: SamplePlugin
        main: SampleClass
        version: 0.1-dev
        commands:
            samplecommand:
                description: send a sample message
                usage: /<command>
    
    plugin.py
    Код:
    # -*- coding: utf-8 -*-
    from org.*********ventory import ItemStack
    from org.*********ventory import ShapedRecipe
    from org.bukkit.material import MaterialData
    
    class SampleClass(PythonPlugin):
        def onEnable(self):
            # Создаем красную шерсть. id 35:14 количество 8шт.
            red_wool = ShapedRecipe(ItemStack(35, 8, 0, 14))
         
            # Форма рецепта
            red_wool.shape("GCG", "RIR", "GCG")
         
            # Ингредиенты
            # Белая шерсть id 35
            red_wool.setIngredient('I', MaterialData(35))
            # Оранжевая шерсть id 35:1
            red_wool.setIngredient('G', MaterialData(35, 1))
            # Розовая шерсть id 35:2
            red_wool.setIngredient('R', MaterialData(35, 2))
            # Голубая шерсть id 35:3
            red_wool.setIngredient('C', MaterialData(35, 3))
         
            # Регистрируем рецепт в системе
            self.getServer().addRecipe(red_wool)
            print "[sample] plugin enabled"
    
        def onDisable(self):
            print "[sample] plugin disabled"
    
    Не забывайте отделять блоки 4 пробелами!
    Вот этот плагин https://yadi.sk/d/0ohpWREYavr7q
    Его можно открыть любым архиватором и глянуть исходный код. Также его можно кинуть в папку plugins (не распаковывая) и он с ходу будет работать
     
    Последнее редактирование: 3 сен 2014
  15. Bars

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

    Баллы:
    173
    О, наконец-то можно править код без компиляции. Работа с NMS, думаю, поддерживается. Так?
     
  16. Автор темы
    cyber_lis

    cyber_lis Активный участник Девелопер Пользователь

    Баллы:
    68
    Не хочу показаться идиотом, но что такое NMS ? если это net.minecraft.server, то да.
    Плагин использует все тоже самое, что java плагины. Импортировать и работать можно с любым классом, который можно импортировать java
     
    Последнее редактирование: 3 сен 2014
  17. DragoSFire

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

    Баллы:
    123
    Skype:
    dragosfire2012
    Имя в Minecraft:
    DragoSFire
    Божественно.
     
  18. jwplaster

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

    Баллы:
    173
    Skype:
    jwplaster.smartworld
    Имя в Minecraft:
    QviNSteN
    Ждём тоже для C# :)
     
  19. zuma2

    zuma2 Старожил Пользователь Заблокирован

    Баллы:
    173
    Skype:
    sytems.admin
    Имя в Minecraft:
    zuma2
    Спасибо за коментарии. буду курить питона ;3
    Что за цифры? red_wool = ShapedRecipe(ItemStack(35, 8, 0, 14))
     
  20. jwplaster

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

    Баллы:
    173
    Skype:
    jwplaster.smartworld
    Имя в Minecraft:
    QviNSteN
    А меня зачем цитировать?
    35 - id, 8 - кол-во, 0 - зачарование, 14 - под-id (То, что после : в id)
     

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