NeoForge-1.20.4Mod开发教程之Tag

本篇教程参考为Flandre芙兰的NeoForge1.20.4Mod开发的视频,这篇教程是我边学边总结的,与其说是教程更像我的学习笔记,如有不清楚的地方,大家可以在评论区提问。在我力所能及的范围内,我都会解答的。

上篇教程我们写了ruby_block的战利品表,但我们进游戏挖掘会发现:不管用什么等级的镐子都挖掘地非常慢,而且挖完之后还没有东西掉落。那我们明明写了战利品表,为什么没有掉落呢?其实,mc在判断方块会不会掉落时,还会判断你所用的工具是不是合适的工具,如果不是那么就算挖掉了也不会掉落。没错,mc就是通过今天要写的Tag来判断你是不是用的合适的工具

建立Tag目录

65538f033d20260210162447

 

tag用的是原版的命名空间,你在可以在原版的数据包的相同位置看到各种各样的Tag

在左侧边栏搜索client就可以看到原版的内容

68e2404de520260210162501

 

mineable里有四个json文件:pickaxe.json`axe.jsonhoe.jsonshvoel.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
喜欢就支持一下吧
点赞3赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容