本篇教程参考为的NeoForge1.20.4Mod开发的视频,这篇教程是我边学边总结的,与其说是教程更像我的学习笔记,如有不清楚的地方,大家可以在评论区提问。在我力所能及的范围内,我都会解答的。
上篇教程我们写了ruby_block的战利品表,但我们进游戏挖掘会发现:不管用什么等级的镐子都挖掘地非常慢,而且挖完之后还没有东西掉落。那我们明明写了战利品表,为什么没有掉落呢?其实,mc在判断方块会不会掉落时,还会判断你所用的工具是不是合适的工具,如果不是那么就算挖掉了也不会掉落。没错,mc就是通过今天要写的Tag来判断你是不是用的合适的工具
建立Tag目录

tag用的是原版的命名空间,你在可以在原版的数据包的相同位置看到各种各样的Tag
在左侧边栏搜索client就可以看到原版的内容

mineable里有四个json文件:pickaxe.json、`axe.json、hoe.json、shvoel.json里面填写了各个工具适合挖掘的方块
tags的格式如下:
{
"values": [
"examplemod:ruby_frame",
"examplemod:ruby_block"
]
}
Tags数据生成
创建ModBlockTagProvider类
public class ModBlockTagProvider extends BlockTagsProvider {
public ModBlockTagProvider(PackOutput output, CompletableFuture<HolderLookup.Provider> lookupProvider, String modId, @Nullable ExistingFileHelper existingFileHelper) {
super(output, lookupProvider, modId, existingFileHelper);
}
@Override
protected void addTags(HolderLookup.Provider provider) {
this.tag(BlockTags.NEEDS_STONE_TOOL)//Tag类别
.add(ModBlocks.RUBY_FRAME.get())
.add(ModBlocks.RUBY_BLOCK.get());
this.tag(BlockTags.MINEABLE_WITH_PICKAXE)
.add(ModBlocks.RUBY_FRAME.get())
.add(ModBlocks.RUBY_BLOCK.get());
}
}
添加到ModDataGeneratorHandler里
event.getGenerator().addProvider(
event.includeServer(),
(DataProvider.Factory<ModBlockTagProvider>) pOutput -> new ModBlockTagProvider(pOutput,lp,ExampleMod.MODID,efh)
);
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END







暂无评论内容