版本信息
你使用的IDE:Eclipse
你使用的IDE版本: 4.12
Forge版本: 14.23.5.2823
Minecraft版本: 1.12
Mapping 文件版本: stable_39
提问
Forge的扩展里有支持加载Wavefront OBJ的方法,但是经查阅都只是得到十分模糊的描述,如何正确的加载和使用obj模型并使其支持类似 Property Override的功能(或者说不能使用OBJLoader,必须得自己写渲染器?),望指点
相关代码
这是些是我自己琢磨出来的,但是未能成功地注册
ModelHandler.class
@Mod.EventBusSubscriber(modid = MidgardReborn.MODID, value = Side.CLIENT)
public class ModelHandler {
@SideOnly(Side.CLIENT)
@SubscribeEvent
public static void registerModel(ModelRegistryEvent event) throws Exception
{
OBJLoader.INSTANCE.addDomain(MidgardReborn.MODID);
for(Map.Entry<String, ResourceLocation> entry : RegistyManager.OBJModelRegisty.getInstance().getRegisty().entrySet())
{
ModelResourceLocation mrl = new ModelResourceLocation(entry.getValue(), "inventory");
Item item = RegistyManager.OBJModelRegisty.getItemFromID(entry.getKey());
if(item != null)
{
ModelLoader.setCustomModelResourceLocation(item, 0, mrl);
}
}
}
}
RegistyManager.OBJModelRegisty.class
public abstract class RegistyManager<T> implements IRegistyManager<T>{
protected Map<String, T> registy = Maps.newHashMap();
@Override
public Map<String, T> getRegisty() {
return registy;
}
public static class OBJModelRegisty extends RegistyManager<ResourceLocation>
{
private static OBJModelRegisty instance = new OBJModelRegisty();
private final ResourceLocation ITEM_CLAW = new ResourceLocation(MidgardReborn.MODID, "item_claw.obj");
private final ResourceLocation ITEM_CLAW_LESS = new ResourceLocation(MidgardReborn.MODID, "item_claw_less.obj");
private OBJModelRegisty() {
registy.put("item_claw", ITEM_CLAW);
registy.put("item_claw_less", ITEM_CLAW_LESS);
}
@Nullable
public static Item getItemFromID(String name)
{
return ItemRegisty.instance.registy.get(name);
}
public static OBJModelRegisty getInstance()
{
return instance;
}
}
}