Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -29291,7 +29291,7 @@ index 09b6da207530987b483444cebeadc2f1c9a15247..3666c3efd188508153b6482db425648e
+ // Paper end - block counting
}
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index ec8b47eebc30a73adb3195aa91fd5b82518cac2d..4b74c91b47318d048abc53952ebeae7615f50524 100644
index 2fd4add6c2865d20cb5afb324b5f85ff5eac2ef2..32b5b1d5a9ab6ec3880e142cb263d8d47d680000 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -164,7 +164,7 @@ public abstract class Entity
Expand Down Expand Up @@ -29542,7 +29542,7 @@ index ec8b47eebc30a73adb3195aa91fd5b82518cac2d..4b74c91b47318d048abc53952ebeae76

public Entity(final EntityType<?> type, final Level level) {
this.type = type;
@@ -1484,34 +1590,76 @@ public abstract class Entity
@@ -1488,34 +1594,76 @@ public abstract class Entity
}

private Vec3 collide(final Vec3 movement) {
Expand Down Expand Up @@ -29642,7 +29642,7 @@ index ec8b47eebc30a73adb3195aa91fd5b82518cac2d..4b74c91b47318d048abc53952ebeae76
}

private static float[] collectCandidateStepUpHeights(
@@ -2832,17 +2980,106 @@ public abstract class Entity
@@ -2836,17 +2984,106 @@ public abstract class Entity
return false;
}

Expand Down Expand Up @@ -29759,7 +29759,7 @@ index ec8b47eebc30a73adb3195aa91fd5b82518cac2d..4b74c91b47318d048abc53952ebeae76
}

public InteractionResult interact(final Player player, final InteractionHand hand, final Vec3 location) {
@@ -4449,15 +4686,17 @@ public abstract class Entity
@@ -4453,15 +4690,17 @@ public abstract class Entity
}

public Iterable<Entity> getIndirectPassengers() {
Expand All @@ -29785,7 +29785,7 @@ index ec8b47eebc30a73adb3195aa91fd5b82518cac2d..4b74c91b47318d048abc53952ebeae76
}

public int countPlayerPassengers() {
@@ -4768,6 +5007,15 @@ public abstract class Entity
@@ -4772,6 +5011,15 @@ public abstract class Entity
}

