diff --git a/patches/server/1052-Hotfix-DefaultDispenseItemBehavior-spawnItem.patch b/patches/server/1052-Hotfix-DefaultDispenseItemBehavior-spawnItem.patch new file mode 100644 index 0000000000..ee842ebff4 --- /dev/null +++ b/patches/server/1052-Hotfix-DefaultDispenseItemBehavior-spawnItem.patch @@ -0,0 +1,39 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Owen1212055 <23108066+Owen1212055@users.noreply.github.com> +Date: Wed, 6 Dec 2023 19:44:06 -0500 +Subject: [PATCH] Hotfix DefaultDispenseItemBehavior#spawnItem + +This method should generally be cleaned up entirely, but, lol. + +For now just readd the original vanilla method. + +diff --git a/src/main/java/net/minecraft/core/dispenser/DefaultDispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/DefaultDispenseItemBehavior.java +index 379890ae05b2fb4bd81b2fa907413d3736ba1169..a553e8d4544567bcd0bcb354a35036b1f7954e6d 100644 +--- a/src/main/java/net/minecraft/core/dispenser/DefaultDispenseItemBehavior.java ++++ b/src/main/java/net/minecraft/core/dispenser/DefaultDispenseItemBehavior.java +@@ -49,6 +49,25 @@ public class DefaultDispenseItemBehavior implements DispenseItemBehavior { + return stack; + } + ++ // Paper start - Readd original NMS method ++ public static void spawnItem(Level world, ItemStack itemstack, int i, Direction enumdirection, Position iposition) { ++ double d0 = iposition.x(); ++ double d1 = iposition.y(); ++ double d2 = iposition.z(); ++ ++ if (enumdirection.getAxis() == Direction.Axis.Y) { ++ d1 -= 0.125D; ++ } else { ++ d1 -= 0.15625D; ++ } ++ ++ ItemEntity entityitem = new ItemEntity(world, d0, d1, d2, itemstack); ++ double d3 = world.random.nextDouble() * 0.1D + 0.2D; ++ ++ entityitem.setDeltaMovement(world.random.triangle((double) enumdirection.getStepX() * d3, 0.0172275D * (double) i), world.random.triangle(0.2D, 0.0172275D * (double) i), world.random.triangle((double) enumdirection.getStepZ() * d3, 0.0172275D * (double) i)); ++ world.addFreshEntity(entityitem); ++ } ++ // Paper end + // CraftBukkit start - void -> boolean return, IPosition -> ISourceBlock last argument, dropper + public static boolean spawnItem(Level world, ItemStack itemstack, int i, Direction enumdirection, BlockSource sourceblock, boolean dropper) { + if (itemstack.isEmpty()) return true;