Где хранить инфу о доступных/выполненных квестах

Версия Minecraft
1.19.2
API
Forge
Хай всем снова я)

В общем у меня стал вопрос, о хранении информации о выполненных квестах
Я изначально целился на CAPABILITY и это на первый взгляд кажется верным решением, но в случае если квестов будет 10 000
Что произойдет? как это повлияет на клиент и сервер, сможет ли майнкрафт обрабатывать такое количество кап для 10 20 50 100 игроков?
да и к тому же если выполнить /data get по игроку, при таком количестве кап прочитать полученную инфу будет почти невозможно.
вот встает вопрос каким образом хранить подобный объем инфы об игроке

чем пользуетесь вы? дайте совет
 
Решение
Я попробую потом, напишу.
вот run.bat сервера
java @user_jvm_args.txt @libraries/net/minecraftforge/forge/1.19.3-44.1.0/win_args.txt %*
если туда заглянуть, а именно во второй файл, то тут идут перечисления библиотек, вот и добавляешь её туда в список
Код:
-p...
1,038
57
229
В моде хранишь переменную своего класса и(или) файле отдельном.
/data get по игроку
можно и через плагины (то есть у клиента в принципе их не будет, только в момент их открытия), а потом к этому уже дописать GUI
А можно через сетевые пакеты.
Тут в принципе на вкус и цвет, важна не столько реализация, сколько просто БД (SQLite, MySQL) или файловая система.. Это вообще не совсем к моддингу относится что ли. Вопрос конечно по моддингу, я имею ввиду что это мало связано с самой игрой. Это больше серверная задача. Я к тому что вопрос про хранение данных скорее, чем про моды.
Ещё такое хранят у игрока, в карте то есть, но яб не стал так делать на твоём месте.
Спрашивай тут, если что то не понятно.
 
Последнее редактирование:
можно и через плагины
Плагины не подходят, я на новых версиях пишу, связку мод + плагин не хочу использовать(типа религия не позволяет)
На высоких версиях пока либо плагин либо мод, мод конечно в приоритете
(то есть у клиента в принципе их не будет, только в момент их открытия)
То бишь в теории наличие 1 000 кап не должно повредить серву? если клиент будет обращаться к ним по одной, блеть, но нужен прогресс на клиенте отображать выполнено не выполнено доступно, а ну все равно из гуи клиент будет по одной к ним обращаться, тоже адекватно
БД (SQLite) или файловая система..
Файловая система сразу отпадает, SQLite на сколько я понял это тоже файловая БД... У меня в планах меж серверная реализация нужна синхронизация. В идеале MySQL, но я не как не могу осилить подключение коннектора к моду, и опять же остается вопрос о хранении для оперативного доступа, ведь не сможет сервер без ущерба передавать данные по маршруту клиент -> сервер -> MySQL -> сервер - > клиент для 100 игроков хотя бы
 
1,038
57
229
передавать данные по маршруту клиент -> сервер -> MySQL -> сервер - > клиент для 100 игроков хотя бы
авторизация и регистрация на сервере так и работает.
SQLite имеет 1 единственный файл, в от отличии от MySQL. SQLite не требует сервера, это просто файл с которым очень удобно работать благодаря тому же синтаксису SQL (как и у MySQL). Если конечно ты его знаешь)))
MySQL имеет несколько файлов и её ещё дробить можно и работает она в разы быстрее SQLite. НО требует сервер, в конфигах которого ты и указываешь сколько он может взять от системы ресурсов. И чем больше памяти ты ему дашь, тем быстрее он будет работать.
Просто скажу что запрос на MySQL из данных в 10 миллионов записей выполняется за секунду (а щас с многоядерными процессорами наверное за 1/10 секунды = 100 миллисекунд). Это бомба просто, ни одна файловая система столько не даст. Но опять же зависит от запроса и возвращаемых данных. Если тебе только получить описание квеста или список квестов для игрока, это выполнится мгновенно. Не думаю что на сервере будет больше 100 000 учётных записей игроков.
Не сложно изучить, потом ещё спасибо скажешь))

NoSQL это тип базы данных больше похожие на файловую систему. Где данные могут быть целым объектом. А объекты все разные. То есть она медленнее, но иногда удобнее. Зависит от данных. Но на 10 лямов данных она сдохнет.

Плагины не подходят
фишка плагинов в том, что клиент не сможет спереть мод, потому что его нет.
То есть если сделать через команды, это вынуждает иметь этот плагин и у себя на сервере, а его в открытом доступе не будет.
Ну и они вообще решают многие вопросы (в том числе авторизация и регистрация). То есть они расширяют даже ваниль, при этом клиент может быть любым (с модами или даже без всех модов).
 
фишка плагинов в том, что клиент не сможет спереть мод, потому что его нет.
То есть если сделать через команды, это вынуждает иметь этот плагин и у себя на сервере, а его в открытом доступе не будет.
Ну и они вообще решают многие вопросы (в том числе авторизация и регистрация). То есть они расширяют даже ваниль, при этом клиент может быть любым (с модами или даже без всех модов).
ну блять, меню через сундук, это зашквар реально
 
