geforkt von Mirrors/Paper
72e87abc2d
Co-authored-by: Paul Sauve <paul@technove.co>
62 Zeilen
3.5 KiB
Diff
62 Zeilen
3.5 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
|
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 e3501ff996487bc1020470a5bf7c892dbfcdaacd..bf2cd1eb04c10b8422ddca8efd397290bf58ea4d 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java
|
|
@@ -603,6 +603,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
|
|
@@ -658,6 +663,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)) {
|
|
@@ -959,8 +972,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());
|