Skip to content

Commit 5001879

Browse files
Assign BlockProjectileSource before dispenser projectiles spawn (#14201)
1 parent a3b2cb1 commit 5001879

1 file changed

Lines changed: 4 additions & 2 deletions

File tree

‎paper-server/patches/sources/net/minecraft/core/dispenser/ProjectileDispenseBehavior.java.patch‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
--- a/net/minecraft/core/dispenser/ProjectileDispenseBehavior.java
22
+++ b/net/minecraft/core/dispenser/ProjectileDispenseBehavior.java
3-
@@ -27,17 +_,36 @@
3+
@@ -27,17 +_,38 @@
44
ServerLevel level = source.level();
55
Direction direction = source.state().getValue(DispenserBlock.FACING);
66
Position position = this.dispenseConfig.positionFunction().getDispensePosition(source, direction);
@@ -40,8 +40,10 @@
4040
+
4141
+ // SPIGOT-7923: Avoid create projectiles with empty item
4242
+ if (!singleItemStack.isEmpty()) {
43-
+ Projectile projectile = Projectile.spawnProjectileUsingShoot(this.projectileItem.asProjectile(level, position, org.bukkit.craftbukkit.inventory.CraftItemStack.unwrap(event.getItem()), direction), level, singleItemStack, event.getVelocity().getX(), event.getVelocity().getY(), event.getVelocity().getZ(), this.dispenseConfig.power(), this.dispenseConfig.uncertainty()); // Paper - track changed items in the dispense event; unwrap is safe here because all uses of the stack make their own copies
43+
+ Projectile projectile = this.projectileItem.asProjectile(level, position, org.bukkit.craftbukkit.inventory.CraftItemStack.unwrap(event.getItem()), direction); // Paper - track changed items in the dispense event; unwrap is safe here because all uses of the stack make their own copies
44+
+ Projectile.Delayed<Projectile> delayedProjectile = Projectile.spawnProjectileUsingShootDelayed(projectile, level, singleItemStack, event.getVelocity().getX(), event.getVelocity().getY(), event.getVelocity().getZ(), this.dispenseConfig.power(), this.dispenseConfig.uncertainty());
4445
+ projectile.projectileSource = new org.bukkit.craftbukkit.projectiles.CraftBlockProjectileSource(source.blockEntity());
46+
+ delayedProjectile.spawn();
4547
+ }
4648
+ if (shrink) dispensed.shrink(1);
4749
+ // CraftBukkit end

0 commit comments

Comments
 (0)