sk9zist :l
Исправился
- 981
- 18
- 157
Никак не могу понять, как сделать разную текстуру для каждой стороны блока из состояния блока. Разную текстуру для каждой стороны обычного блока я могу сделать, но я непонимаю как делать текстуры для блока с состояниями, там какая-то замороченная хрень...
ClientProxy в init:
CommonProxy в preInit:
папка blockstates:
папка models/block:
папка models/item:
файлы в textures/items:
vm.png
файлы в textures/blocks:
vendingMachine_0.png, vendingMachine_1.png, vendingMachine_2.png, vendingMachine_3.png, vendingMachine_4.png
Уже и в ванили смотрел, и на форуме искал - ничего не понимаю. Стейты в моем блоке - head и foot. Это многоблочная структура которую я сделал по туториалу уважаемого ReyMagos:
Как сделать разную текстуру для каждой стороны каждого блока структуры (два блока)? Мне нужно просто поставить текстуры чтобы она смотрела в одном направлении, т.е. мета и установка этой текстуры по взгляду игрока не нужна
BlocksRegister.java:
public class BlocksRegister
{
public static final Block VM = new BlockVendingMachine("vm");
public static void register()
{
setRegister(VM);
}
@SideOnly(Side.CLIENT)
public static void registerRender()
{
setRender(VM);
}
private static void setRegister(Block block)
{
ForgeRegistries.BLOCKS.register(block);
ForgeRegistries.ITEMS.register(new ItemBlock(block).setRegistryName(block.getRegistryName()));
}
@SideOnly(Side.CLIENT)
private static void setRender(Block block)
{
Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(Item.getItemFromBlock(block), 0, new ModelResourceLocation(block.getRegistryName(), "inventory"));
}
}
BlockVendingMachine.java:
public class BlockVendingMachine extends BlockHorizontal
{
public static final PropertyEnum<BlockVendingMachine.EnumPartType> PART = PropertyEnum.create("part", BlockVendingMachine.EnumPartType.class);
//protected static final AxisAlignedBB TABLE_AABB = new AxisAlignedBB(0.0, 0.0, 0.0, 1.0 ,0.5625, 1.0);
public BlockVendingMachine(String name)
{
super(Material.IRON);
this.setRegistryName(name);
this.setUnlocalizedName(name);
this.setHardness(0.01f);
this.setDefaultState(this.blockState.getBaseState().withProperty(PART, EnumPartType.FOOT));
}
@Override
public boolean isFullCube(IBlockState state)
{
return false;
}
@Override
public boolean isOpaqueCube(IBlockState state)
{
return false;
}
/*@Override
public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos)
{
return TABLE_AABB;
}*/
@Override
protected BlockStateContainer createBlockState()
{
return new BlockStateContainer(this, new IProperty[] {PART});
}
public static enum EnumPartType implements IStringSerializable
{
HEAD("head"),
FOOT("foot");
private final String name;
private EnumPartType(String name)
{
this.name = name;
}
public String toString()
{
return this.name;
}
public String getName()
{
return this.name;
}
}
@Override
public IBlockState getStateFromMeta(int meta)
{
if (meta == 0) {
return this.getDefaultState().withProperty(PART, EnumPartType.FOOT);
}
if (meta == 1) {
return this.getDefaultState().withProperty(PART, EnumPartType.HEAD);
}
return this.getDefaultState().withProperty(PART, EnumPartType.FOOT);
}
@Override
public int getMetaFromState(IBlockState state)
{
int i = 0;
if (state.getValue(PART) == EnumPartType.HEAD)
{
i = 1;
}
return i;
}
@Override
public void onBlockHarvested(World worldIn, BlockPos pos, IBlockState state, EntityPlayer player) {
if (state.getValue(PART) == EnumPartType.FOOT) {
worldIn.setBlockState(pos.up(1), Blocks.AIR.getDefaultState());
}
else if (state.getValue(PART) == EnumPartType.HEAD) {
worldIn.setBlockState(pos.down(1), Blocks.AIR.getDefaultState());
}
}
}
BlocksRegister.registerRender();
CommonProxy в preInit:
BlocksRegister.register();
папка blockstates:
vm.json:
{
"variants": {
"part=foot": { "model": "ngem:foot" },
"part=head": { "model": "ngem:head" }
}
}
vendingMachine_2.json:
{
"parent": "block/vm",
"textures": {
"texture": "ngem:blocks/vendingMachine_2"
}
}
head.json:
{
"textures": {
"0": "minecraft:blocks/log_oak",
"particle": "minecraft:blocks/log_oak"
}
}
vm.json:
{
"parent": "block/orientable",
"textures": {
"up": "ngem:blocks/vendingMachine_0",
"down": "ngem:blocks/vendingMachine_0",
"south": "ngem:blocks/vendingMachine_2",
"north": "ngem:blocks/vendingMachine_3",
"west": "ngem:blocks/vendingMachine_3",
"east": "ngem:blocks/vendingMachine_3"
}
}
папка models/item:
foot.json:
{
"textures": {
"0": "minecraft:blocks/log_oak",
"particle": "minecraft:blocks/log_oak"
}
}
head.json:
{
"textures": {
"0": "minecraft:blocks/log_oak",
"particle": "minecraft:blocks/log_oak"
}
}
vm.json:
{
"parent": "item/generated",
"textures": {
"layer0":"ngem:items/vm"
}
}
файлы в textures/items:
vm.png
файлы в textures/blocks:
vendingMachine_0.png, vendingMachine_1.png, vendingMachine_2.png, vendingMachine_3.png, vendingMachine_4.png
Уже и в ванили смотрел, и на форуме искал - ничего не понимаю. Стейты в моем блоке - head и foot. Это многоблочная структура которую я сделал по туториалу уважаемого ReyMagos:
Многоблочная структура
Многоблочная структура В прошлой статье я рассказывал, как сделать хитбокс для блока, а в этот раз мы будем делать полноценную многоблочную структуру. Во время написания кода интерпретатор будет говорить об ошибках, но не стоит волноваться, в...
forum.mcmodding.ru
Как сделать разную текстуру для каждой стороны каждого блока структуры (два блока)? Мне нужно просто поставить текстуры чтобы она смотрела в одном направлении, т.е. мета и установка этой текстуры по взгляду игрока не нужна