- 4,167
- 68
- 693
Взялся таки за перенос мода на 1.8.
И сразу первая проблема: как всегда метадата ))) Нужен блок, выглядящий по разному, в зависимости от метадаты... Как пример использовал блок гигантского гриба...
Всё бы ничего, но текстур он не видит... И вот не могу я понять, где ошибка... То ли в самом классе, то ли в Json-ах.
Класс
Блокстейт
Модели для примера:
Ore
Ore_wnes
В инвентаре всё видит нормально, а как ставлю - пропавшая текстура...
Пока не очень разобрался с этой системой... Нужна помощь.
Спасибо )
И сразу первая проблема: как всегда метадата ))) Нужен блок, выглядящий по разному, в зависимости от метадаты... Как пример использовал блок гигантского гриба...
Всё бы ничего, но текстур он не видит... И вот не могу я понять, где ошибка... То ли в самом классе, то ли в Json-ах.
Класс
Код:
public class Ore extends Block {
public Ore(String name) {
super(Material.rock);
this.setDefaultState(this.blockState.getBaseState().withProperty(VARIANT, Ore.EnumType.CLEAR));
this.setUnlocalizedName(name);
}
public static final PropertyEnum VARIANT = PropertyEnum.create("variant", Ore.EnumType.class);
public IBlockState onBlockPlaced(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer)
{
return this.getDefaultState();
}
public IBlockState getStateFromMeta(int meta)
{
return this.getDefaultState().withProperty(VARIANT, Ore.EnumType.byMetadata(meta));
}
public int getMetaFromState(IBlockState state)
{
return ((Ore.EnumType)state.getValue(VARIANT)).getMetadata();
}
@Override
protected BlockState createBlockState()
{
return new BlockState(this, new IProperty[] {VARIANT});
}
public enum EnumType implements IStringSerializable
{
CLEAR(0, "clear"),
SIDE_W(1, "side_w"),
SIDE_N(2, "side_n"),
SIDE_WN(3, "side_wn"),
SIDE_E(4, "side_e"),
SIDE_WE(5, "side_we"),
SIDE_NE(6, "side_ne"),
SIDE_WNE(7, "side_wne"),
SIDE_S(8, "side_s"),
SIDE_SW(9, "side_sw"),
SIDE_NS(10, "side_ns"),
SIDE_SWN(11, "side_swn"),
SIDE_ES(12, "side_es"),
SIDE_ESW(13, "side_esw"),
SIDE_NES(14, "side_nes"),
SIDE_WNES(15, "side_wnes");
private static final Ore.EnumType[] META_LOOKUP = new Ore.EnumType[16];
private final int meta;
private final String name;
private EnumType(int meta, String name)
{
this.meta = meta;
this.name = name;
}
public int getMetadata()
{
return this.meta;
}
@Override
public String getName()
{
return name;
}
public static Ore.EnumType byMetadata(int meta)
{
if (meta < 0 || meta >= META_LOOKUP.length)
{
meta = 0;
}
Ore.EnumType ore$enumtype = META_LOOKUP[meta];
return ore$enumtype == null ? META_LOOKUP[0] : ore$enumtype;
}
static
{
for (Ore.EnumType ore$enumtype : values())
{
META_LOOKUP[ore$enumtype.getMetadata()] = ore$enumtype;
}
}
}
}
Блокстейт
Код:
{
"variants": {
"variant=clear": { "model": "mod:Ore" }
"variant=side_w": { "model": "mod:Ore_w" }
"variant=side_n": { "model": "mod:Ore_n" }
"variant=side_wn": { "model": "mod:Ore_wn" }
"variant=side_e": { "model": "mod:Ore_e" }
"variant=side_we": { "model": "mod:Ore_we" }
"variant=side_ne": { "model": "mod:Ore_ne" }
"variant=side_wne": { "model": "mod:Ore_wne" }
"variant=side_s": { "model": "mod:Ore_s" }
"variant=side_sw": { "model": "mod:Ore_sw" }
"variant=side_ns": { "model": "mod:Ore_ns" }
"variant=side_swn": { "model": "mod:Ore_swn" }
"variant=side_es": { "model": "mod:Ore_es" }
"variant=side_esw": { "model": "mod:Ore_esw" }
"variant=side_nes": { "model": "mod:Ore_nes" }
"variant=side_wnes": { "model": "mod:Ore_wnes" }
}
}
Модели для примера:
Ore
Код:
{
"parent": "block/cube_all",
"textures": {
"all": "mod:blocks/Ore"
}
}
Ore_wnes
Код:
{
"parent": "block/cube",
"textures": {
"particle": "mod:blocks/Ore",
"down": "mod:blocks/Ore",
"up": "blocks/stone",
"north": "mod:blocks/Ore_Side",
"east": "mod:blocks/Ore_Side",
"south": "mod:blocks/Ore_Side",
"west": "mod:blocks/Ore_Side"
}
}
В инвентаре всё видит нормально, а как ставлю - пропавшая текстура...
Пока не очень разобрался с этой системой... Нужна помощь.
Спасибо )