Модели в .json (пару вопросов)

Версия Minecraft
1.12.2
62
1
0
Всем привет. Задался пару вопросами.
1) Как можно увеличать .json модели?
2) Как задать прозрачность для блока (в моём случае для листвы)
3) Как можно сделать невидимый непроходимый блок? (смотрел блок барьера, но не получилось его повторить)
4) Как убрать коллизию у блока?

Заранее всем спасибо.
 
Решение
Как задать прозрачность для блока (в моём случае для листвы)
Метод getBlockLayer блока должен возвращать BlockRenderLayer.TRANSLUCENT, и юзай полупрозрачные текстуры для модели блоки
Как можно сделать невидимый непроходимый блок?
Материал блоку ставь AIR, getRenderType должна возвращать EnumBlockRenderType.INVISIBLE, лови событие DrawBlockHighlightEvent и если это твой блок - отменяй его
Как убрать коллизию у блока?
getCollisionBoundingBox(или метод с похожим именем) должен возвращать AxisAlignedBB.NULL_AABB(если этой константы нет, возвращай свой пустой AABB)
7,099
324
1,510
Как задать прозрачность для блока (в моём случае для листвы)
Метод getBlockLayer блока должен возвращать BlockRenderLayer.TRANSLUCENT, и юзай полупрозрачные текстуры для модели блоки
Как можно сделать невидимый непроходимый блок?
Материал блоку ставь AIR, getRenderType должна возвращать EnumBlockRenderType.INVISIBLE, лови событие DrawBlockHighlightEvent и если это твой блок - отменяй его
Как убрать коллизию у блока?
getCollisionBoundingBox(или метод с похожим именем) должен возвращать AxisAlignedBB.NULL_AABB(если этой константы нет, возвращай свой пустой AABB)
 
62
1
0
Метод getBlockLayer блока должен возвращать BlockRenderLayer.TRANSLUCENT, и юзай полупрозрачные текстуры для модели блоки

Материал блоку ставь AIR, getRenderType должна возвращать EnumBlockRenderType.INVISIBLE, лови событие DrawBlockHighlightEvent и если это твой блок - отменяй его

getCollisionBoundingBox(или метод с похожим именем) должен возвращать AxisAlignedBB.NULL_AABB(если этой константы нет, возвращай свой пустой AABB)
cпасибо всё получилось, только остаётся открытым вопрос о увлечение модели :unsure:
 
7,099
324
1,510
Можно как-то так, юзая Endothermic
Java:
public class ScaledModel extends IBakedModel{
    public final IBakedModel base;
    private Map<Pair<IBlockState,EnumFacing>,List<BakedQuad>> scaledQuadsCache=new HashMap<>();
    @Override
    public List<BakedQuad> getQuads(@Nullable IBlockState state, @Nullable EnumFacing side, long rand) {
        return scaledQuadsCache.computeIfAbsent(Pair.of(state,side), key->{
            List<BakedQuad> baseQuads=super.getQuads(state,side,rand);
            return baseQuads.stream()
                .map(LazyUnpackedQuad::apply)
                .map(q->q.scale(2,2,2))
                .map(LazyUnpackedQuad::toBakedQuad)
                .collect(Collectors.toList());
        });
    }
    //остальные методы делегируй к base
}
Отскаллированные квады кешируются для одинаковых пар (state, side)
Писал не в среде, могут быть незначительные косяки
 
7,099
324
1,510
Хз, может и можно, но я ток повороты видел
~~~
Чекнул, в блокбенче вроде можно вылезать за пределы 16*16*16, т.е. можно замоделить большую модель
 
Сверху