aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--patches/server/1052-Hotfix-DefaultDispenseItemBehavior-spawnItem.patch39
1 files changed, 39 insertions, 0 deletions
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 <[email protected]>
+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;