geforkt von Mirrors/Paper
SPIGOT-5562: Entering a boat triggers VehicleExitEvent
This patch prevents entities from riding a vehicle they're already riding on. When trying to enter a boat the client will send up to two packets for each hand causing the server to think they should enter the boat twice, despite the first interaction being sufficient.
Dieser Commit ist enthalten in:
Ursprung
7ea3c040bc
Commit
847ad16eed
@ -384,7 +384,13 @@
|
|||||||
this.world.addEntity(entityitem);
|
this.world.addEntity(entityitem);
|
||||||
return entityitem;
|
return entityitem;
|
||||||
}
|
}
|
||||||
@@ -1559,7 +1801,7 @@
|
@@ -1554,12 +1796,13 @@
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
if (this.isPassenger()) {
|
||||||
|
+ if (this.vehicle == entity) return true; // CraftBukkit - SPIGOT-5562: already riding
|
||||||
|
this.stopRiding();
|
||||||
|
}
|
||||||
|
|
||||||
this.setPose(EntityPose.STANDING);
|
this.setPose(EntityPose.STANDING);
|
||||||
this.vehicle = entity;
|
this.vehicle = entity;
|
||||||
@ -393,7 +399,7 @@
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1584,7 +1826,7 @@
|
@@ -1584,7 +1827,7 @@
|
||||||
Entity entity = this.vehicle;
|
Entity entity = this.vehicle;
|
||||||
|
|
||||||
this.vehicle = null;
|
this.vehicle = null;
|
||||||
@ -402,7 +408,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1593,10 +1835,31 @@
|
@@ -1593,10 +1836,31 @@
|
||||||
this.bb();
|
this.bb();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -435,7 +441,7 @@
|
|||||||
if (!this.world.isClientSide && entity instanceof EntityHuman && !(this.getRidingPassenger() instanceof EntityHuman)) {
|
if (!this.world.isClientSide && entity instanceof EntityHuman && !(this.getRidingPassenger() instanceof EntityHuman)) {
|
||||||
this.passengers.add(0, entity);
|
this.passengers.add(0, entity);
|
||||||
} else {
|
} else {
|
||||||
@@ -1604,15 +1867,33 @@
|
@@ -1604,15 +1868,33 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -470,7 +476,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected boolean q(Entity entity) {
|
protected boolean q(Entity entity) {
|
||||||
@@ -1665,7 +1946,13 @@
|
@@ -1665,7 +1947,13 @@
|
||||||
this.world.getMethodProfiler().enter("portal");
|
this.world.getMethodProfiler().enter("portal");
|
||||||
this.portalTicks = i;
|
this.portalTicks = i;
|
||||||
this.portalCooldown = this.getDefaultPortalCooldown();
|
this.portalCooldown = this.getDefaultPortalCooldown();
|
||||||
@ -485,7 +491,7 @@
|
|||||||
this.world.getMethodProfiler().exit();
|
this.world.getMethodProfiler().exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1765,6 +2052,13 @@
|
@@ -1765,6 +2053,13 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSwimming(boolean flag) {
|
public void setSwimming(boolean flag) {
|
||||||
@ -499,7 +505,7 @@
|
|||||||
this.setFlag(4, flag);
|
this.setFlag(4, flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1825,16 +2119,56 @@
|
@@ -1825,16 +2120,56 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAirTicks(int i) {
|
public void setAirTicks(int i) {
|
||||||
@ -559,7 +565,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void k(boolean flag) {
|
public void k(boolean flag) {
|
||||||
@@ -1986,18 +2320,45 @@
|
@@ -1986,18 +2321,45 @@
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public Entity a(WorldServer worldserver) {
|
public Entity a(WorldServer worldserver) {
|
||||||
@ -609,7 +615,7 @@
|
|||||||
} else {
|
} else {
|
||||||
double d0 = this.locX();
|
double d0 = this.locX();
|
||||||
double d1 = this.locZ();
|
double d1 = this.locZ();
|
||||||
@@ -2023,7 +2384,16 @@
|
@@ -2023,7 +2385,16 @@
|
||||||
Vec3D vec3d1 = this.getPortalOffset();
|
Vec3D vec3d1 = this.getPortalOffset();
|
||||||
|
|
||||||
blockposition = new BlockPosition(d0, this.locY(), d1);
|
blockposition = new BlockPosition(d0, this.locY(), d1);
|
||||||
@ -627,7 +633,7 @@
|
|||||||
|
|
||||||
if (shapedetector_shape == null) {
|
if (shapedetector_shape == null) {
|
||||||
return null;
|
return null;
|
||||||
@@ -2033,6 +2403,11 @@
|
@@ -2033,6 +2404,11 @@
|
||||||
vec3d = shapedetector_shape.velocity;
|
vec3d = shapedetector_shape.velocity;
|
||||||
f = (float) shapedetector_shape.yaw;
|
f = (float) shapedetector_shape.yaw;
|
||||||
}
|
}
|
||||||
@ -639,7 +645,7 @@
|
|||||||
|
|
||||||
this.world.getMethodProfiler().exitEnter("reloading");
|
this.world.getMethodProfiler().exitEnter("reloading");
|
||||||
Entity entity = this.getEntityType().a((World) worldserver);
|
Entity entity = this.getEntityType().a((World) worldserver);
|
||||||
@@ -2043,8 +2418,16 @@
|
@@ -2043,8 +2419,16 @@
|
||||||
entity.setMot(vec3d);
|
entity.setMot(vec3d);
|
||||||
worldserver.addEntityTeleport(entity);
|
worldserver.addEntityTeleport(entity);
|
||||||
if (worldserver.getDimensionKey() == World.THE_END) {
|
if (worldserver.getDimensionKey() == World.THE_END) {
|
||||||
@ -657,7 +663,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.bJ();
|
this.bJ();
|
||||||
@@ -2253,7 +2636,26 @@
|
@@ -2253,7 +2637,26 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
public void a(AxisAlignedBB axisalignedbb) {
|
public void a(AxisAlignedBB axisalignedbb) {
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren