Hrtzee 8/25/2021, 10:39:24 AM
本帖最后由 Hrtzee 于 2021-8-27 16:05 编辑

学着知乎上的教程做了一个可以坐的方块,但是当我写下列代码要实现取消骑乘移除实体时,在游戏里总是一骑上去就移除了实体导致无法骑乘,希望大佬赐教,为什么这段代码怎么都能实现

代码已附
@SubscribeEvent
public static void stand(EntityMountEvent event) {
    if (event.isDismounting() && event.getEntityBeingMounted() instanceof ArmorStandEntity) {
        event.getEntityBeingMounted().remove();
    }
}

enderman_JC 8/25/2021, 10:53:09 AM
给event.getEntityBeingMounted().remove();套个延迟0.1试试看

Haoke_City 8/25/2021, 10:58:53 AM
emmmm我有点看不懂qwq

1006438726 8/25/2021, 11:43:40 AM
我看不懂代码emm

xtex 8/25/2021, 12:41:49 PM
可能是盔甲架不能乘骑?用矿车试试?

Hrtzee 8/25/2021, 1:05:43 PM
enderman_JC 发表于 2021-8-25 18:53
给event.getEntityBeingMounted().remove();套个延迟0.1试试看

不行,不管延迟加在整个if语句上还是里面的子语句这玩意都能诡异的执行查看图片 (t.me)

Hrtzee 8/25/2021, 1:08:43 PM
xtex 发表于 2021-8-25 20:41
可能是盔甲架不能乘骑?用矿车试试?

在没有加这条代码(这条代码的目的是玩家取消骑乘后删除盔甲架实体)之前是可以实现骑乘这一动作的,加了之后一骑上去就取消骑乘说明这个代码的判断肯定过,最离谱的是在if的第一个判断条件前加!也还是能出现这个情况查看图片 (t.me)

xtex 8/25/2021, 1:28:15 PM
Hrtzee 发表于 2021-8-25 21:08
在没有加这条代码(这条代码的目的是玩家取消骑乘后删除盔甲架实体)之前是可以实现骑乘这一动作的,加了 ...

然而我找了Bukkit1.17.1和Paper1.16.5的javadoc都找不到EntityMountEvent.isDismounting

Hrtzee 8/25/2021, 1:37:01 PM
xtex 发表于 2021-8-25 21:28
然而我找了Bukkit1.17.1和Paper1.16.5的javadoc都找不到EntityMountEvent.isDismounting

public class EntityMountEvent extends EntityEvent
{

    private final Entity entityMounting;
    private final Entity entityBeingMounted;
    private final World worldObj;

    private final boolean isMounting;

    public EntityMountEvent(Entity entityMounting, Entity entityBeingMounted, World entityWorld, boolean isMounting)
    {
        super(entityMounting);
        this.entityMounting = entityMounting;
        this.entityBeingMounted = entityBeingMounted;
        this.worldObj = entityWorld;
        this.isMounting = isMounting;
    }

    public boolean isMounting()
    {
        return isMounting;
    }

    public boolean isDismounting()
    {
        return !isMounting;
    }

    public Entity getEntityMounting()
    {
        return entityMounting;
    }

    public Entity getEntityBeingMounted()
    {
        return entityBeingMounted;
    }

    public World getWorldObj()
    {
        return worldObj;
    }
}

我这边的mojmap是有的

xtex 8/27/2021, 2:51:24 AM
Hrtzee 发表于 2021-8-25 21:37
public class EntityMountEvent extends EntityEvent
{

草,时forge啊,看到event我还以为是Bukkit(我:Fabric用户),把event.isDismounting()改成event.isMounting()试试?

3TUSK 8/27/2021, 3:24:44 AM
无法复现。

……倒是如果我一直按着 Shift 是可以复现的。你是不是 Windows 用户且给 Shift 开了粘滞键之类的?

Hrtzee 8/27/2021, 6:05:39 AM
3TUSK 发表于 2021-8-27 11:24
无法复现。

……倒是如果我一直按着 Shift 是可以复现的。你是不是 Windows 用户且给 Shift 开了粘滞键之 ...

是windows用户,但是应该不是shift的问题,矿车什么的坐着完全没有异样,应该是一骑乘上去remove就以奇怪的姿势触发了导致上不了盔甲架
总之已经把坐的功能放弃了查看图片 (t.me)

Hrtzee 8/27/2021, 6:09:13 AM
xtex 发表于 2021-8-27 10:51
草,时forge啊,看到event我还以为是Bukkit(我:Fabric用户),把event.isDismounting()改成event.isMou ...

不管是event.isMounting、!event.isMounting、event.isDismounting、!event.isDismounting都试过了,全触发了查看图片 (t.me)
还是用现成的mod了

1224242889 8/27/2021, 3:25:29 PM
这对于我来说是天书

第一页 上一页 下一页 最后一页