Fix error when using non living entity on monster egg

This commit is contained in:
BillyGalbreath
2021-04-15 09:22:40 -05:00
parent 76c35fca99
commit 04f73c5831
4 changed files with 10 additions and 10 deletions

View File

@@ -6,14 +6,14 @@ Subject: [PATCH] EMC - MonsterEggSpawnEvent
diff --git a/src/main/java/net/pl3x/purpur/event/entity/MonsterEggSpawnEvent.java b/src/main/java/net/pl3x/purpur/event/entity/MonsterEggSpawnEvent.java
new file mode 100644
index 0000000000000000000000000000000000000000..983d67234b15c83c3785d9fbc191da70cf67ccab
index 0000000000000000000000000000000000000000..8f1c9c421aeeb0ddf331f076a9b646c510ea4337
--- /dev/null
+++ b/src/main/java/net/pl3x/purpur/event/entity/MonsterEggSpawnEvent.java
@@ -0,0 +1,67 @@
+package net.pl3x.purpur.event.entity;
+
+import org.bukkit.entity.Entity;
+import org.bukkit.entity.HumanEntity;
+import org.bukkit.entity.LivingEntity;
+import org.bukkit.entity.Player;
+import org.bukkit.event.Cancellable;
+import org.bukkit.event.Event;
@@ -27,10 +27,10 @@ index 0000000000000000000000000000000000000000..983d67234b15c83c3785d9fbc191da70
+ private boolean canceled;
+
+ private final Player player;
+ private LivingEntity entity;
+ private Entity entity;
+ private final ItemStack item;
+
+ public MonsterEggSpawnEvent(@Nullable HumanEntity player, @NotNull LivingEntity entity, @NotNull ItemStack item) {
+ public MonsterEggSpawnEvent(@Nullable HumanEntity player, @NotNull Entity entity, @NotNull ItemStack item) {
+ this.player = (Player) player;
+ this.entity = entity;
+ this.item = item;
@@ -42,11 +42,11 @@ index 0000000000000000000000000000000000000000..983d67234b15c83c3785d9fbc191da70
+ }
+
+ @NotNull
+ public LivingEntity getEntity() {
+ public Entity getEntity() {
+ return entity;
+ }
+
+ public void setEntity(@Nullable LivingEntity entity) {
+ public void setEntity(@Nullable Entity entity) {
+ if (entity == null) {
+ canceled = true;
+ return;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] EMC - MonsterEggSpawnEvent
diff --git a/src/main/java/net/minecraft/world/entity/EntityTypes.java b/src/main/java/net/minecraft/world/entity/EntityTypes.java
index e858e41e046665016327f0ef3f19cf5db765fe3b..acf4cbfd9780f186880c595c8fac8d91b8f56e68 100644
index e858e41e046665016327f0ef3f19cf5db765fe3b..a2ceb426026a8bf632643232f5f9f7d33f04079b 100644
--- a/src/main/java/net/minecraft/world/entity/EntityTypes.java
+++ b/src/main/java/net/minecraft/world/entity/EntityTypes.java
@@ -320,13 +320,20 @@ public class EntityTypes<T extends Entity> {
@@ -47,7 +47,7 @@ index e858e41e046665016327f0ef3f19cf5db765fe3b..acf4cbfd9780f186880c595c8fac8d91
+ // Purpur start
+ if (spawnReason == org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.SPAWNER_EGG && itemstack != null && t0 != null) {
+ final net.pl3x.purpur.event.entity.MonsterEggSpawnEvent event = new net.pl3x.purpur.event.entity.MonsterEggSpawnEvent(entityhuman != null ? entityhuman.getBukkitEntity() : null, (org.bukkit.entity.LivingEntity) t0.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack));
+ final net.pl3x.purpur.event.entity.MonsterEggSpawnEvent event = new net.pl3x.purpur.event.entity.MonsterEggSpawnEvent(entityhuman != null ? entityhuman.getBukkitEntity() : null, t0.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack));
+ if (!event.callEvent()) {
+ worldserver.removeEntity(t0);
+ return null;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Short enderman height
diff --git a/src/main/java/net/minecraft/world/entity/EntityTypes.java b/src/main/java/net/minecraft/world/entity/EntityTypes.java
index acf4cbfd9780f186880c595c8fac8d91b8f56e68..cc963bbc0fa909b3121a25786b511b31ee4b9561 100644
index a2ceb426026a8bf632643232f5f9f7d33f04079b..e1ef642f06078202fb782ac16b268e6429c5e202 100644
--- a/src/main/java/net/minecraft/world/entity/EntityTypes.java
+++ b/src/main/java/net/minecraft/world/entity/EntityTypes.java
@@ -268,7 +268,8 @@ public class EntityTypes<T extends Entity> {

View File

@@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
diff --git a/src/main/java/net/minecraft/world/entity/EntityTypes.java b/src/main/java/net/minecraft/world/entity/EntityTypes.java
index cc963bbc0fa909b3121a25786b511b31ee4b9561..6569f3d07e89383ff3ebed9c2ff5615b81ddd2f5 100644
index e1ef642f06078202fb782ac16b268e6429c5e202..778c981d4458957533fc3ac44095051b279c74e3 100644
--- a/src/main/java/net/minecraft/world/entity/EntityTypes.java
+++ b/src/main/java/net/minecraft/world/entity/EntityTypes.java
@@ -534,6 +534,7 @@ public class EntityTypes<T extends Entity> {