i逗比
问题:
1.注册的物品没有识别到材质
2.已经添加lang文件但是不能识别,依然显示未本地化的名字
3.mcmod.info没有被识别到

打开游戏后idea会弹两个报错
  1. Caused by: java.io.FileNotFoundException: testmod:models/item/dirt_ball.json
复制代码
  1. Caused by: net.minecraft.client.renderer.block.model.ModelBlockDefinition$MissingVariantException
复制代码
进游戏后是这样的(他显示的名字后面怎还有个#inventory,这正常吗



环境:
  1. jdk 1.8.0_301
  2. forge版本 2885(1.12.2)
  3. gradle 4.9
  4. 用的idea
复制代码
代码:



Testmod
  1. package demon.testmod;

  2. import net.minecraft.init.Blocks;
  3. import net.minecraftforge.fml.common.Mod;
  4. import net.minecraftforge.fml.common.Mod.EventHandler;
  5. import net.minecraftforge.fml.common.event.FMLInitializationEvent;
  6. import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
  7. import org.apache.logging.log4j.Logger;

  8. @Mod(modid = Testmod.MODID, name = Testmod.NAME, version = Testmod.VERSION)
  9. public class Testmod
  10. {
  11.     public static final String MODID = "testmod";
  12.     public static final String NAME = "Test Mod";
  13.     public static final String VERSION = " 1.0";

  14.     private static Logger logger;

  15.     @EventHandler
  16.     public void preInit(FMLPreInitializationEvent event)
  17.     {
  18.         logger = event.getModLog();
  19.     }

  20.     @EventHandler
  21.     public void init(FMLInitializationEvent event)
  22.     {
  23.         // some example code
  24.         logger.info("DIRT BLOCK >> {}", Blocks.DIRT.getRegistryName());
  25.     }
  26. }
复制代码
ItemDirtBall
  1. package demon.testmod.item;

  2. import net.minecraft.item.Item;
  3. import demon.testmod.Testmod;

  4. public class ItemDirtBall extends Item
  5. {
  6.     public ItemDirtBall()
  7.     {
  8.         this.setUnlocalizedName(Testmod.MODID+".dirtball");
  9.         this.setRegistryName("dirt_ball");
  10.         this.setMaxStackSize(16);
  11.     }
  12. }
复制代码
ItemRegistryHandler
  1. package demon.testmod.item;

  2. import net.minecraft.client.renderer.block.model.ModelResourceLocation;
  3. import net.minecraft.item.Item;
  4. import net.minecraftforge.client.event.ModelRegistryEvent;
  5. import net.minecraftforge.client.model.ModelLoader;
  6. import net.minecraftforge.event.RegistryEvent.Register;
  7. import net.minecraftforge.fml.common.Mod;
  8. import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
  9. import net.minecraftforge.fml.relauncher.Side;
  10. import net.minecraftforge.fml.relauncher.SideOnly;
  11. import net.minecraftforge.registries.IForgeRegistry;

  12. @Mod.EventBusSubscriber
  13. public class ItemRegistryHandler
  14. {
  15.     public static final ItemDirtBall DIRT_BALL = new ItemDirtBall();

  16.     @SubscribeEvent
  17.     public static void onRegistry(Register<Item> event)
  18.     {
  19.         IForgeRegistry<Item> registry = event.getRegistry();
  20.         registry.register(DIRT_BALL);
  21.     }

  22.     @SubscribeEvent
  23.     @SideOnly(Side.CLIENT)
  24.     public static void onModelRegistry(ModelRegistryEvent event)
  25.     {
  26.         ModelLoader.setCustomModelResourceLocation(DIRT_BALL,0,new ModelResourceLocation(DIRT_BALL.getRegistryName(),"inventory"));
  27.     }
  28. }
复制代码
dirtball.json
  1. {
  2.   "forge_marker": 1,
  3.   "defaults":
  4.   {
  5.     "model": "minecraft:builtin/generated",
  6.     "textures": {"layer0": "testmod:items/dirt_ball"}
  7.   },
  8.   "variants":
  9.   {
  10.     "inventory": [{ "transform":"forge:default-item"}]
  11.   }

  12. }
复制代码
zh_cn
  1. item.testmod.dirtball.name=泥土球
复制代码




救救孩子吧,刚被构建环境折磨完呜呜呜呜
(如果是因为单词拼错了不要打我)

早上上
本帖最后由 夜时秋 于 2021-8-1 00:09 编辑


如上将dirt_bal.json文件拖进item文件夹中,并将model文件夹名字改为models
  1. sourceSets { main { output.resourcesDir = output.classesDir } }
复制代码
以及将以上代码写到build.gradle文件末尾