#java #json #minecraft-forge
#java #json #minecraft-forge
Вопрос:
Вот как выглядит мой блок candle:
Проблемы заключаются в:
- Песчаник не отображает
- Столкновение — это полный блок
- Поле выделения представляет собой полный блок (поле выделения представляет собой каркас серого цвета)
Методы, предоставляемые Forge для установки этих ограничивающих рамок, устарели, и
this.translucent = true;
this.fullBlock = false;
в конструкторе ничего не делать.
Другие скриншоты:
BlockCandle.java
:
package com.otabi.firestar.toomuch.blocks;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
/**
* Created by firestar115 on 10/22/16.
*/
public class BlockCandle extends BlockBase { // BlockBase only sets registry names and model locations
public BlockCandle() {
super(Material.CAKE, "candle");
this.fullBlock = false;
this.translucent = true;
}
@Override
public boolean isNormalCube(IBlockState state, IBlockAccess world, BlockPos pos) {
return false;
}
}
models/block/candle.json
:
{
"__comment": "Model generated using MrCrayfish's Model Creator (https://mrcrayfish.com/tools?id=mc)",
"textures": {
"0": "toomuch:blocks/candle_base",
"1": "toomuch:blocks/candle_wick"
},
"display": {
"gui": {
"rotation": [ 30, 225, 0 ],
"translation": [ 0, 0, 0 ],
"scale": [ 0.625, 0.625, 0.625 ]
},
"ground": {
"rotation": [ 0, 0, 0 ],
"translation": [ 0, 3, 0 ],
"scale": [ 0.25, 0.25, 0.25 ]
},
"fixed": {
"rotation": [ 0, 0, 0 ],
"translation": [ 0, 0, 0 ],
"scale": [ 0.5, 0.5, 0.5 ]
},
"thirdperson_righthand": {
"rotation": [ 0, 0, 0 ],
"translation": [ 0, 2.5, 0.5 ],
"scale": [ 0.375, 0.375, 0.375 ]
},
"thirdperson_lefthand": {
"rotation": [ 0, 0, 0 ],
"translation": [ 0, 2.5, 0.5 ],
"scale": [ 0.375, 0.375, 0.375 ]
},
"firstperson_righthand": {
"rotation": [ 0, 45, 0 ],
"translation": [ 0, 2.5, 0 ],
"scale": [ 0.4, 0.4, 0.4 ]
},
"firstperson_lefthand": {
"rotation": [ 0, 225, 0 ],
"translation": [ 0, 2.5, 0 ],
"scale": [ 0.4, 0.4, 0.4 ]
}
},
"elements": [
{
"name": "Cube",
"from": [ 6.50, 0.00, 6.50 ],
"to": [ 9.50, 8.00, 9.50 ],
"faces": {
"north": { "texture": "#0", "uv": [ 0.00, 0.00, 3.00, 8.00 ] },
"east": { "texture": "#0", "uv": [ 3.00, 8.00, 6.00, 16.00 ] },
"south": { "texture": "#0", "uv": [ 6.00, 0.00, 9.00, 8.00 ] },
"west": { "texture": "#0", "uv": [ 9.00, 8.00, 12.00, 16.00 ] },
"up": { "texture": "#0", "uv": [ 0.00, 0.00, 3.00, 3.00 ] },
"down": { "texture": "#0", "uv": [ 0.00, 0.00, 3.00, 3.00 ] }
}
},
{
"name": "Cube",
"from": [ 7.50, 8.00, 7.50 ],
"to": [ 8.50, 10.00, 8.50 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.00, 0.00, 1.00, 2.00 ] },
"east": { "texture": "#1", "uv": [ 1.00, 1.00, 2.00, 3.00 ] },
"south": { "texture": "#1", "uv": [ 2.00, 2.00, 3.00, 4.00 ] },
"west": { "texture": "#1", "uv": [ 3.00, 3.00, 4.00, 5.00 ] },
"up": { "texture": "#1", "uv": [ 4.00, 4.00, 5.00, 5.00 ] },
"down": { "texture": "#1", "uv": [ 5.00, 5.00, 6.00, 6.00 ] }
}
}
]
}
blockstates/candle.json
:
{
"forge_marker": 1,
"defaults": {
"textures": {
"0": "toomuch:blocks/candle_base",
"1": "toomuch:blocks/candle_wick"
}
},
"variants": {
"normal": {
"model": "toomuch:candle"
},
"inventory": {
"model": "toomuch:candle"
}
}
}
Я использую Forge 1.10.2 12.18.2.2099.
Комментарии:
1. где находится ваше определение ограничивающей рамки в вашем блоке?
Ответ №1:
Вы пробовали добавлять ограничивающие рамки?
public void setBlockBoundsBasedOnState(final IBlockAccess worldIn, final BlockPos pos) {
this.setBlockBounds(0.25f, 0.125f, 0.25f, 0.75f, 0.875f, 0.75f);
}
public void addCollisionBoxesToList(final World worldIn, final BlockPos pos, final IBlockState state, final AxisAlignedBB mask, final List list, final Entity collidingEntity) {
this.setBlockBoundsBasedOnState((IBlockAccess)worldIn, pos);
super.addCollisionBoxesToList(worldIn, pos, state, mask, list, collidingEntity);
}
обновление для 1.10
getCollisionBoundingBox(...)
, getSelectedBoundingBox(...)
, isFullCube(...)
и isOpaqueCube (...)
.
Комментарии:
1. Будет ли это также работать для метода столкновения объектов с полным блоком? Потому что это не определило бы столкновение, только перемещение объекта.
2. да, поля столкновения предназначены для объектов, а ограничения — для, ну, в общем, для блокировок.
3. Мой блок beehive — это куб (в модели), поэтому, если я использую это, чтобы установить поле столкновения на куб, это сработает? Я слышал, что ограничивающая рамка > 1 в направлениях x и z дает ошибку. Это определенно сработает для моей свечи.
4. поле beehive — это совершенно другой вопрос. Задайте новый вопрос для этого случая.
5. Нет таких методов «setBlockBounds» или «addCollisionBoxesToList»