public final void setPosRaw(double x, double y, double z, boolean forceBoundingBoxUpdate) {
Expand All @@ -29801,7 +29801,7 @@ index ec8b47eebc30a73adb3195aa91fd5b82518cac2d..4b74c91b47318d048abc53952ebeae76
if (!checkPosition(this, x, y, z)) {
return;
}
@@ -4917,6 +5165,12 @@ public abstract class Entity
@@ -4921,6 +5169,12 @@ public abstract class Entity

@Override
public final void setRemoved(final Entity.RemovalReason reason, org.bukkit.event.entity.EntityRemoveEvent.@Nullable Cause cause) { // CraftBukkit - add Bukkit remove cause
Expand All @@ -29814,7 +29814,7 @@ index ec8b47eebc30a73adb3195aa91fd5b82518cac2d..4b74c91b47318d048abc53952ebeae76
org.bukkit.craftbukkit.event.CraftEventFactory.callEntityRemoveEvent(this, cause); // CraftBukkit
final boolean alreadyRemoved = this.removalReason != null; // Paper - Folia schedulers
if (this.removalReason == null) {
@@ -4928,7 +5182,7 @@ public abstract class Entity
@@ -4932,7 +5186,7 @@ public abstract class Entity
this.stopRiding();
}

Expand All @@ -29823,7 +29823,7 @@ index ec8b47eebc30a73adb3195aa91fd5b82518cac2d..4b74c91b47318d048abc53952ebeae76
this.levelCallback.onRemove(reason);
this.onRemoval(reason);
// Paper start - Folia schedulers
@@ -4966,7 +5220,7 @@ public abstract class Entity
@@ -4970,7 +5224,7 @@ public abstract class Entity
public boolean shouldBeSaved() {
return (this.removalReason == null || this.removalReason.shouldSave())
&& !this.isPassenger()
Expand Down Expand Up @@ -35308,7 +35308,7 @@ index 64194984fa30038b5bd53140511faf2b5784ead5..c6825283ad1787fcf4bfb93b32ca8396

public int getLightSectionCount() {
diff --git a/net/minecraft/world/level/material/FlowingFluid.java b/net/minecraft/world/level/material/FlowingFluid.java
index ee960c0b1e7f510b77949db2a57a53357a00f62d..e93c900385994d391242def7d022d06e6ef23861 100644
index e825c5587b6a8f8545594aa0a65bf1bf84b8f5c7..80b444cb7c4df5605c9f7904739843dfef3ff16d 100644
--- a/net/minecraft/world/level/material/FlowingFluid.java
+++ b/net/minecraft/world/level/material/FlowingFluid.java
@@ -46,6 +46,48 @@ public abstract class FlowingFluid extends Fluid {
Expand Down Expand Up @@ -35360,7 +35360,7 @@ index ee960c0b1e7f510b77949db2a57a53357a00f62d..e93c900385994d391242def7d022d06e
@Override
protected void createFluidStateDefinition(final StateDefinition.Builder<Fluid, FluidState> builder) {
builder.add(FALLING);
@@ -211,72 +253,70 @@ public abstract class FlowingFluid extends Fluid {
@@ -215,72 +257,70 @@ public abstract class FlowingFluid extends Fluid {
return amount <= 0 ? Fluids.EMPTY.defaultFluidState() : this.getFlowing(amount, false);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,10 +66,10 @@ index 6de2929fda582cc4ceecd7bfe0b440ac6608669d..2381f8571f6e614dba1cfb62a1d396be
io.papermc.paper.adventure.providers.ClickCallbackProviderImpl.ADVENTURE_CLICK_MANAGER.handleQueue(this.tickCount); // Paper
io.papermc.paper.adventure.providers.ClickCallbackProviderImpl.DIALOG_CLICK_MANAGER.handleQueue(this.tickCount); // Paper
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index f8f479bd0ce2498c0cf4beab07d961247735e23c..d958c4717739e588c5f8985dec5d215c745f49fc 100644
index 9c4139f8739a88c8a62e907f8bc2297761b4bce7..22c71672e96f7121bd2bfd6c40163e8b1d809817 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -5237,6 +5237,11 @@ public abstract class Entity
@@ -5241,6 +5241,11 @@ public abstract class Entity
this.getBukkitEntity().taskScheduler.retire();
}
// Paper end - Folia schedulers
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -521,7 +521,7 @@
if (this.noPhysics) {
this.setPos(this.getX() + delta.x, this.getY() + delta.y, this.getZ() + delta.z);
this.horizontalCollision = false;
@@ -785,6 +_,27 @@
@@ -785,6 +_,31 @@
if (this.canSimulateMovement() && (movedVertically && this.verticalCollision || this.horizontalCollision)) {
this.restituteMovementAfterCollisions(effectState, xCollision, zCollision, movement);
}
Expand All @@ -541,8 +541,12 @@
+ }
+
+ if (!block.getType().isAir()) {
+ org.bukkit.event.vehicle.VehicleBlockCollisionEvent event = new org.bukkit.event.vehicle.VehicleBlockCollisionEvent(vehicle, block, org.bukkit.craftbukkit.util.CraftVector.toBukkit(originalMovement)); // Paper - Expose pre-collision velocity
+ event.callEvent();
+ // Paper start - Guard VehicleBlockCollisionEvent when no plugins listen
+ if (org.bukkit.event.vehicle.VehicleBlockCollisionEvent.getHandlerList().getRegisteredListeners().length != 0) {
+ org.bukkit.event.vehicle.VehicleBlockCollisionEvent event = new org.bukkit.event.vehicle.VehicleBlockCollisionEvent(vehicle, block, org.bukkit.craftbukkit.util.CraftVector.toBukkit(originalMovement)); // Paper - Expose pre-collision velocity
+ event.callEvent();
+ }
+ // Paper end - Guard VehicleBlockCollisionEvent when no plugins listen
+ }
+ }
+ // CraftBukkit end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
return true;
}

@@ -175,11 +_,30 @@
@@ -175,11 +_,38 @@

@Override
public void push(final Entity entity) {
Expand All @@ -34,39 +34,49 @@
if (entity.getBoundingBox().minY < this.getBoundingBox().maxY) {
+ // CraftBukkit start
+ if (!this.isPassengerOfSameVehicle(entity)) {
+ org.bukkit.event.vehicle.VehicleEntityCollisionEvent event = new org.bukkit.event.vehicle.VehicleEntityCollisionEvent(
+ (org.bukkit.entity.Vehicle) this.getBukkitEntity(),
+ entity.getBukkitEntity()
+ );
+ if (!event.callEvent()) return;
+ // Paper start - Guard VehicleEntityCollisionEvent when no plugins listen
+ if (org.bukkit.event.vehicle.VehicleEntityCollisionEvent.getHandlerList().getRegisteredListeners().length != 0) {
+ org.bukkit.event.vehicle.VehicleEntityCollisionEvent event = new org.bukkit.event.vehicle.VehicleEntityCollisionEvent(
+ (org.bukkit.entity.Vehicle) this.getBukkitEntity(),
+ entity.getBukkitEntity()
+ );
+ if (!event.callEvent()) return;
+ }
+ // Paper end - Guard VehicleEntityCollisionEvent when no plugins listen
+ }
+ // CraftBukkit end
super.push(entity);
}
} else if (entity.getBoundingBox().minY <= this.getBoundingBox().minY) {
+ // CraftBukkit start
+ if (!this.isPassengerOfSameVehicle(entity)) {
+ org.bukkit.event.vehicle.VehicleEntityCollisionEvent event = new org.bukkit.event.vehicle.VehicleEntityCollisionEvent(
+ (org.bukkit.entity.Vehicle) this.getBukkitEntity(),
+ entity.getBukkitEntity()
+ );
+ if (!event.callEvent()) return;
+ // Paper start - Guard VehicleEntityCollisionEvent when no plugins listen
+ if (org.bukkit.event.vehicle.VehicleEntityCollisionEvent.getHandlerList().getRegisteredListeners().length != 0) {
+ org.bukkit.event.vehicle.VehicleEntityCollisionEvent event = new org.bukkit.event.vehicle.VehicleEntityCollisionEvent(
+ (org.bukkit.entity.Vehicle) this.getBukkitEntity(),
+ entity.getBukkitEntity()
+ );
+ if (!event.callEvent()) return;
+ }
+ // Paper end - Guard VehicleEntityCollisionEvent when no plugins listen
+ }
+ // CraftBukkit end
super.push(entity);
}
}
@@ -246,6 +_,18 @@
@@ -246,6 +_,20 @@
this.setDeltaMovement(Vec3.ZERO);
}

+ // CraftBukkit start
+ org.bukkit.Location to = org.bukkit.craftbukkit.util.CraftLocation.toBukkit(this.position(), this.level(), this.getYRot(), this.getXRot());
+ org.bukkit.entity.Vehicle vehicle = (org.bukkit.entity.Vehicle) this.getBukkitEntity();
+
+ new org.bukkit.event.vehicle.VehicleUpdateEvent(vehicle).callEvent();
+ if (org.bukkit.event.vehicle.VehicleUpdateEvent.getHandlerList().getRegisteredListeners().length != 0) { // Paper - Guard VehicleUpdateEvent when no plugins listen
+ new org.bukkit.event.vehicle.VehicleUpdateEvent(vehicle).callEvent();
+ }
+
+ if (this.lastLocation != null && !this.lastLocation.equals(to)) {
+ if (this.lastLocation != null && !this.lastLocation.equals(to) && org.bukkit.event.vehicle.VehicleMoveEvent.getHandlerList().getRegisteredListeners().length != 0) { // Paper - Guard VehicleMoveEvent when no plugins listen
+ org.bukkit.event.vehicle.VehicleMoveEvent event = new org.bukkit.event.vehicle.VehicleMoveEvent(vehicle, this.lastLocation, to);
+ event.callEvent();
+ }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

protected AbstractMinecart(final EntityType<?> type, final Level level) {
super(type, level);
@@ -161,11 +_,19 @@
@@ -161,11 +_,21 @@

@Override
public boolean canCollideWith(final Entity entity) {
Expand All @@ -29,8 +29,10 @@
+ return false;
+ }
+
+ org.bukkit.event.vehicle.VehicleEntityCollisionEvent collisionEvent = new org.bukkit.event.vehicle.VehicleEntityCollisionEvent((org.bukkit.entity.Vehicle) this.getBukkitEntity(), entity.getBukkitEntity());
+ return collisionEvent.callEvent();
+ // Paper start - Guard VehicleEntityCollisionEvent when no plugins listen
+ return org.bukkit.event.vehicle.VehicleEntityCollisionEvent.getHandlerList().getRegisteredListeners().length == 0
+ || new org.bukkit.event.vehicle.VehicleEntityCollisionEvent((org.bukkit.entity.Vehicle) this.getBukkitEntity(), entity.getBukkitEntity()).callEvent();
+ // Paper end - Guard VehicleEntityCollisionEvent when no plugins listen
+ // Paper end - fix VehicleEntityCollisionEvent not called when colliding with player
}

Expand All @@ -55,7 +57,7 @@
if (this.getHurtTime() > 0) {
this.setHurtTime(this.getHurtTime() - 1);
}
@@ -280,8 +_,20 @@
@@ -280,8 +_,22 @@

this.checkBelowWorld();
this.computeSpeed();
Expand All @@ -68,9 +70,11 @@
+ org.bukkit.Location to = org.bukkit.craftbukkit.util.CraftLocation.toBukkit(this.position(), this.level(), this.getYRot(), this.getXRot());
+ org.bukkit.entity.Vehicle vehicle = (org.bukkit.entity.Vehicle) this.getBukkitEntity();
+
+ new org.bukkit.event.vehicle.VehicleUpdateEvent(vehicle).callEvent();
+ if (org.bukkit.event.vehicle.VehicleUpdateEvent.getHandlerList().getRegisteredListeners().length != 0) { // Paper - Guard VehicleUpdateEvent when no plugins listen
+ new org.bukkit.event.vehicle.VehicleUpdateEvent(vehicle).callEvent();
+ }
+
+ if (!from.equals(to)) {
+ if (!from.equals(to) && org.bukkit.event.vehicle.VehicleMoveEvent.getHandlerList().getRegisteredListeners().length != 0) { // Paper - Guard VehicleMoveEvent when no plugins listen
+ new org.bukkit.event.vehicle.VehicleMoveEvent(vehicle, from, to).callEvent();
+ }
+ // CraftBukkit end
Expand Down Expand Up @@ -112,7 +116,7 @@
}

@Override
@@ -495,13 +_,29 @@
@@ -495,13 +_,31 @@

output.putBoolean("FlippedRotation", this.flipped);
output.putBoolean("HasTicked", this.firstTick);
Expand All @@ -133,11 +137,13 @@
+ if (io.papermc.paper.event.entity.EntityCollideWithEntityEvent.getHandlerList().getRegisteredListeners().length != 0 &&
+ !new io.papermc.paper.event.entity.EntityCollideWithEntityEvent(this.getBukkitEntity(), entity.getBukkitEntity()).callEvent()) return;
+
+ org.bukkit.event.vehicle.VehicleEntityCollisionEvent collisionEvent = new org.bukkit.event.vehicle.VehicleEntityCollisionEvent(
+ (org.bukkit.entity.Vehicle) this.getBukkitEntity(),
+ entity.getBukkitEntity()
+ );
+ if (!collisionEvent.callEvent()) return;
+ if (org.bukkit.event.vehicle.VehicleEntityCollisionEvent.getHandlerList().getRegisteredListeners().length != 0) { // Paper - Guard VehicleEntityCollisionEvent when no plugins listen
+ org.bukkit.event.vehicle.VehicleEntityCollisionEvent collisionEvent = new org.bukkit.event.vehicle.VehicleEntityCollisionEvent(
+ (org.bukkit.entity.Vehicle) this.getBukkitEntity(),
+ entity.getBukkitEntity()
+ );
+ if (!collisionEvent.callEvent()) return;
+ }
+ // Paper end - Collision Events
double xa = entity.getX() - this.getX();
double za = entity.getZ() - this.getZ();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,49 +23,55 @@
}

@Override
@@ -523,6 +_,13 @@
@@ -523,6 +_,15 @@
&& !(entity instanceof AbstractMinecart)
&& !this.minecart.isVehicle()
&& !entity.isPassenger()) {
+ // CraftBukkit start
+ org.bukkit.event.vehicle.VehicleEntityCollisionEvent collisionEvent = new org.bukkit.event.vehicle.VehicleEntityCollisionEvent(
+ (org.bukkit.entity.Vehicle) this.minecart.getBukkitEntity(),
+ entity.getBukkitEntity()
+ );
+ if (!collisionEvent.callEvent()) continue;
+ if (org.bukkit.event.vehicle.VehicleEntityCollisionEvent.getHandlerList().getRegisteredListeners().length != 0) { // Paper - Guard VehicleEntityCollisionEvent when no plugins listen
+ org.bukkit.event.vehicle.VehicleEntityCollisionEvent collisionEvent = new org.bukkit.event.vehicle.VehicleEntityCollisionEvent(
+ (org.bukkit.entity.Vehicle) this.minecart.getBukkitEntity(),
+ entity.getBukkitEntity()
+ );
+ if (!collisionEvent.callEvent()) continue;
+ }
+ // CraftBukkit end
boolean pickedUp = entity.startRiding(this.minecart);
if (pickedUp) {
return true;
@@ -546,6 +_,17 @@
@@ -546,6 +_,19 @@
|| entity instanceof AbstractMinecart
|| this.minecart.isVehicle()
|| entity.isPassenger()) {
+ // CraftBukkit start
+ if (!this.minecart.isPassengerOfSameVehicle(entity)) {
+ org.bukkit.event.vehicle.VehicleEntityCollisionEvent collisionEvent = new org.bukkit.event.vehicle.VehicleEntityCollisionEvent(
+ (org.bukkit.entity.Vehicle) this.minecart.getBukkitEntity(),
+ entity.getBukkitEntity()
+ );
+ if (!collisionEvent.callEvent()) {
+ continue;
+ if (org.bukkit.event.vehicle.VehicleEntityCollisionEvent.getHandlerList().getRegisteredListeners().length != 0) { // Paper - Guard VehicleEntityCollisionEvent when no plugins listen
+ org.bukkit.event.vehicle.VehicleEntityCollisionEvent collisionEvent = new org.bukkit.event.vehicle.VehicleEntityCollisionEvent(
+ (org.bukkit.entity.Vehicle) this.minecart.getBukkitEntity(),
+ entity.getBukkitEntity()
+ );
+ if (!collisionEvent.callEvent()) {
+ continue;
+ }
+ }
+ }
+ // CraftBukkit end
entity.push(this.minecart);
pushed = true;
}
@@ -554,6 +_,15 @@
@@ -554,6 +_,17 @@
} else {
for (Entity entity : this.level().getEntities(this.minecart, hitbox)) {
if (!this.minecart.hasPassenger(entity) && entity.isPushable() && entity instanceof AbstractMinecart) {
+ // CraftBukkit start
+ org.bukkit.event.vehicle.VehicleEntityCollisionEvent collisionEvent = new org.bukkit.event.vehicle.VehicleEntityCollisionEvent(
+ (org.bukkit.entity.Vehicle) this.minecart.getBukkitEntity(),
+ entity.getBukkitEntity()
+ );
+ if (!collisionEvent.callEvent()) {
+ continue;
+ if (org.bukkit.event.vehicle.VehicleEntityCollisionEvent.getHandlerList().getRegisteredListeners().length != 0) { // Paper - Guard VehicleEntityCollisionEvent when no plugins listen
+ org.bukkit.event.vehicle.VehicleEntityCollisionEvent collisionEvent = new org.bukkit.event.vehicle.VehicleEntityCollisionEvent(
+ (org.bukkit.entity.Vehicle) this.minecart.getBukkitEntity(),
+ entity.getBukkitEntity()
+ );
+ if (!collisionEvent.callEvent()) {
+ continue;
+ }
+ }
+ // CraftBukkit end
entity.push(this.minecart);
Expand Down
Loading