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

Плагин [MECH] SQLinv beta1.2 - двухсторонняя синхронизация инвентаря с БД [1.2.5-R5.0]

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

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

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

    Баллы:
    103
    Skype:
    beastgaming.support
    [Плагин не поддерживается много лет]

    SQLinv - хранение инвентаря в mysql базе данных.
    Версия: beta1.2

    Плагин синхронизирует данные с БД по событиям поднятия, крафта и выброса предмета, выхода и обратно по событию входа в игру. При смерти инвентарь в БД обнуляется, что исключает возможность дюпа немедленным выходом после смерти.

    Плагин корректно работает со всеми предметами имеющими "сестринские" элементы. Такие как дерево и доски, уголь - они бывают разных типов.

    Интеграция с другими плагинами:

    AuthMe:
    Значение ProtectInventoryBeforeLogIn должно быть выставлено в false. Иначе если человек зайдет на сервер и неавторизовавшись выйдет, то у него обнулится инвентарь

    Запланированно, ToDo:
    • Корректная работа с зачарованными предметами
    • Перевести формат данных на JSON
    • Интеграция с Scavenger
    • Поддержка мультиворлда (сепарация инвентарей)
    • Туториал по веб-обвязке. Как сделать веб-магазин на основе этого плагина?
    Команды:
    /sqlinv reload - перезагрузка конфигурации

    Сайт разработчика
    Страница на dev.bukkit.org
    Исходники на GitHub
    Скачать последнюю версию плагина

    Благодарности и донат:
    Вы не поверите, но если каждый кому плагин помог пожертвует даже по 50-100 рублей, то соберется сумма достаточно мотивирующая не бросать разработку :)
    R121569261507, Z261851150418, Яндекс.Деньги: 41001494329417

    Лог изменений:

    Версия beta1.2
    • Исправлен баг с глобальной переменной перемешивающий инвентари игроков
    Версия beta1.1
    • Добавлена команда /sqlinv reload - перезагрузка конфига
    • Исправлен баг с несуществующим эвентом в R4.0
    Версия beta1
    • Стартовая версия
     
    Последнее редактирование: 2 янв 2016
    Асп Адм, Bluer, Gamerus45 и 4 другим нравится это.
  2. Автор темы
    smile42ru

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

    Баллы:
    103
    Skype:
    beastgaming.support
    Резерв #1 - для туториала
     
  3. Автор темы
    smile42ru

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

    Баллы:
    103
    Skype:
    beastgaming.support
    Резерв #2 - для веб-обвязки
     
    Ccc нравится это.
  4. Автор темы
    smile42ru

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

    Баллы:
    103
    Skype:
    beastgaming.support
    Резерв #3 - а вдруг?
     
    Nyan_adm_dog нравится это.
  5. karolize

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

    Баллы:
    153
    Хммм... интересно, будет время, попробую)
     
  6. Автор темы
    smile42ru

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

    Баллы:
    103
    Skype:
    beastgaming.support
    Обязательно пробуйте! Нужна качественная обратная связь для развития и дебага плагина :)
     
  7. karolize

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

    Баллы:
    153
    Извиняюсь, моя трабла была)
     
  8. karolize

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

    Баллы:
    153
    А вообще сильно базу грузит?
     
    HoShiMin и slavik123123123 нравится это.
  9. Автор темы
    smile42ru

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

    Баллы:
    103
    Skype:
    beastgaming.support
    А я уж напрягся... :) Опишите проблему, запихнем в FAQ, а то вдруг кто еще столкнется.
     
  10. Автор темы
    smile42ru

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

    Баллы:
    103
    Skype:
    beastgaming.support
    На одного игрока считайте по одному запросу на каждое действие с блоком. Плюс незначительная на фоне вышесказанного нагрузка по входам\выходам.

    На самом деле для хороших машин - нагрузка плевая. Сейчас обкатываем на реальном сервере, соберем статистику, тогда будет понятно насколько сильно грузит.
     
  11. karolize

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

    Баллы:
    153
    За дурака сочтёшь) Уже который день php зубрю.. вот на синтаксисе и помешался... кратко говоря в конфиге нахимичил бог весть что :D
     
  12. Автор темы
    smile42ru

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

    Баллы:
    103
    Skype:
    beastgaming.support
    Бывает... Я вот сидел сегодня весь день с Java на PHP и обратно прыгал весь день, под вечер уже путался и запинался :D
     
  13. _Dimk_O_

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

    Баллы:
    123
    Skype:
    dimk__o
    Либо он у вас привязан именно под 1.2.5-R5.0
    Либо руки у меня не оттуда...

    Тест был на craftbukkit-1.2.5-R4.0-MCPC-SNAPSHOT-136
    К базе приконнектилсо, я побегал минут 5, кое какой лут набрал.
    Далее см. скриншот.
    Безымянный.png
    Если не понятно, то бд пуста.
    И при перезапуске сервера и заходе на него, инвентарь обнуляется.

    Сейчас попробую на чистой версии 1.2.5-R4.0 и отпишусь
     
    Сникерсни нравится это.
  14. Автор темы
    smile42ru

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

    Баллы:
    103
    Skype:
    beastgaming.support
    Табличка "sqlinv" создана руками в базе?
    Выложите лог от запуска сервера до 1-2 минуты "побегов" по миру.
     
  15. _Dimk_O_

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

    Баллы:
    123
    Skype:
    dimk__o
    Табличку плагин создал сам.

    Вот все что писал плагин в консоли:
    Первый запуск:

    2012-07-28 17:54:21 [INFO] [SQLinv] Loading SQLinv v0.1
    2012-07-28 17:54:24 [INFO] [SQLinv] Enabling SQLinv v0.1
    2012-07-28 17:54:25 [SEVERE] Plugin SQLinv is attempting to register event org/bukkit/event/player/PlayerItemBreakEvent, which does not exist. Ignoring events registered in class sqlinv.Main
    2012-07-28 17:54:27 [SEVERE] Cannot connect to database server
    2012-07-28 17:54:27 [SEVERE] java.lang.NullPointerException
    2012-07-28 17:54:27 [SEVERE]at sqlinv.DB.createTable(DB.java:54)
    2012-07-28 17:54:27 [SEVERE]at sqlinv.Main.onEnable(Main.java:60)
    2012-07-28 17:54:27 [SEVERE]at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:215)
    2012-07-28 17:54:27 [SEVERE]at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:337)
    2012-07-28 17:54:27 [SEVERE]at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:386)
    2012-07-28 17:54:27 [SEVERE]at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:262)
    2012-07-28 17:54:27 [SEVERE]at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:244)
    2012-07-28 17:54:27 [SEVERE]at net.minecraft.server.MinecraftServer.t(MinecraftServer.java:390)
    2012-07-28 17:54:27 [SEVERE]at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:377)
    2012-07-28 17:54:27 [SEVERE]at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:205)
    2012-07-28 17:54:27 [SEVERE]at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:441)
    2012-07-28 17:54:27 [SEVERE]at net.minecraft.server.ThreadServerApplication.run(SourceFile:492)

    ясен пень, файла конфига нет.

    Второй запуск:

    2012-07-28 17:55:53 [INFO] [SQLinv] Loading SQLinv v0.1

    2012-07-28 17:55:56 [INFO] [SQLinv] Enabling SQLinv v0.1
    2012-07-28 17:55:56 [SEVERE] Plugin SQLinv is attempting to register event org/bukkit/event/player/PlayerItemBreakEvent, which does not exist. Ignoring events registered in class sqlinv.Main
    2012-07-28 17:55:58 [INFO] Database connection established

    На этом все.
    Больше плагин признаков жизни не подавал.
     
  16. Автор темы
    smile42ru

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

    Баллы:
    103
    Skype:
    beastgaming.support
    Принято. Проблема ясна, этот эвент появился позже R4.0, и на самом деле особой роли не играет. Практически не используется при проверках инвентаря, был оставлен в коде по инерции...

    Исправлено, обновлено.
     
    _Dimk_O_ нравится это.
  17. _Dimk_O_

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

    Баллы:
    123
    Skype:
    dimk__o
    Благодарю :)
    Но теперь другое.

    При подключении первого юзера в консоли вылетает такое сообщение:
    18:58:56 [SEVERE] Could not pass event PlayerJoinEvent to SQLinv
    org.bukkit.event.EventException
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:304)
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:465)
    at net.minecraft.server.ServerConfigurationManager.c(ServerConfigurationManager.java:132)
    at forge.PacketHandlerServer.finishLogin(PacketHandlerServer.java:157)
    at forge.PacketHandlerServer.onModListResponse(PacketHandlerServer.java:102)
    at forge.PacketHandlerServer.onPacketData(PacketHandlerServer.java:37)
    at forge.MessageManager.dispatchIncomingMessage(MessageManager.java:419)
    at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:1349)
    at net.minecraft.server.Packet250CustomPayload.handle(SourceFile:46)
    at net.minecraft.server.NetworkManager.b(NetworkManager.java:234)
    at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:118)
    at net.minecraft.server.NetworkListenThread.a(NetworkListenThread.java:78)
    at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:581)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:470)
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:492)
    Caused by: java.lang.ArrayIndexOutOfBoundsException: 2
    at sqlinv.Inventory.restoreInv(Inventory.java:163)
    at sqlinv.Main.onJoin(Main.java:137)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302)
    ... 15 more
    Более оно не повторяется. Радует)

    Вопрос в другом.
    Я зашел под своим ником, _Dimk_O_, побегал, лут сохранился.
    Вышел, заменил значения в бд, зашел, изменения приняты. Все классно ^_^
    НО потом зашел под ником Player и увидел тот же инвентарь что был у меня под ником _Dimk_O_
    Так и было задумано?
     
  18. Автор темы
    smile42ru

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

    Баллы:
    103
    Skype:
    beastgaming.support
    Нет, конечно же. Попробую воспроизвести баг... Подобные ситуации были и у нас на живых серверах, но всего лишь пару раз - думал из-за того что серверов три штуки и пока они синхронизировались были коллизии.
     
  19. Инкогнито_о

    Инкогнито_о Старожил

    Баллы:
    153
    Плагин односторонний или нет?
    Поясняю:
    Если я буду добавлять изменения в таблицу инвентаря игрока, в игре у него тоже изменится инвентарь?
    Или этот плагин только для "мониторинга" инвентаря игрока?
     
  20. _Dimk_O_

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

    Баллы:
    123
    Skype:
    dimk__o
    Вывод напрашивается сам собой.
    Нужно читать темы))))
     
    Сникерсни нравится это.

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