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

Плагин [chat/web]MSC_SiteChat

Тема в разделе "Неподтвержденные плагины", создана пользователем danilko, 16 фев 2015.

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

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

    Баллы:
    103
    MSC_SiteChat - чат сервера на сайте:
    Версия: v0.1
    Плагин для демонстрации работы API(моста). Возможности самые минимальные, защиты почти нет. Использовать "на продакшене" можно, но не стоит.
    Особенности:
    • Может выводить последние сообщения с сервера на сайте
    • Можно отправлять сообщения с сайта на сервер
    • Использует мост MSC_bridge
    Скачать тестовый плагин
    Подумал не стоит создавать отдельный репозиторий на github для одного файла. (ну ладно, трех ещё ж бинарник и plugin.yml)
    В общем src:
    Код:
    package danilko09.msc_sitechat;
    import danilko09.msc_bridge.MSC_bridge;
    import danilko09.msc_bridge.event_handler;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import org.bukkit.Bukkit;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerChatEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    public class MSC_SiteChat extends JavaPlugin implements Listener,event_handler{
      private Logger log;
      private String[] str = new String[64];
      private int lst = 0;
    
      public void onEnable(){
      log = this.getLogger();
      log.info("MSC_SiteChat has been enabled!");
      ((MSC_bridge) Bukkit.getPluginManager().getPlugin("MSC_bridge")).addHandler("chat", this);
      getServer().getPluginManager().registerEvents(this, this);
    }
    public void onDisable(){
      log.info("MSC_SiteChat has been disabled.");
    }
    
      @EventHandler public void onChat(PlayerChatEvent event) {
    
      new Thread(){
      public void run(){
      try { ((MSC_bridge) Bukkit.getPluginManager().getPlugin("MSC_bridge")).callSite("chat",""); }
      catch (Exception ex) { Logger.getLogger(MSC_SiteChat.class.getName()).log(Level.SEVERE, null, ex); }
      }
      }.start();
      String msg = "["+event.getPlayer().getDisplayName()+"]"+event.getMessage();
      addToLog(msg);
      }
    
      private void addToLog(String msg){
      if(lst < str.length){
      str[lst] = msg;
      lst++;
      }else{
      int i;
      for(i = 1; i<str.length;i++){
      str[i-1] = str[i];
      }
      str[i] = msg;
      }
      }
      @Override
      public String onRequest(String uri) {
      if(!"".equals(uri) && uri != null){
      try {
      uri = uri.substring(1, uri.length());
      String res = ((MSC_bridge) Bukkit.getPluginManager().getPlugin("MSC_bridge")).callSite("chat",uri);
      if(!"".equals(res) && res != null){
      String msg = "[site]"+"["+uri+"]"+res;
      Bukkit.broadcastMessage(msg);
      addToLog(msg);
      }
      } catch (Exception ex) {
      Logger.getLogger(MSC_SiteChat.class.getName()).log(Level.SEVERE, null, ex);
      }
      }
      String ret = "";
      for(int i = 0; i<str.length;i++){
      if(str[i] == null){break;}
      ret = ret + str[i]+"\n";
      }
      return ret;
      }
    
    }
    
    Говнокодно... Позже причешу, чтоб глаза не резало.
    Лог изменений:
    Версия 0.1
    • Релиз плагина

    Веб-часть скоро будет доступна в репозиториях msc. (Похоже завтра, так как подключиться что-то не могу к серверам)
     
  2. Хостинг MineCraft
    <
  3. Plasticable

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

    Баллы:
    173
    Skype:
    plasticable
    Имя в Minecraft:
    Plasticable
    Воу-воу-воу... Что с табуляцией? И комментарии-бы не помешали[DOUBLEPOST=1424114191,1424114135][/DOUBLEPOST]
    И обычно делают наоборот.
    res.equals("")
     
  4. makssof

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

    Баллы:
    103
    Skype:
    makssofez
    М-м. А если res null? NPE
     
  5. Plasticable

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

    Баллы:
    173
    Skype:
    plasticable
    Имя в Minecraft:
    Plasticable
    анал тут при чём?
     
  6. makssof

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

    Баллы:
    103
    Skype:
    makssofez
    null.equals("") норма?
     
  7. Автор темы
    danilko

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

    Баллы:
    103
    С табуляцией всё было ок до "CTRL+C CTRL+V". Комментарии будут, как до причесывания дойду, это завтра, наверно.(Сейчас пока не могу, занят)
    [​IMG]

    Без разницы же. NetBeans предложил поменять, я согласился.
     
  8. makssof

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

    Баллы:
    103
    Skype:
    makssofez
    Потому что я писал выше, вот почему. (с)
     
  9. Plasticable

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

    Баллы:
    173
    Skype:
    plasticable
    Имя в Minecraft:
    Plasticable
    К тебе уже Малышева бежит
     
  10. makssof

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

    Баллы:
    103
    Skype:
    makssofez
    akhq6o.jpg.jpg
     
  11. Автор темы
    danilko

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

    Баллы:
    103
    Он всегда предлагает поменять.
    [​IMG]
    NullPointerException жш, если вне контекста API смотреть. А так, у меня там будет передаваться "", а не null так что разницы нет. В примере с null сравнивается на всякий случай.
     
  12. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Обычно-таки и делают "".equals, это надёжнее.
    if(str == null || "".equals(str)) ...
     
  13. Автор темы
    danilko

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

    Баллы:
    103
    Я загрузил веб-часть в репозиторий
    На скрины попали чьи-то смешные шуточки, не обращайте внимания.

    1)Качаем базовый набор пакетов CMS MSC: WebSiteEngine 4 (тема)
    2)Заходим в админку (ссылка и данные для входа будут на главной странице нового сайта)
    3)Идем в раздел обновления
    4)Ставим все доступные обновления (для этого в разделе обновления жмем на ссылку "проверить наличие обновлений";рекомендую сначала обновить индексы всех репозиториев, потом пакет updater и после этого все оставшееся)
    5)Добавляем новый репозиторий "http://msc-repo.16mb.com/dev" или "http://qeop.ru/msc-repo/dev" в список
    [​IMG]
    6)Идем на страницу проверки обновлений и обновляем индекс нового репозитория
    7)Добавляем пакет MSC_SiteChat на странице редактирования списка пакетов
    [​IMG]
    8)Ставим все обновления, всё там же на странице "проверить наличие обновлений"
    С установкой все.

    Теперь надо настроить мост. Пока что удобного варианта настройки нет, но чуть позже допилю.
    Ну а сейчас приходится лазить в код.
    Итак, открываем в вашем любимом редакторе файл "{сайт}/cms/scripts/msc_bridge.php"
    И в строчке
    Код:
    private static $server = "http://localhost:8888/";
    
    Меняем localhost на ip вашего minecraft-сервера, а 8888 на порт API (по умолчанию 8080)

    Далее настраиваем API со стороны игрового сервера.
    Закидываем плагины на сервер, запускаем выключаем, чтоб появился конфиг. И теперь опять же в любимом редакторе открываем файл "{сервер_minecraft}/plugins/MSC_bridge/config.yml" и меняем параметр out.site следующим образом: localhost опять же меняем на адрес, но только уже сайта, далее если CMS стоит не в корне, то перед "?" дописываем путь. Все остальное можно оставить как есть, так как мы используем стандартный пакет для CMS.

    Теперь дело за малым. Надо где-нибудь в шаблоне оформления сайта разместить две строчки:
    Код:
     <content type="scripts" name="MSC_SiteChat" action="sendMessForm"/>
    <content type="script" name="MSC_SiteChat" action="showHistory"/>
    я их добавил в {сайт}/cms/templates/default/admin.html после блока с основным контентом и теперь они выводятся на всех страницах админки, даже не авторизированным пользователям.
    Все, на этом установка завершена.
     

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