我的世界BBA模组的根进度解锁判断

BBA模组版(下称BBAI)本质上是对BBA原版的二次封装与改进,但BBAI运用了模组的优势致使其部分内容与原数据包有微小差异。

首先,BBAI的进度没有奖励(”rewards”下的指令执行),这样使得运行效率提高了(BBA需要奖励函数用于解锁根进度)。

其次,BBA的根进度解锁依赖原版的指令函数(functions),而BBAI的根进度解锁是直接在代码里执行的。

根进度解锁实现如下:

PlayerEvent.PLAYER_JOIN.register(player->{
            if(!player.getLevel().isClientSide()){
                // 原版进度默认开启(毕竟你总不能关掉原版吧...)
                AdvancementUtil.awardAdvancement(player, id("minecraft/vanilla"), "minecraft");
                ADVANCEMENT_MAP.forEach(v->{
                    //(enable#是否启用Mod【在初始化时检测】、advId#进度id、awardId#进度的触发器id)
                    if(v.enable){
                        // 对player.getAdvancements().award(adv, award)的封装。
                        AdvancementUtil.awardAdvancement(player, v.advId, v.awardId);
                    }
                });
            }
        });

在每一次玩家加入游戏时进行检测并解锁进度,而非进度完成后进行检测。

当然,如果能够做到只有第一次加入游戏时检测那优化就最佳了(不过这是不可能的,因为Mod的数量通常只会只增不减)

此外数据包与模组无异。

另请参阅:

原数据包的实现

Copyright © 2018-2023 PHP源码网 版权所有
PHP源码网 » 我的世界BBA模组的根进度解锁判断

提供最优质的资源集合

立即查看 了解详情