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();
}
}
学着知乎上的教程做了一个可以坐的方块,但是当我写下列代码要实现取消骑乘移除实体时,在游戏里总是一骑上去就移除了实体导致无法骑乘,希望大佬赐教,为什么这段代码怎么都能实现
代码已附
@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语句上还是里面的子语句这玩意都能诡异的执行
Hrtzee
8/25/2021, 1:08:43 PM
xtex 发表于 2021-8-25 20:41
可能是盔甲架不能乘骑?用矿车试试?
在没有加这条代码(这条代码的目的是玩家取消骑乘后删除盔甲架实体)之前是可以实现骑乘这一动作的,加了之后一骑上去就取消骑乘说明这个代码的判断肯定过,最离谱的是在if的第一个判断条件前加!也还是能出现这个情况
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 开了粘滞键之类的?
……倒是如果我一直按着 Shift 是可以复现的。你是不是 Windows 用户且给 Shift 开了粘滞键之类的?
Hrtzee
8/27/2021, 6:05:39 AM
3TUSK 发表于 2021-8-27 11:24
无法复现。
……倒是如果我一直按着 Shift 是可以复现的。你是不是 Windows 用户且给 Shift 开了粘滞键之 ...
是windows用户,但是应该不是shift的问题,矿车什么的坐着完全没有异样,应该是一骑乘上去remove就以奇怪的姿势触发了导致上不了盔甲架
总之已经把坐的功能放弃了
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都试过了,全触发了
还是用现成的mod了
1224242889
8/27/2021, 3:25:29 PM
这对于我来说是天书