UID531728性别保密经验 EP铁粒 粒回帖0主题精华在线时间 小时注册时间2022-7-31最后登录1970-1-1
| 200铁粒 本帖最后由 QWERTY770 于 2025-1-10 01:28 编辑
我想给原版“与蜂共舞”进度添加一个准则,使得使用带有#firefly8:tinted_bottles标签的物品,对着smokey=true的带有#minecraft:beehives标签的方块使用时,也能完成该进度。
Minecraft 1.21.3中,相关进度的生成代码位于net.minecraft.data.advancements.packs.VanillaHusbandryAdvancements::generate方法中,代码如下:
- AdvancementHolder advancementHolder8 = Builder.advancement().parent(advancementHolder).addCriterion("safely_harvest_honey", ItemUsedOnLocationTrigger.TriggerInstance.itemUsedOnBlock(LocationPredicate.Builder.location().setBlock(BlockPredicate.Builder.block().of(holderGetter3, BlockTags.BEEHIVES)).setSmokey(true), ItemPredicate.Builder.item().of(holderGetter2, new ItemLike[]{Items.GLASS_BOTTLE}))).display(Items.HONEY_BOTTLE, Component.translatable("advancements.husbandry.safely_harvest_honey.title"), Component.translatable("advancements.husbandry.safely_harvest_honey.description"), (ResourceLocation)null, AdvancementType.TASK, true, true, false).save(writer, "husbandry/safely_harvest_honey");
复制代码
进度准则需要在save方法执行之前添加,但是此时无法捕获变量,无法获得执行save方法的Advancement.Builder对象。
我不知道如何获取这行代码恰好在save方法还未执行时的值。
不要修改Advancement.Builder::save或者Advancement.Builder::build方法,因为这会引发兼容性问题,将和我开发的另一个Mod不兼容。
请给出一段代码(或实现思路,只要能被我看懂即可),在Minecraft 1.21.3版本中,基于官方混淆映射表,实现上述需求。可以使用SpongePowered Mixin,也可以使用其他工具,但请不要引入除Architectury API,Fabric API和NeoForge API以外的、会使得Mod在运行时需要安装前置模组的依赖。
最后,把帖子发在这里(而不是编程分享版块-编程求助)是为了给出更多悬赏金,希望能有更多的坛友对我予以帮助与指导。
|
|