Featured image of post 个人在给探矿器添加配方时遇到的问题

个人在给探矿器添加配方时遇到的问题

FirstFabricModDev 4

先说说今天的心情

看到Respwan在Apex的今天的更新上继续作死(逆天的给探路者的勾爪改到固定30s的CD,然后改废了TS),这些没母的改动使得陪伴了我3年的游戏就这样彻底的进入了坟墓, 我的心情也是极度的难过, 不知道重生想干什么,也不知道玩家多了对游戏能有什么坏处, 但这种B事就是发生了, 我不得不告别Apex,这里给上@Leamonheadtv的一段话。
English: Respawn figures out that they don't deserve to have Apex Legends under their development team.lt's embarrassing and a middle finger to actual gamers.
Chinese: 重生对我们的热爱,和对身法的极致追求,竖了一个中指,并叫我们滚蛋
Apex

参考视频:


如果你只是想添加玻璃方块的Tags到配方中,请先看这
FabircAPI在
net.fabricmc.fabric.api.tag.convention.v2.ConventionalItemTags
中提供了GLASS_BLOCKS的标签,直接用就完事。

后面是我的研究过程

阶段一:ModItemTagsProvider中构造函数的新写法

1
2
3
public ModItemTagsProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> completableFuture, @Nullable BlockTagProvider blockTagProvider) {
    super(output, completableFuture, blockTagProvider);
}

这样写使得在后面的configure方法中能引入copy函数。

阶段二:在DataGenerator中重新新建实例

1
2
3
4
5
6
7
8
9
public class ModDataGenerator implements DataGeneratorEntrypoint {
	@Override
	public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) {
		FabricDataGenerator.Pack pack = fabricDataGenerator.createPack();
		FabricTagProvider.BlockTagProvider blockTagsProvider = pack.addProvider(ModBlockTagsProvider::new);
		pack.addProvider((output, completableFuture) -> new ModItemTagsProvider(output, completableFuture, blockTagsProvider));
    }
}
//ModBlockTagsProvider在这里重新定义ModItemTagsProvider被定义了,所以无需单独再定义ModBlockTagsProvider

阶段三:尝试把BlockTags.IMPERMEABLE复制到GLASS_TAG

1.尝试新建一个自己的BlockTag(GLASS_LIST)来复制BlockTags.IMPERMEABLE;
getOrCreateTagBuilder(ModBlockTags.GLASS_LIST).forceAddTag(BlockTags.IMPERMEABLE);
2. 然后在ModItemTagsProvider使用copy函数复制到自己的ItemTag(GLASS_TAG)中
this.copy(ModBlockTags.GLASS_LIST, ModItemTags.GLASS_TAG);
3. 以上结果在使用recipeProvider生成时没遇到问题,但是游戏运行后结果如下
[Render thread/ERROR] (Minecraft) Couldn't load tag firstfabricmod:glass_tag as it is missing following references: <#789950127774105602>:impermeable (from firstfabricmod)
所以配方也是无效的

阶段四,尝试直接copy BlockTags.IMPERMEABLE

代码如下:
this.copy(BlockTags.IMPERMEABLE, ModItemTags.GLASS_TAG);
GLASS_TAG的json文件生成了,但是values是空的
JSON文件内容如下:

1
2
3
{
  "values": []
}

总结:

BlockTags.IMPERMEABLE貌似是一个特殊的BlockTag标签,即使被copyItemTag中也无法正确被游戏使用(至少我们在Discord Fabric的频道中讨论结果是这样的),最后直接使用FabricAPI提供的Tags就好。

特别感谢以下两位Fabric频道中的高手给予的帮助

help
@marea
@𓆩⟡ 𝑵𝐨𝐯𝐚 ⟡𓆪

参考代码:

Github - AppliedEnergistics 2

本作品采用知识共享署名-非商业性使用-相同方式共享4.0国际许可协议进行许可(CC BY-NC-SA 4.0)
文章浏览量:Loading
Powered By MC ZBD Studio
发表了21篇文章 · 总计29.03k字
载入天数...载入时分秒...
总浏览量Loading | 访客总数Loading

主题 StackJimmy 设计
由ZephyrBD修改