Передача массивных пакетов

Версия Minecraft
1.7.10
355
2
17
Добро, необходимо наладить общение Мод «» Плагин, в принципе общение то налажено, вопрос стоит в том, какие есть варианты отправления массивов родными средствами?

Ранее использовал Gson, превращая массив объектов в Json строку и отправлял её через DataOutputStream#writeUTF, но на старых версиях это подключать отдельно библиотеку нужно.
Также неплохо работал NBT компрессор, но насколько я понимаю у Bukkit\Spigot нет NBT, ну или я его не откопал.

Какими еще оптимальными методами можно отправлять массивы подобного содержания?

JSON:
"name" : {
    "key1": "value",
    "key2": "value",
    "key3": "value"
},
"name2" : {
    "key1": "value",
    "key2": "value",
    "key3": "value"
}
...
 
355
2
17
Ну при входе на сервер единожды необходимо отправить свежую информацию о магазине, отправлять 200+ пакетов за одну мс такое себе занятие, мне собственно нужно перегнать эти строки в байты, массивно, пока что это просто Лист Объектов, в каждом объекте по три переменные.
 
1,111
47
420
что за общение мод плагин такое загадочное
они оба в одной и той же JVM просто в разных класс лодерах. все еще можно дернуть рефлекшеном плагин из мода и наоборот.
по поводу nbt в бакките. я все еще хрен его знает зачем оно надо, но все же. баккит по факту вещь состовная. это bukkit+craft bukkit. bukkit это апи устойчивое и майнкрафтонезависимое. craft bukkit это собственно измененный майнкруфт, и в нем есть нбт. твоя задача подрубить в компиляцию своего плагина craftbukkit и все будет ок.
по поводу gson. максимально старая версия с которой я работал 1.6.4. и там есть гсон. возможно его нет в баккит апи(уверен что врешь), но как я понял мы рассматриваем связку форж + буккит, а значит тебе достаточно притащить библиотеку в компайл но в жарник можно не сувать.
 
355
2
17
они оба в одной и той же JVM просто в разных класс лодерах
Забыл уточнить, CLIENT MOD «» SERVER PLUGIN.
На новых версиях в либах лежит Gson, а вот на старых там только JsonSimple находит, gson чет не нахожу, хотя насколько помню те же плагины Factions используют Gson.

NBT соответственно тоже не находит, оно и не удивительно, там же часть CraftBukkit классов обфусцированны, ну это уже от сборки зависит, пока рассматриваю 1.7.10 Thermos и Spigot
 
355
2
17
Записывать переменные через writeInt writeLong и тд, так же читать.
Так собственно как мне это в массив перевести?
Ну вот запишу я допустим один из объектов

Java:
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(bytes);

out.writeUTF(index);
out.writeInt(price);
out.writeInt(discount);

bytes.toByteArray()

Но таких объектов 200+, создавать столько пакетов не думаю что хорошая затея
 
355
2
17
если ты рассматриваешь 1.7.10 то вы все врети там точно есть гсон.
в срафт бакките точно есть нбт. вы все врети.
Я этого не исключаю, просто в упор найти не могу, обычными средствами импорта не находит, откопать расположение чет не могу.
 
1,038
57
229
Ну при входе на сервер единожды необходимо отправить свежую информацию о магазине, отправлять 200+ пакетов за одну мс такое себе занятие
Добавлю немного, такую информацию лучше грузить на стороне лоунчера или в главном меню, до захода на сервер. А лучше всего её размешать на сайте, если есть такая возможность. И брать эту информацию от туда.
Есть ещё один подход, он заключается в том чтобы отправлять клиенту не весь магазин. А лишь что что ему необходимо.
Допустим клиент вводит слово уголь и мы ищем все продажи угля. Кешируем их для всех остальных, разбиваем на страницы по 20-50 позиций. А дальше клиент отправляет именно страницу. (в общем точно так же, если бы работали именно с сайтом, а не с сервером)
 
7,099
324
1,509
Если хочется юзать Gson, то в чем проблема добавить его в проект?
 
1,111
47
420
Добавлю немного, такую информацию лучше грузить на стороне лоунчера или в главном меню, до захода на сервер. А лучше всего её размешать на сайте, если есть такая возможность. И брать эту информацию от туда.
Есть ещё один подход, он заключается в том чтобы отправлять клиенту не весь магазин. А лишь что что ему необходимо.
Допустим клиент вводит слово уголь и мы ищем все продажи угля. Кешируем их для всех остальных, разбиваем на страницы по 20-50 позиций. А дальше клиент отправляет именно страницу. (в общем точно так же, если бы работали именно с сайтом, а не с сервером)
зочем
 
355
2
17
Добавлю немного, такую информацию лучше грузить на стороне лоунчера или в главном меню, до захода на сервер. А лучше всего её размешать на сайте, если есть такая возможность. И брать эту информацию от туда.
Есть ещё один подход, он заключается в том чтобы отправлять клиенту не весь магазин. А лишь что что ему необходимо.
Допустим клиент вводит слово уголь и мы ищем все продажи угля. Кешируем их для всех остальных, разбиваем на страницы по 20-50 позиций. А дальше клиент отправляет именно страницу. (в общем точно так же, если бы работали именно с сайтом, а не с сервером)
Для этого необходима более подробная обвязка, чтобы отправлять информацию еще до входа на сервер, а мне лишь нужно использовать это как косметический мод, который просто ставится на клиент, и обновляет единожды список цен при входе на сервер. Все остальное уже обрабатывается непосредственно в клиентом.

Если хочется юзать Gson, то в чем проблема добавить его в проект?
В том то и суть, что не хочется. Не вижу смысла подгружать целую либу лишь для того чтобы строку отправить на клиент.
 
7,099
324
1,509
Выше показали ,как записать в пакет массив интов, это не подходит?
 
Сверху