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. By: SydMontague <sydmontague@phoenix-staffel.de>
Dieser Commit ist enthalten in:
Ursprung
50503fd516
Commit
dc5ebfac9a
@ -384,7 +384,13 @@
|
||||
this.world.addEntity(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.vehicle = entity;
|
||||
@ -393,7 +399,7 @@
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -1584,7 +1826,7 @@
|
||||
@@ -1584,7 +1827,7 @@
|
||||
Entity entity = this.vehicle;
|
||||
|
||||
this.vehicle = null;
|
||||
@ -402,7 +408,7 @@
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1593,10 +1835,31 @@
|
||||
@@ -1593,10 +1836,31 @@
|
||||
this.bb();
|
||||
}
|
||||
|
||||
@ -435,7 +441,7 @@
|
||||
if (!this.world.isClientSide && entity instanceof EntityHuman && !(this.getRidingPassenger() instanceof EntityHuman)) {
|
||||
this.passengers.add(0, entity);
|
||||
} else {
|
||||
@@ -1604,15 +1867,33 @@
|
||||
@@ -1604,15 +1868,33 @@
|
||||
}
|
||||
|
||||
}
|
||||
@ -470,7 +476,7 @@
|
||||
}
|
||||
|
||||
protected boolean q(Entity entity) {
|
||||
@@ -1665,7 +1946,13 @@
|
||||
@@ -1665,7 +1947,13 @@
|
||||
this.world.getMethodProfiler().enter("portal");
|
||||
this.portalTicks = i;
|
||||
this.portalCooldown = this.getDefaultPortalCooldown();
|
||||
@ -485,7 +491,7 @@
|
||||
this.world.getMethodProfiler().exit();
|
||||
}
|
||||
|
||||
@@ -1765,6 +2052,13 @@
|
||||
@@ -1765,6 +2053,13 @@
|
||||
}
|
||||
|
||||
public void setSwimming(boolean flag) {
|
||||
@ -499,7 +505,7 @@
|
||||
this.setFlag(4, flag);
|
||||
}
|
||||
|
||||
@@ -1825,16 +2119,56 @@
|
||||
@@ -1825,16 +2120,56 @@
|
||||
}
|
||||
|
||||
public void setAirTicks(int i) {
|
||||
@ -559,7 +565,7 @@
|
||||
}
|
||||
|
||||
public void k(boolean flag) {
|
||||
@@ -1986,18 +2320,45 @@
|
||||
@@ -1986,18 +2321,45 @@
|
||||
|
||||
@Nullable
|
||||
public Entity a(WorldServer worldserver) {
|
||||
@ -609,7 +615,7 @@
|
||||
} else {
|
||||
double d0 = this.locX();
|
||||
double d1 = this.locZ();
|
||||
@@ -2023,7 +2384,16 @@
|
||||
@@ -2023,7 +2385,16 @@
|
||||
Vec3D vec3d1 = this.getPortalOffset();
|
||||
|
||||
blockposition = new BlockPosition(d0, this.locY(), d1);
|
||||
@ -627,7 +633,7 @@
|
||||
|
||||
if (shapedetector_shape == null) {
|
||||
return null;
|
||||
@@ -2033,6 +2403,11 @@
|
||||
@@ -2033,6 +2404,11 @@
|
||||
vec3d = shapedetector_shape.velocity;
|
||||
f = (float) shapedetector_shape.yaw;
|
||||
}
|
||||
@ -639,7 +645,7 @@
|
||||
|
||||
this.world.getMethodProfiler().exitEnter("reloading");
|
||||
Entity entity = this.getEntityType().a((World) worldserver);
|
||||
@@ -2043,8 +2418,16 @@
|
||||
@@ -2043,8 +2419,16 @@
|
||||
entity.setMot(vec3d);
|
||||
worldserver.addEntityTeleport(entity);
|
||||
if (worldserver.getDimensionKey() == World.THE_END) {
|
||||
@ -657,7 +663,7 @@
|
||||
}
|
||||
|
||||
this.bJ();
|
||||
@@ -2253,7 +2636,26 @@
|
||||
@@ -2253,7 +2637,26 @@
|
||||
}
|
||||
|
||||
public void a(AxisAlignedBB axisalignedbb) {
|
||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren