ClientProxy и главный классКакой код нужен?
package com.test.mod.proxy;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.Item;
import net.minecraftforge.client.model.ModelLoader;
public class ClientProxy extends CommonProxy{
public void registerItemRenderer(Item item, int meta, String id)
{
ModelLoader.setCustomModelResourceLocation(item, meta, new ModelResourceLocation(item.getRegistryName(), id) );
}
}
package com.test.mod.main;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.Mod.Instance;
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 com.test.mod.proxy.CommonProxy;
import com.test.mod.reference.Reference;
@Mod(modid = Reference.MODID, name = Reference.NAME, version = Reference.VERSION,
acceptedMinecraftVersions = Reference.ACCEPTED_MINECRAFT_VERSION)
public class Main{
@Instance
public static Main instance;
@SidedProxy(clientSide = Reference.CLIENT, serverSide = Reference.COMMON)
public static CommonProxy proxy;
@EventHandler
public static void preInit(FMLPreInitializationEvent event) {};
@EventHandler
public static void init(FMLInitializationEvent event) {};
@EventHandler
public static void postInit(FMLPostInitializationEvent event) {};
public static void main (String[] args) {
}
}
package com.test.mod.main;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.Mod.Instance;
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 com.test.mod.proxy.CommonProxy;
import com.test.mod.reference.Reference;
@Mod(modid = Reference.MODID, name = Reference.NAME, version = Reference.VERSION,
acceptedMinecraftVersions = Reference.ACCEPTED_MINECRAFT_VERSION)
public class Main{
@Instance
public static Main instance;
@SidedProxy(clientSide = Reference.CLIENT, serverSide = Reference.COMMON)
public static CommonProxy proxy;
@EventHandler
public static void preInit(FMLPreInitializationEvent event) {};
@EventHandler
public static void init(FMLInitializationEvent event) {};
@EventHandler
public static void postInit(FMLPostInitializationEvent event) {};
}
package com.test.mod.reference;
public class Reference {
public static final String MODID = "hc";
public static final String NAME = "hc";
public static final String VERSION = "0.1";
public static final String ACCEPTED_MINECRAFT_VERSION = "1.12.2, 1.12.1";
public static final String CLIENT = "com.test.mod.proxy.ClientProxy";
public static final String COMMON = "com.test.mod.proxy.CommonProxy";
}
package com.test.mod.proxy;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.Item;
import net.minecraftforge.client.model.ModelLoader;
public class ClientProxy extends CommonProxy{
public void registerItemRenderer(Item item, int meta, String id)
{
ModelLoader.setCustomModelResourceLocation(item, meta, new ModelResourceLocation(item.getRegistryName(), id) );
}
}
package com.test.mod.proxy;
import net.minecraft.item.Item;
public class CommonProxy{
public void registerItemRenderer(Item item, int meta, String id) {}
}
package com.test.mod.util.handers;
import com.test.mod.init.InitItems;
import com.test.mod.util.interfaces.IHasModel;
import net.minecraft.item.Item;
import net.minecraftforge.client.event.ModelRegistryEvent;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
@EventBusSubscriber
public class RegisterHander {
@SubscribeEvent
public static void onItemRegister(RegistryEvent.Register<Item> event)
{
event.getRegistry().registerAll(InitItems.ITEMS.toArray(new Item[0]));
}
@SubscribeEvent
public static void onModelRegister(ModelRegistryEvent event)
{
for(Item item : InitItems.ITEMS)
{
if(item instanceof IHasModel)
{
((IHasModel)item).registerModels();
}
}
}
}
package com.test.mod.util.interfaces;
public interface IHasModel {
public void registerModels();
}
package com.test.mod.init;
import java.util.ArrayList;
import java.util.List;
import com.test.mod.items.ItemTestIngot;
import net.minecraft.client.renderer.block.model.ModelBakery;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.Item;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.event.ModelRegistryEvent;
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class InitItems
{
@SideOnly(Side.CLIENT)
private static void registryModel(Item item) {
final ResourceLocation regName = item.getRegistryName();// Не забываем, что getRegistryName может вернуть Null!
final ModelResourceLocation mrl = new ModelResourceLocation(regName, "inventory");
ModelBakery.registerItemVariants(item, mrl);// Регистрация вариантов предмета. Это нужно если мы хотим использовать подтипы предметов/блоков(см. статью подтипы)
ModelLoader.setCustomModelResourceLocation(item, 0, mrl);// Устанавливаем вариант модели для нашего предмета. Без регистрации варианта модели, сама модель не будет установлена для предмета/блока(см. статью подтипы)
}
public static final List<Item> ITEMS = new ArrayList<Item>();
//items
public static final Item TEST_INGOT = new ItemTestIngot("test_ingot");
// register Models
@SubscribeEvent
@SideOnly(Side.CLIENT)
public static void onRegistryModel(ModelRegistryEvent e) {
registryModel(TEST_INGOT);
}
}
package com.test.mod.items;
import com.test.mod.init.InitItems;
import com.test.mod.main.Main;
import com.test.mod.util.interfaces.IHasModel;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
public class ItemTestIngot extends Item implements IHasModel
{
public ItemTestIngot(String name) {
setRegistryName(name);
setUnlocalizedName(name);
setCreativeTab(CreativeTabs.MATERIALS);
setMaxStackSize(250);
InitItems.ITEMS.add(this);
}
@Override
public void registerModels() {
Main.proxy.registerItemRenderer(this, 0, "invetory");
}
}
ItemTestIngot.registerModels
и InitItems.onRegistryModel
). Возможно в этом проблема.IHasModel
, так как это только захламляет код.Не может// Не забываем, что getRegistryName может вернуть Null!
Ты таже не ориентируешься в своём коде...ItemTestIngot.registerModels
иInitItems.onRegistryModel