MySQL имеет несколько файлов и её ещё дробить можно и работает она в разы быстрее SQLite
так MySQL то на отдельном сервере будет, в этом и вся суть, просто проблема в одном, это ClassNotFoundException:
я столько времени угробил пытаясь подключить com.mysql.cj.jdbc.Driver что уже придумал свою программу вместо БД
которая будет синхронизировать межсервер

вот бы кто то готовое решение дал
 
1,038
57
229
вот бы кто то готовое решение дал

пойдет? GitHub - ZZZubec/PluginUtils: Utils for craftbukkit plugins
или напиши в телеграм, настроем тебе среду под это дело. Ник тот же.

так MySQL то на отдельном сервере
не на отдельном, а на том же где у тебя будет сервер, но можно и на отдельном, в том числе в локальной сети на другой машинке (в таком случае потери времени будут минимальными, то есть их можно сказать что и не будет).

Но если ты хочешь именно распространять мод, то этот вариант тебе не подходит. (SQLite подходит по прежнему и как отдельные файлы тоже).
Напиши вариант и своего мода или дополняй вопросами эту тему. Думаю это будет интересно многим.
 
Последнее редактирование:
или напиши в телеграм, настроем тебе среду под это дело. Ник тот же.
так это ж плагин вроде? мне именно из форжа требуется, но все равно спасибо, я от помощи не откажусь, только попозже добавлюсь
 
1,038
57
229
дополнил ответ
 
Но если ты хочешь именно распространять мод, то этот вариант тебе не подходит. (SQLite подходит по прежнему).
Напиши вариант и своего мода или дополняй вопросами эту тему. Думаю это будет интересно многим.
о дааа, эта тема ппц как популярна у ламеров вроде меня, и все темы закрываются сообщением типа пацаны я справился нашел ошибку, и все а где как что куда прописал нет нет нет, ни кто не пишет, я столько тем перечитал которые закончились успехом но как им это удалось ни кто не скинул решения

и вот с кодом нет ни каких проблем, проблема при компиляции я не понимаю как запихнуть либу вместе с модом
многие пишут что они кидают ее в папку mods на сервер и это помогает, но у меня все через жопу
 
1,038
57
229
и все темы закрываются сообщением типа пацаны я справился нашел ошибку, и все а где как что куда прописал нет нет нет
Дело в том, что рассказывая что то всем я обесцениваю труд тех кто дошел до этого сам. То есть как только сложные вещи делаются просто, они просто начинают копипаститься. То есть если на секунду представить что я могу дать ответ на любой твой вопрос, вот прям кодом, объяснить при этом каждую мелочь так чтобы ты понял. Всё. Стоит это увидеть всем, как все вдруг начнут делать это, просто потому что это легче всего. И если я потом приду к заказчику и скажу, вот я 6 лет учился этому, теперь я могу сделать это и стоит это 6 миллионов (оплата за то что я тратил своё время изучая этот вопрос за свои деньги, конечно я указал с потолка, любая цена сводиться в количестве потраченных на неё часов). Мне скажут, нафиг ты нам нужен, вон чувак пишет что прочитал как это сделать и может это сделать за 5000р. Понимаешь?
Тут свои моменты. Как только людям дали игровые движки типо Unity или UE, которых у нас никогда не было, мы всё изучали это сами. Люди просто толпами повалились делать игры и поняли что движок не решает вопросы связанные с геймдизайном, с монетизацией и прочими штуками которые надо знать чтобы именно продать игру (сделать игру, это только часть проблем)).
Но технологии растут и мир упрощается, поэтому новички учатся сложным вещам быстрее чем мы (ведь они стали проще). Раньше отыскать что то на ютубе по теме было просто не реально, многие даже до сих пор не пользуются ютуб (это конечно перебор), потому что им удобнее в текстовом виде.
 
Последнее редактирование:
1,074
72
372
фишка плагинов в том, что клиент не сможет спереть мод, потому что его нет.
Плагины давным-давно устарели. Bukkit - это древний мамонт, сильно отставший от развития Minecraft. Плагины сейчас используют поклонники написания костылей, ибо api сильно ограничено.
Всё то же самое можно сделать средствами мода. Чтобы не воровали, применяется "вырезалка" для клиентского билда мода - убирается вся серверная логика.

Выбор MySQL в качестве хранилища будет правильным выбором. Для подключения к БД понядобятся библиотеки hikaricp и mysql или mariadb connector.
 
Выбор MySQL в качестве хранилища будет правильным выбором. Для подключения к БД понядобятся библиотеки hikaricp и mysql или mariadb connector.
а можно понятный пособ их подключения что бы они вшивались при компилировании? что нужно прописать в билде?
 
1,038
57
229
я так делал, подобный пример работает прекрасно вне Forge
из под Forge я получаю постоянно ClassNotFoundException:

мне нужна прямая инструкция как оформить gradlew.build что бы данная библиотека компилилась вместе с модом, и была доступна хотя бы на серверве, а в идеале и в тестовой среде из под IDEA

моих познаний не хватает что бы разобраться с FG и в итоге у меня не компилится ни FatJar ни просто Jar вместе с библиотекой
также библа не подтигивается в RunTime

в этом вся загвоздка, услыште меня мне нужна помощь с правильным составлением gradlew.build потому что я не понимаю как это выполнить
 
1,038
57
229
на сервере, была папка libs и туда всё складывалось. Щас не знаю даже, Сервер просто forge? давай посмотрю..
 
Сверху