Статьи

Объявление Пуругина

Purugin — основанный на Ruby фреймворк для Minecraft, написанный поверх Bukkit .

http://www.github.com/enebo/Purugin

Мотивация

Minecraft — забавная игра сама по себе. Если бы он остался таким же, как сегодня, то люди продолжали бы наслаждаться Minecraft еще долго. Тем не менее, все игроки являются критиками, и все игроки любят возможность что-то менять в игре здесь и там. Поскольку Minecraft написан на Java, появилось много инициатив плагинов, позволяющих именно это. Огромное количество модов, доступных для игры, просто поражает. При взгляде на источник нескольких из этих модов меня поразило то, что … Черт! Я бы лучше написал эти вещи на Ruby. К счастью, JRuby существует …

Purugin написан с использованием JRuby и размещается поверх Bukkit. Bukkit — это API-интерфейс, который отображается на запутанные API-интерфейсы Minecraft, а также предоставляет множество удобств для написания плагинов на стороне сервера. Bukkit API сам по себе не особенно сложен в использовании, но поскольку он является Java и потому что он не может использовать блоки / замыкания, он имеет больше синтаксиса / церемоний, чем то, что вы можете сделать в синтаксисе Ruby. Purugin — это плагин Bukkit, который позволяет регистрировать плагины, написанные на Ruby. Ууу ….

Начало работы

(Примечание: предполагается, что вы уже приобрели и установили Minecraft …

довольно сложно модифицировать игру, которой у вас на самом деле нет;)) Чтобы установить Purugin, вы должны сначала получить CraftBukkit, CraftBukkit является дополнением к библиотеке Bukkit, которая управляет серверами Minecraft. Установите CraftBukkit ( инструкции ), а затем получите копию файла Purugin.jar и поместите его в каталог плагинов CraftBukkit. Теперь также поместите пример плагина Purugin player_joined.rb в каталог плагинов. Наконец, вам нужна копия jruby-complete.jar ( http://www.jruby.org/download ) в корне вашего каталога CraftBukkit. После того, как вы сделали все это, в вашем каталоге CraftBukkit должны быть добавлены следующие вещи:

CraftBukkit/plugins/Purugin.jar
                   /player_joined.rb
           /jruby-complete-1.6.1.jar

Теперь запускаем CraftBukkit:

java  -Xms1024M -Xmx1024M -cp jruby-complete-1.6.1.jar:craftbukkit-0.0.1-SNAPSHOT.jar org.bukkit.craftbukkit.Main

Когда он запустится, вы увидите, что консоль подошла, и вы увидите несколько примечательных строк:

17:38:36 [INFO] [PuruginPlugin] version 0.1 ENABLED
17:38:36 [INFO] [PlayerJoined] version 0.1 ENABLED

Итак, в этот момент, если вы запустите Minecraft и войдете в многопользовательскую игру на localhost (или на каком-либо хосте, на котором вы используете свой сервер), вы должны увидеть сообщение: Player {your_name} присоединился.

player_joined-2011-05-12-08-42.jpg

Давайте посмотрим на исходный код для плагина player_joined.rb:

purugin('PlayerJoined', 0.1) do
    def on_enable
        # Tell everyone in players world that they have joined
        event(:player_join) do |e|
            e.player.world.players.each do |p|
                p.send_message "Player #{e.player.name} has joined"
            end
        end
  
        # Tell everyone in players world that they have quit
        event(:player_quit) do |e|
            e.player.world.players.each do |p|
                p.send_message "Player #{e.player.name} has quit"
            end
        end
    end
end

Просто просматривая этот источник, я думаю, совершенно очевидно, как вы отправили сообщение присоединенного игрока. Давайте рассмотрим несколько других аспектов написания любого плагина. Для начала есть
метод
пуругин . Этот метод содержит имя плагина и версию вместе с блоком, который является логикой для плагина. Использование блочного метода для этого материала иногда неадекватно, так как область видимости блока немного более ограничивает, чем определение класса. Для более традиционного определения, использующего класс, смотрите
https://github.com/enebo/Purugin/blob/master/examples/player_joined_full_class.rb, Я предпочитаю использовать краткое основанное на методе определение до тех пор, пока оно не станет болезненным. Для коротких плагинов, подобных этому, определение на основе методов делает плагин намного более лаконичным. Каждому свое …

Следующий интересный бит — это метод жизненного цикла
on_enable . Существуют три метода жизненного цикла, которые вас будут интересовать:
on_load ,
on_enable и
on_disable . Вы можете обратиться к документации Bukkit для точного определения, но я думаю, что они довольно интуитивно понятны. Для большинства людей вы, вероятно, будете использовать только
on_enable .
Иногда можно использовать
on_load , если вы хотите, чтобы что-то было загружено до того, как какой-либо плагин в системе был включен.

Внутри
on_enable вы обычно регистрируете события. В этом случае мы регистрируем слушателей для
: player_joined и
: player_quit , но есть много-много событий, которые вы можете зарегистрировать. Вы можете контролировать практически все, что угодно. См. Каталог примеров в источнике Purugin для получения дополнительной информации. [Примечание:: player_joined или любое имя события на самом деле не является символом в Bukkit. Это Пуругин пытается сделать API немного чище. На данный момент отсутствует документация для Purugin, но источник довольно мал, и таблицы для событий или типов блоков не заставят себя долго ждать. Пожалуйста, подумайте над тем, чтобы помочь мне документировать вещи через патчи документации rdoc в вики, связанной с этим проектом].

Первые дни

На данный момент я сделал небольшую коллекцию
примеры , которые включены в источник. Я рекомендую смотреть на них как на способ начать.
command.rb — это плагин для регистрации команд.
locs_plus.rb — это плагин, который использует commands.rb для регистрации своих собственных команд.
ports.rb — это простой плагин для телепортов (из специально обозначенных знаков), который показывает, как смотреть на блоки.

Со временем я (кто-то) сделаю еще несколько руководств и помогу лучше разобраться в API. Это очень скромное начало с API, о котором я очень мало знал. Ожидайте изменения и, возможно, помогите облегчить это изменение через проблемы Github
и
запросы на получение прав (или редактирование
вики ).

 

С http://blog.enebo.com/2011/05/purugin.html