Парсинг и рендер JSON модели

Версия Minecraft
1.10+
355
2
17
Никак не могу найти информации о парсинге json модели и рендера её в мире. Не блок, не итем. А допустим простая моделька одежды, рюкзака к примеру.
Чтобы не регистрировать отдельный предмет как рюкзак, а просто указать путь к json модельке и отрисовать её поверх игрока.

Если кто знает как сделать или имеет ссылки на статьи где такое описано, поделитесь пожалуйста :)

P.S. Поиском на форуме пользовался, но нашел только статьи где заменяют\устанавливают модельку предмету, где по сути ничего делать не нужно, кроме настройки самого json'a.
 
7,099
324
1,510
355
2
17
Что-то я не совсем понял в чем там пример. Мне необходимо именно считать файл, как текстуру через ResourceLocation, указав просто путь к моему json и получить объект который можно отрендерить в GUI, или же на игроке.
 
7,099
324
1,510
Размести json там же, где и обычно. Для него создай предмет. Потом рендерь этот предмет(строчка для этого в первом ответе есть)
 
355
2
17
Я об этом написал в основном посту, что мне не подходит вариант создавать под каждую новую модель новый предмет, и уж тем более регистрировать в коде. Мне нужно парсить конфиг и рендерить. Чтобы с легкостью можно было закинуть json новой модели, и считав её - добавить в список остальных моделей.

Чтобы вышла вот такая структура, основно json:

JSON:
{
    "models/head/hat1.json": {
      "id": "hat_name1",
      "type": "HEAD"
    },
    "models/head/hat2.json": {
      "id": "hat_name2",
      "type": "HEAD"
    },
}

Я его считываю, затем считываю каждую модель и дают ответ с сервера, какой id рендерить на игроке.
Естественно рендер класс для этого всего нужно будет отдельный, но чтобы рендерить нужно сначала получить модель.
 
7,099
324
1,510
Для этого надо смотреть сорцы майна, там есть код, парсящий модель
 
355
2
17
я на МСР поэтому прогоняю через SimpleBakedModel.Builder т.к. рендерит исходя из IBakedModel а не самого ModelBlock, но все равно не выходит. Сам ModelBlock содержит части BlockPart, но до рендера они почему-то не доходят, хотя должны возвращаться с SimpleBakedModel.getQuads

Возможно я где-то что-то упускаю, надо бы выспаться..
Java:
        ModelBlock blockModel = ModelBlock.deserialize(json);

        TextureAtlasSprite textureAtlasSprite = TextureAtlasSprite.makeAtlasSprite(new ResourceLocation("textures/models/example.png"));
        SimpleBakedModel.Builder simpleBakedModel = (new SimpleBakedModel.Builder(blockModel, blockModel.createOverrides())).setTexture(textureAtlasSprite);
        BlockRendererDispatcher blockrendererdispatcher = Minecraft.getMinecraft().getBlockRendererDispatcher();
        
        blockrendererdispatcher.getBlockModelRenderer().renderModelBrightnessColor(simpleBakedModel.makeBakedModel(), 1.0F, 1.0F, 1.0F, 1.0F);
 
355
2
17
Мне нужно парсить конфиг и рендерить.
ModelBlock и IBakedModel я уже получил, сейчас возникла другая проблема, при накладывании спрайта. В json модели:

JSON:
    "textures": {
        "1": "blocks/hat",
        "particle": "blocks/hat"
    },

Т.к. я в МСР и мне не нужно регистрировать новые блоки, соответственно и текстуру hat оно не находит (Не регистрирует).
Пробовал вручную зарегистрировать в TextureMap и ModelBakery.sprites, но чет явно делаю не так
 
355
2
17
Это зарегистрирует домены кастомного ресурса, но не сами ресурсы.
Получилось добавить вручную в спрайты, но теперь возникла еще одна проблема в рендере, видимо с разметкой или размером текстуры, для теста набросал модельку а-ля шапки и наложил текстуру 128х128. Но при рендере она целиком и полностью черная.
KAxonX6TMWPeB2.png



Хотя должны быть блики.

zANYd4qtBbkda2.png
 
3,005
192
592
Я через этот метод регистрировал свои текстуры из не .jar.
Скорее всего потому что майн не обрабатывает таких элементы, хотя хз, ибо не сильно разбираюсь в графике.
 
355
2
17
Ну я тоже слаб, поэтому подымаю знания, разбираюсь сижу. Изображение то я вродь как зарегистрировал, ибо когда бинжу текстуру - моделька меняет цвета. Но дело в том, что оно не накладывает саму текстуру, оно берет цвета из неё и филит ими.

Пробовал брать модельку из интернета, которая использует текстуру камня и наковальни, и когда я бинжу TextureMap.LOCATION_BLOCKS_TEXTURE, то все работает четко.

Java:
// Моделька 3D ведерка, использует ванильные текстуры
Minecraft.getMinecraft().getTextureManager().bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE);
Minecraft.getMinecraft().getRenderItem().renderModel(ModelBakery.instance.bakeModel(modelBlock, ModelRotation.X0_Y0, false), 0xFFFFFFFF);

Но по данному адресу находится путь к атласу, textures/atlas/blocks.png, которого так найти и не получилось x) Насколько я понимаю, майн формирует атлас всех текстур как было ранее.. А вот моя кастомная текстура туда не попадает, и если указывать этот атлас или же свой путь к текстуре - все равно, одни цвета.

GrqX1K0hQ1vbGA.png
 
355
2
17
//Оффтоп
Вот поэтому надо не говнокодить на mcp, а кодить на фордже.


Ну-ка, покажи мне реализацию поставленной задачи методом Forge.
По сути те же яйца, где хуки давным давном вставили за тебя.
 
Сверху