diff options
Diffstat (limited to 'patches/server/0981-Respect-randomizeData-on-more-entities-when-spawning.patch')
-rw-r--r-- | patches/server/0981-Respect-randomizeData-on-more-entities-when-spawning.patch | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/patches/server/0981-Respect-randomizeData-on-more-entities-when-spawning.patch b/patches/server/0981-Respect-randomizeData-on-more-entities-when-spawning.patch new file mode 100644 index 0000000000..dd08dc14b0 --- /dev/null +++ b/patches/server/0981-Respect-randomizeData-on-more-entities-when-spawning.patch @@ -0,0 +1,61 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jake Potrebic <[email protected]> +Date: Thu, 13 Jul 2023 16:10:07 -0700 +Subject: [PATCH] Respect randomizeData on more entities when spawning + +* ItemEntity +* PrimedTNT +* FireworkRocketEntity +* ExperienceOrb + +diff --git a/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java b/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java +index 7673e6c8a16455366d46a64df00c97663089c2ce..1a17875426468b287c8ea3f559ea516d0218f7a0 100644 +--- a/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java ++++ b/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java +@@ -604,6 +604,11 @@ public abstract class CraftRegionAccessor implements RegionAccessor { + } else if (org.bukkit.entity.Item.class.isAssignableFrom(clazz)) { + entity = new net.minecraft.world.entity.item.ItemEntity(world, x, y, z, new net.minecraft.world.item.ItemStack(net.minecraft.world.item.Items.DIRT)); + // Paper end ++ // Paper start - respect randomizeData ++ if (!randomizeData) { ++ entity.setDeltaMovement(net.minecraft.world.phys.Vec3.ZERO); ++ } ++ // Paper end - respect randomizeData + } else if (FallingBlock.class.isAssignableFrom(clazz)) { + BlockPos pos = BlockPos.containing(x, y, z); + entity = new FallingBlockEntity(world, x, y, z, this.getHandle().getBlockState(pos)); // Paper +@@ -659,6 +664,14 @@ public abstract class CraftRegionAccessor implements RegionAccessor { + entity.moveTo(x, y, z, yaw, pitch); + } else if (Firework.class.isAssignableFrom(clazz)) { + entity = new FireworkRocketEntity(world, x, y, z, net.minecraft.world.item.ItemStack.EMPTY); ++ // Paper start - respect randomizeData ++ if (!randomizeData) { ++ // logic below was taken from FireworkRocketEntity constructor ++ entity.setDeltaMovement(0, 0.05, 0); ++ //noinspection PointlessArithmeticExpression ++ ((FireworkRocketEntity) entity).lifetime = 10 * 1 + 6; ++ } ++ // Paper end - respect randomizeData + } + } else if (Minecart.class.isAssignableFrom(clazz)) { + if (PoweredMinecart.class.isAssignableFrom(clazz)) { +@@ -960,8 +973,19 @@ public abstract class CraftRegionAccessor implements RegionAccessor { + } + } else if (TNTPrimed.class.isAssignableFrom(clazz)) { + entity = new PrimedTnt(world, x, y, z, null); ++ // Paper start - respect randomizeData ++ if (!randomizeData) { ++ entity.setDeltaMovement(net.minecraft.world.phys.Vec3.ZERO); ++ } ++ // Paper end - respect randomizeData + } else if (ExperienceOrb.class.isAssignableFrom(clazz)) { + entity = new net.minecraft.world.entity.ExperienceOrb(world, x, y, z, 0, org.bukkit.entity.ExperienceOrb.SpawnReason.CUSTOM, null, null); // Paper ++ // Paper start - respect randomizeData ++ if (!randomizeData) { ++ entity.setDeltaMovement(net.minecraft.world.phys.Vec3.ZERO); ++ entity.setYRot(0); ++ } ++ // Paper end - respect randomizeData + } else if (LightningStrike.class.isAssignableFrom(clazz)) { + entity = net.minecraft.world.entity.EntityType.LIGHTNING_BOLT.create(world); + entity.moveTo(location.getX(), location.getY(), location.getZ()); |