3,417
个编辑
MCBBS Wiki欢迎您共同参与编辑!在参与编辑之前请先阅读Wiki方针。
如果在编辑的过程中遇到了什么问题,可以去讨论板提问。
为了您能够无阻碍地参与编辑 未验证/绑定过邮箱的用户,请尽快绑定/验证。
MCBBS Wiki GitHub群组已上线!
您可以在回声洞中发表吐槽!
服务器状态监控。点击进入
本站由MCBBS用户自行搭建,与MCBBS及东银河系漫游指南(北京)科技有限公司没有从属关系。点此了解 MCBBS Wiki 不是什么>>
(创建页面,内容为“为模组添加新物品可以说是Modder最常见也是最简单的需求了。对于没有什么额外行为的物品,直接用Item类即可;如果需要有额外的逻辑,则需要先继承Item类,并覆写相应的方法。读者可以自行翻阅Item和IItemExtension的源码。 Item的构造方法接受一个Item.Properties,这个对象指定了物品的一些基本属性,如最大堆叠数、耐久值等等。 注册物品当然是用延…”) |
(→数据生成) |
||
| (未显示同一用户的9个中间版本) | |||
| 第19行: | 第19行: | ||
//别忘了在你的入口类构造方法中调用它! | //别忘了在你的入口类构造方法中调用它! | ||
public static void register(IEventBus bus) { | public static void register(IEventBus bus) { | ||
ITEMS.register(bus); | |||
} | } | ||
| 第30行: | 第30行: | ||
{ | { | ||
"parent": "minecraft:item/generated", | |||
"textures": { | |||
"layer0": "tutorialmod:item/one_example_item" | |||
} | |||
} | } | ||
| 第39行: | 第39行: | ||
将准备好的纹理PNG文件放入指定的位置,runClient打开游戏,你应该能看到你的新物品不是紫黑块了。 | 将准备好的纹理PNG文件放入指定的位置,runClient打开游戏,你应该能看到你的新物品不是紫黑块了。 | ||
=== 数据生成 === | |||
物品模型的对应的DataProvider实现类是ItemModelProvider,其提供了一些辅助方法来简化物品模型的datagen。 | |||
public class MyItemModelProvider extends ItemModelProvider { | |||
public MyItemModelProvider(PackOutput output, ExistingFileHelper existingFileHelper) { | |||
super(output, TutorialMod.MODID, existingFileHelper); | |||
} | |||
@Override | |||
protected void registerModels() { | |||
basicItem(ModItems.ONE_EXAMPLE_ITEM.get()); | |||
//最简单的一个物品模型。 | |||
withExistingParent(ModItems.ANOTHER_EXAMPLE_ITEM.getId().toString(), mcLoc("item/generated")) | |||
.texture("layer0", ResourceLocation.fromNamespaceAndPath(...)) | |||
//通用的datagen代码,可以通过继续调用#texture增加更多层的纹理。 | |||
} | |||
} | |||
简单的物品模型可以这样datagen出来。至于复杂的物品模型(如涉及到不同视角的自定义变换),一般是通过Blockbench做出来的,能直接导出为JSON文件,因此一般不通过datagen生成(虽然也确实可以)。 | |||
== 语言文件 == | == 语言文件 == | ||
| 第47行: | 第67行: | ||
{ | { | ||
"item.tutorialmod.one_example_item": "One Example Item" | |||
} | } | ||
| 第53行: | 第73行: | ||
{ | { | ||
"item.tutorialmod.one_example_item": "一个示例物品" | |||
} | } | ||
好了,现在这个物品看上去真的没什么问题了。 | 好了,现在这个物品看上去真的没什么问题了。 | ||
=== 数据生成 === | |||
public class ENLanguageProvider extends LanguageProvider { | |||
public ENLanguageProvider(PackOutput output) { | |||
super(output, TutorialMod.MODID, "en_us"); | |||
//第二个参数是你的MODID,第三个参数是生成的语言文件的对应语言的代码。 | |||
} | |||
@Override | |||
protected void addTranslations() { | |||
addItem(ModItems.ONE_EXAMPLE_ITEM, "One Example Item"); | |||
//添加某物品的本地化名。 | |||
//还有其他一些辅助方法,如addBlock、addDimension之类的。 | |||
//还可以直接调用add方法,用于自定义本地化键名的本地化。 | |||
} | |||
} | |||
中文语言文件的LanguageProvider类似,这里就不贴代码了。 | |||
最后不要忘了在GatherDataEvent监听器中添加你的LanguageProvider! | |||