aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0146-Entity-fromMobSpawner.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/server/0146-Entity-fromMobSpawner.patch')
-rw-r--r--patches/server/0146-Entity-fromMobSpawner.patch65
1 files changed, 65 insertions, 0 deletions
diff --git a/patches/server/0146-Entity-fromMobSpawner.patch b/patches/server/0146-Entity-fromMobSpawner.patch
new file mode 100644
index 0000000000..566620c80b
--- /dev/null
+++ b/patches/server/0146-Entity-fromMobSpawner.patch
@@ -0,0 +1,65 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: BillyGalbreath <[email protected]>
+Date: Sun, 18 Jun 2017 18:17:05 -0500
+Subject: [PATCH] Entity#fromMobSpawner()
+
+
+diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
+index 6e1b53317c4107f907e551a9baeaf64909f6de87..65a22c154807c416a63fbf68dad72175b51a52d4 100644
+--- a/src/main/java/net/minecraft/world/entity/Entity.java
++++ b/src/main/java/net/minecraft/world/entity/Entity.java
+@@ -380,6 +380,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+ // Spigot end
+ // Paper start
+ protected int numCollisions = 0; // Paper
++ public boolean spawnedViaMobSpawner; // Paper - Yes this name is similar to above, upstream took the better one
+ @javax.annotation.Nullable
+ private org.bukkit.util.Vector origin;
+ @javax.annotation.Nullable
+@@ -2020,6 +2021,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+ }
+ nbt.put("Paper.Origin", this.newDoubleList(origin.getX(), origin.getY(), origin.getZ()));
+ }
++ // Save entity's from mob spawner status
++ if (spawnedViaMobSpawner) {
++ nbt.putBoolean("Paper.FromMobSpawner", true);
++ }
+ // Paper end
+ return nbt;
+ } catch (Throwable throwable) {
+@@ -2159,6 +2164,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
+ this.originWorld = originWorld;
+ origin = new org.bukkit.util.Vector(originTag.getDouble(0), originTag.getDouble(1), originTag.getDouble(2));
+ }
++
++ spawnedViaMobSpawner = nbt.getBoolean("Paper.FromMobSpawner"); // Restore entity's from mob spawner status
+ // Paper end
+
+ } catch (Throwable throwable) {
+diff --git a/src/main/java/net/minecraft/world/level/BaseSpawner.java b/src/main/java/net/minecraft/world/level/BaseSpawner.java
+index e5b56a85d76d1417dda2d14b1b03850bbb070f4c..5304b0455b070006922e1b5471e9c0ababc58aa2 100644
+--- a/src/main/java/net/minecraft/world/level/BaseSpawner.java
++++ b/src/main/java/net/minecraft/world/level/BaseSpawner.java
+@@ -159,6 +159,7 @@ public abstract class BaseSpawner {
+ }
+ // Spigot End
+ }
++ entity.spawnedViaMobSpawner = true; // Paper
+ // Spigot Start
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callSpawnerSpawnEvent(entity, pos).isCancelled()) {
+ Entity vehicle = entity.getVehicle();
+diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+index b9599f4f431098d63be98b5175890371103f8813..d3a8c68f5186f69432fb8af8b34b174b04368fc1 100644
+--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+@@ -1260,5 +1260,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
+ //noinspection ConstantConditions
+ return originVector.toLocation(world);
+ }
++
++ @Override
++ public boolean fromMobSpawner() {
++ return getHandle().spawnedViaMobSpawner;
++ }
+ // Paper end
+ }