wszhxwsz
本帖最后由 wszhxwsz 于 2022-2-8 13:39 编辑

mod开发时建立一个物品(铜粒),inteljidea并未报错,但是在mc中用give指令找不到这一物品,下面是源码
  1. package zzzz.zxmod.item.item;

  2. import net.minecraft.item.Item;
  3. import zzzz.zxmod.ZxMod;

  4. public class ItemCopperGrains extends Item
  5. {
  6.     public ItemCopperGrains()
  7.     {
  8.         this.setUnlocalizedName(ZxMod.MODID + ".cropperGrains");
  9.         this.setRegistryName("cropper_grains");
  10.         this.setMaxStackSize(64);
  11.     }
  12. }
复制代码
ItemCopperGrains.java

  1. package zzzz.zxmod.item.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.EventBusSubscriber;
  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. import java.util.Objects;

  13. @EventBusSubscriber
  14. public class ItemRegistryHandler
  15. {
  16.     public static final ItemCopperGrains COPPER_GRAINS = new ItemCopperGrains();

  17.     @SubscribeEvent
  18.     public static void onRegistry(Register<Item> event)
  19.     {
  20.         IForgeRegistry<Item> registry = event.getRegistry();
  21.         registry.register(COPPER_GRAINS);
  22.     }
  23.     @SubscribeEvent
  24.     @SideOnly(Side.CLIENT)
  25.     public static void onModelRegistry(ModelRegistryEvent event)
  26.     {
  27.         ModelLoader.setCustomModelResourceLocation(COPPER_GRAINS,0,
  28.         new ModelResourceLocation(Objects.requireNonNull(COPPER_GRAINS.getRegistryName()), "inventory"));
  29.     }
  30. }
复制代码
ItemRegistryHandlder.java
  1. package zzzz.zxmod;

  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 = ZxMod.MODID, name = ZxMod.NAME, version = ZxMod.VERSION, acceptedMinecraftVersions = "[1.12,1.13)")
  9. public class ZxMod
  10. {
  11.     public static final String MODID = "zxmod";
  12.     public static final String NAME = "Zx 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. }
复制代码
ZxMod.java
文件目录

幻梦师
本帖最后由 苍穹空 于 2022-2-8 20:33 编辑

这一看就是土球的读者
所以我直接给你对着书看了一遍
首先我希望代码里的中文逗号是格式转换的锅,而不是你在代码里打了中文逗号

然后
   public static void onModelRegistry(ModelRegistryEvent event)
    {
        ModelLoader.setCustomModelResourceLocation(COPPER_GRAINS,0,
        new ModelResourceLocation(Objects.requireNonNull(COPPER_GRAINS.getRegistryName()), "inventory"));
这一块跟书里的不一样(当然我也不知道你在干嘛,毕竟不是正儿八经的mod开发者
书上咋写的你手上应该有,感觉你搞了个错误的替代了

在游戏里/give 你的名字 modid 冒号 tab补全
看看这样能不能查到物品
(虽然我不能理解为什么铜粒要加复数)

最后,我电脑坏了,手机上看的,如果我的帮助无法帮到你,不用回复
因为我也不会

啊啊啊隐藏代码我没记下来不然我肯定隐藏

这边建议去下一些mod的源码看看那些大佬是怎么做的,但是无尽贪婪,拔刀剑,潘马斯这些不建议一般人去看👀

wszhxwsz
本帖最后由 wszhxwsz 于 2022-2-9 13:13 编辑
苍穹空 发表于 2022-2-8 20:31
这一看就是土球的读者
所以我直接给你对着书看了一遍
首先我希望代码里的中文逗号是格式转换的锅, ...

tab是真的好用,查到了,谢谢大佬,s的话,我会自行修改的

幻梦师
wszhxwsz 发表于 2022-2-9 12:49
tab是真的好用,查到了,谢谢大佬,s的话,我会自行修改的

写一个创造模式物品栏一劳永逸