MC百科社群

标题: 求模组 末地返回保留药水效果 [打印本页]

作者: dinnerbone    时间: 2024-9-26 23:59
标题: 求模组 末地返回保留药水效果
需要模组,使得玩家从末地通过传送门返回后清除效果以及生命必定变成20的特性消失。(正如从下界正常地返回一样)
要求1.16.5Forge

作者: QQ酱277476    时间: 2024-9-28 12:38
这是一个bug,在1.21的某个版本修复了,只需要在玩家克隆事件复制一下玩家的信息就行了,随便找一个给玩家加属性的mod,加进去试试
作者: dinnerbone    时间: 2024-9-28 14:55
QQ酱277476 发表于 2024-9-28 12:38
这是一个bug,在1.21的某个版本修复了,只需要在玩家克隆事件复制一下玩家的信息就行了,随便找一个给玩家 ...

能否具体一点
作者: QQ酱277476    时间: 2024-9-28 16:13
dinnerbone 发表于 2024-9-28 14:55
能否具体一点

玩家在从传送门返回的时候,是新建了一个玩家,把新玩家放到主世界,而不是把旧玩家传送到主世界,而这个新玩家并不会完全获得旧玩家的数据,所以导致了这种情况。对于这个forge有一个克隆事件,在这里处理一下就行了。
不止是药水什么的,关于attribute的信息也会消失,所以找一个加生命上限,攻击力,速度什么的(不能是装备,需要,比如心之容器那样的增加)mod,这些mod可能会处理这个情况(但也有可能只单独处理了自己mod里面的数据),如果mod没有单独处理自己的信息,他就会连带处理你说的问题。
作者: dinnerbone    时间: 2024-9-28 16:27
QQ酱277476 发表于 2024-9-28 16:13
玩家在从传送门返回的时候,是新建了一个玩家,把新玩家放到主世界,而不是把旧玩家传送到主世界,而这个 ...

请问举例一些这种模组呢?或者有无针对性修复此问题的模组?
作者: QQ酱277476    时间: 2024-9-28 16:52
dinnerbone 发表于 2024-9-28 16:27
请问举例一些这种模组呢?或者有无针对性修复此问题的模组?

比如Supernatural,不知道有没有专门修复这个的mod
作者: dinnerbone    时间: 2024-9-28 16:55
QQ酱277476 发表于 2024-9-28 16:52
比如Supernatural,不知道有没有专门修复这个的mod

体量还是大,等一个专用的模组。不过谢谢了
作者: QQ酱277476    时间: 2024-9-28 18:43
dinnerbone 发表于 2024-9-28 16:55
体量还是大,等一个专用的模组。不过谢谢了

晚上我可以把我的mod改一下,覆盖一下这个问题(
我主页一个叫沉浸进化的mod,体量蛮小的(
作者: dinnerbone    时间: 2024-9-28 21:06
QQ酱277476 发表于 2024-9-28 18:43
晚上我可以把我的mod改一下,覆盖一下这个问题(
我主页一个叫沉浸进化的mod,体量蛮小的( ...

多谢。若有进度还请叫我
作者: QQ酱277476    时间: 2024-9-29 01:54
dinnerbone 发表于 2024-9-28 21:06
多谢。若有进度还请叫我

好了,在沉浸进化1.2.5版本修复了你说的问题,注意,如果你不想要这个mod的效果,在配置文件里面全改成0就行了
另外,属性修复没问题,但是药水效果,不知道为什么会出现返回后要延迟一段时间才回重新出现药水图标,但是会有效果,比如力量,虽然不显示,但依然会有伤害加成。
作者: dinnerbone    时间: 2024-9-29 14:43
QQ酱277476 发表于 2024-9-29 01:54
好了,在沉浸进化1.2.5版本修复了你说的问题,注意,如果你不想要这个mod的效果,在配置文件里面全改成0 ...

辛苦了。我还是希望有一个专一的模组解决此问题。正巧准备开始学习模组开发,我可尝试自行解决此问题。若日后遇到问题,希望你不吝赐教。
作者: QQ酱277476    时间: 2024-9-29 16:08
dinnerbone 发表于 2024-9-29 14:43
辛苦了。我还是希望有一个专一的模组解决此问题。正巧准备开始学习模组开发,我可尝试自行解决此问题。若 ...

这样就行了

@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.FORGE)
public class CloneEvent {
    @SubscribeEvent
    public static void clone(PlayerEvent.Clone event){
        if(event.isWasDeath()) return;
        PlayerEntity old = event.getOriginal();
        PlayerEntity newPlayer =  (PlayerEntity) event.getEntity();
        for(ResourceLocation resourceLocation : ForgeRegistries.ATTRIBUTES.getKeys()){
            if(old.getAttribute(ForgeRegistries.ATTRIBUTES.getValue(resourceLocation)) != null){
                for (AttributeModifier a  : old.getAttribute(ForgeRegistries.ATTRIBUTES.getValue(resourceLocation)).getModifiers()){
                    newPlayer.getAttribute(ForgeRegistries.ATTRIBUTES.getValue(resourceLocation)).addPermanentModifier(a);
                }
            }
        }
        for(EffectInstance effectInstance : old.getActiveEffects()){
            newPlayer.forceAddEffect(effectInstance);
        }
    }
}





欢迎光临 MC百科社群 (https://bbs.mcmod.cn/) MC百科|最大的MineCraft中文模组百科