OBJ рендер блока

Версия Minecraft
1.12+
56
2
4
Сколько дней уже парюсь, да никак не могу разобраться OBJ моделями. Представляю чистый мод, исключительно с одним блоком, который и надо рендерить. Сообщите, если есть ошибка, старался код оформлять как в гайдах, чтобы было читабельно
Java:
package ru.developer.examplemod;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.*;
import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import ru.developer.examplemod.proxy.CommonProxy;

@Mod(modid="examplemod")
public class mainclass {
    public static String modide="examplemod";
    @SidedProxy(clientSide = "ru.developer.examplemod.proxy.ClientProxy", serverSide = "ru.developer.examplemod.proxy.CommonProxy")
    public static CommonProxy proxy;
    @EventHandler
    public void preInit(FMLPreInitializationEvent event)
    {
        proxy.preInit(event);
    }

    @EventHandler
    public void init(FMLInitializationEvent event)
    {
        proxy.init(event);
    }

    @EventHandler
    public void postInit(FMLPostInitializationEvent event)
    {
        proxy.postInit(event);
    }
}
Java:
package ru.developer.examplemod.proxy;

import net.minecraftforge.client.model.obj.OBJLoader;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import ru.developer.examplemod.ItemsRegister;
import ru.developer.examplemod.mainclass;

public class ClientProxy extends CommonProxy {
    @Override
    public void preInit(FMLPreInitializationEvent event)
    {
        super.preInit(event);
        OBJLoader.INSTANCE.addDomain(mainclass.modide);
    }

    @Override
    public void init(FMLInitializationEvent event)
    {
        super.init(event);
        ItemsRegister.registerRender();
    }

    @Override
    public void postInit(FMLPostInitializationEvent event)
    {
        super.postInit(event);
    }
}
Java:
package ru.developer.examplemod.proxy;

import net.minecraftforge.client.model.obj.OBJLoader;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import ru.developer.examplemod.ItemsRegister;
import ru.developer.examplemod.mainclass;

public class ClientProxy extends CommonProxy {
    @Override
    public void preInit(FMLPreInitializationEvent event)
    {
        super.preInit(event);
        OBJLoader.INSTANCE.addDomain(mainclass.modide);
    }

    @Override
    public void init(FMLInitializationEvent event)
    {
        super.init(event);
        ItemsRegister.registerRender();
    }

    @Override
    public void postInit(FMLPostInitializationEvent event)
    {
        super.postInit(event);
    }
}
Java:
package ru.developer.examplemod.proxy;

import net.minecraftforge.client.model.obj.OBJLoader;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import ru.developer.examplemod.ItemsRegister;
import ru.developer.examplemod.mainclass;

public class ClientProxy extends CommonProxy {
    @Override
    public void preInit(FMLPreInitializationEvent event)
    {
        super.preInit(event);
        OBJLoader.INSTANCE.addDomain(mainclass.modide);
    }

    @Override
    public void init(FMLInitializationEvent event)
    {
        super.init(event);
        ItemsRegister.registerRender();
    }

    @Override
    public void postInit(FMLPostInitializationEvent event)
    {
        super.postInit(event);
    }
}
Java:
package ru.developer.examplemod;

import net.minecraft.block.Block;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.fml.common.registry.ForgeRegistries;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import ru.developer.examplemod.blocks.ItemCube;

public class ItemsRegister
{
    public static Block cube = new ItemCube("cube");

    public static void register()
    {
        setRegister(cube);
    }

    @SideOnly(Side.CLIENT)
    public static void registerRender()
    {
        setRender(cube);
    }

    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)
    {
        ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(block), 0, new ModelResourceLocation(block.getRegistryName(), "inventory"));
    }
}
Java:
{
  "forge_marker": 1,
  "defaults": {
    "custom": { "flip-v": true },
    "model": "examplemod:cube.obj"
  },
  "variants": {
    "normal": [{}],
    "inventory": [{}]
  }
}
Java:
mtllib cube.mtl
o Cube_Cube.001
v -1.000000 -1.000000 1.000000
v -1.000000 -1.000000 -1.000000
v 1.000000 -1.000000 -1.000000
v 1.000000 -1.000000 1.000000
v -1.000000 1.000000 1.000000
v -1.000000 1.000000 -1.000000
v 1.000000 1.000000 -1.000000
v 1.000000 1.000000 1.000000
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
usemtl cubemat
s off
f 5/1 6/2 2/3 1/4
f 6/1 7/2 3/3 2/4
f 7/1 8/2 4/3 3/4
f 8/1 5/2 1/3 4/4
f 1/1 2/2 3/3 4/4
f 8/1 7/2 6/3 5/4
Java:
newmtl cubemat
Ns 96.078431
Ka 0.000000 0.000000 0.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ni 1.000000
d 1.000000
illum 2
map_Kd examplemod:blocks/cube
cube.jpg

Картинка: сплошной цвет, размер 256*256

2019-10-29_17.54.45.png
 

Вложения

  • cube.jpg
    cube.jpg
    2.7 KB · Просмотры: 5
Последнее редактирование:
Сверху