geforkt von Mirrors/Paper
Check for missing EntityType for PreCreatureSpawnEvent - Resolves #973
Dieser Commit ist enthalten in:
Ursprung
093629c1f2
Commit
8e612cbc0a
@ -15,7 +15,7 @@ instead and save a lot of server resources.
|
|||||||
See: https://github.com/PaperMC/Paper/issues/917
|
See: https://github.com/PaperMC/Paper/issues/917
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/MobSpawnerAbstract.java b/src/main/java/net/minecraft/server/MobSpawnerAbstract.java
|
diff --git a/src/main/java/net/minecraft/server/MobSpawnerAbstract.java b/src/main/java/net/minecraft/server/MobSpawnerAbstract.java
|
||||||
index c29df55fa..d6c73a5a0 100644
|
index c29df55fa..3c591e67e 100644
|
||||||
--- a/src/main/java/net/minecraft/server/MobSpawnerAbstract.java
|
--- a/src/main/java/net/minecraft/server/MobSpawnerAbstract.java
|
||||||
+++ b/src/main/java/net/minecraft/server/MobSpawnerAbstract.java
|
+++ b/src/main/java/net/minecraft/server/MobSpawnerAbstract.java
|
||||||
@@ -0,0 +0,0 @@
|
@@ -0,0 +0,0 @@
|
||||||
@ -34,24 +34,30 @@ index c29df55fa..d6c73a5a0 100644
|
|||||||
+ if (this.getMobName() == null) {
|
+ if (this.getMobName() == null) {
|
||||||
+ return;
|
+ return;
|
||||||
+ }
|
+ }
|
||||||
+ com.destroystokyo.paper.event.entity.PreCreatureSpawnEvent event;
|
+ String key = this.getMobName().getKey();
|
||||||
+ event = new com.destroystokyo.paper.event.entity.PreCreatureSpawnEvent(
|
+ org.bukkit.entity.EntityType type = org.bukkit.entity.EntityType.fromName(key);
|
||||||
+ MCUtil.toLocation(world, d3, d4, d5),
|
+ if (type != null) {
|
||||||
+ org.bukkit.entity.EntityType.fromName(this.getMobName().getKey()),
|
+ com.destroystokyo.paper.event.entity.PreCreatureSpawnEvent event;
|
||||||
+ org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.SPAWNER
|
+ event = new com.destroystokyo.paper.event.entity.PreCreatureSpawnEvent(
|
||||||
+ );
|
+ MCUtil.toLocation(world, d3, d4, d5),
|
||||||
+ if (!event.callEvent()) {
|
+ type,
|
||||||
+ if (event.shouldAbortSpawn()) {
|
+ org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.SPAWNER
|
||||||
+ break;
|
+ );
|
||||||
|
+ if (!event.callEvent()) {
|
||||||
|
+ if (event.shouldAbortSpawn()) {
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ continue;
|
||||||
+ }
|
+ }
|
||||||
+ continue;
|
+ } else {
|
||||||
|
+ MinecraftServer.LOGGER.warn("Warning, could not find EntityType for " + key + " - Please report this to Paper at https://github.com/PaperMC/Paper/issues");
|
||||||
+ }
|
+ }
|
||||||
+ // Paper end
|
+ // Paper end
|
||||||
Entity entity = ChunkRegionLoader.a(nbttagcompound, world, d3, d4, d5, false);
|
Entity entity = ChunkRegionLoader.a(nbttagcompound, world, d3, d4, d5, false);
|
||||||
|
|
||||||
if (entity == null) {
|
if (entity == null) {
|
||||||
diff --git a/src/main/java/net/minecraft/server/SpawnerCreature.java b/src/main/java/net/minecraft/server/SpawnerCreature.java
|
diff --git a/src/main/java/net/minecraft/server/SpawnerCreature.java b/src/main/java/net/minecraft/server/SpawnerCreature.java
|
||||||
index 2cd063829..1137dda86 100644
|
index 2cd063829..f64de94fa 100644
|
||||||
--- a/src/main/java/net/minecraft/server/SpawnerCreature.java
|
--- a/src/main/java/net/minecraft/server/SpawnerCreature.java
|
||||||
+++ b/src/main/java/net/minecraft/server/SpawnerCreature.java
|
+++ b/src/main/java/net/minecraft/server/SpawnerCreature.java
|
||||||
@@ -0,0 +0,0 @@ public final class SpawnerCreature {
|
@@ -0,0 +0,0 @@ public final class SpawnerCreature {
|
||||||
@ -60,18 +66,23 @@ index 2cd063829..1137dda86 100644
|
|||||||
if (worldserver.a(enumcreaturetype, biomebase_biomemeta, (BlockPosition) blockposition_mutableblockposition) && a(EntityPositionTypes.a(biomebase_biomemeta.b), worldserver, blockposition_mutableblockposition)) {
|
if (worldserver.a(enumcreaturetype, biomebase_biomemeta, (BlockPosition) blockposition_mutableblockposition) && a(EntityPositionTypes.a(biomebase_biomemeta.b), worldserver, blockposition_mutableblockposition)) {
|
||||||
+ // Paper start
|
+ // Paper start
|
||||||
+ com.destroystokyo.paper.event.entity.PreCreatureSpawnEvent event;
|
+ com.destroystokyo.paper.event.entity.PreCreatureSpawnEvent event;
|
||||||
+ event = new com.destroystokyo.paper.event.entity.PreCreatureSpawnEvent(
|
+ Class<? extends EntityInsentient> cls = biomebase_biomemeta.b;
|
||||||
+ MCUtil.toLocation(worldserver, blockposition_mutableblockposition),
|
+ org.bukkit.entity.EntityType type = EntityTypes.clsToTypeMap.get(cls);
|
||||||
+ EntityTypes.clsToTypeMap.get(biomebase_biomemeta.b),
|
+ if (type != null) {
|
||||||
+ SpawnReason.NATURAL
|
+ event = new com.destroystokyo.paper.event.entity.PreCreatureSpawnEvent(
|
||||||
+ );
|
+ MCUtil.toLocation(worldserver, blockposition_mutableblockposition),
|
||||||
+ if (!event.callEvent()) {
|
+ type, SpawnReason.NATURAL
|
||||||
+ if (event.shouldAbortSpawn()) {
|
+ );
|
||||||
+ continue label120;
|
+ if (!event.callEvent()) {
|
||||||
|
+ if (event.shouldAbortSpawn()) {
|
||||||
|
+ continue label120;
|
||||||
|
+ }
|
||||||
|
+ j1 += l2;
|
||||||
|
+ ++j4;
|
||||||
|
+ continue;
|
||||||
+ }
|
+ }
|
||||||
+ j1 += l2;
|
+ } else {
|
||||||
+ ++j4;
|
+ MinecraftServer.LOGGER.warn("Warning, could not find EntityType for " + cls.getName() + " contains: " + (EntityTypes.clsToTypeMap.containsKey(cls) ? "yes" : "no") + " - Please report this to Paper at https://github.com/PaperMC/Paper/issues");
|
||||||
+ continue;
|
|
||||||
+ }
|
+ }
|
||||||
+ // Paper end
|
+ // Paper end
|
||||||
EntityInsentient entityinsentient;
|
EntityInsentient entityinsentient;
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren