2022-06-08 02:00:00 +10:00
--- a/net/minecraft/util/SpawnUtil.java
+++ b/net/minecraft/util/SpawnUtil.java
2024-10-23 02:15:00 +11:00
@@ -21,6 +21,12 @@
2022-06-08 02:00:00 +10:00
public SpawnUtil() {}
2024-12-04 03:20:00 +11:00
public static <T extends EntityInsentient> Optional<T> trySpawnMob(EntityTypes<T> entitytypes, EntitySpawnReason entityspawnreason, WorldServer worldserver, BlockPosition blockposition, int i, int j, int k, SpawnUtil.a spawnutil_a, boolean flag) {
2022-06-08 02:00:00 +10:00
+ // CraftBukkit start
2024-12-04 03:20:00 +11:00
+ return trySpawnMob(entitytypes, entityspawnreason, worldserver, blockposition, i, j, k, spawnutil_a, flag, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.DEFAULT);
2022-06-08 02:00:00 +10:00
+ }
+
2024-12-04 03:20:00 +11:00
+ public static <T extends EntityInsentient> Optional<T> trySpawnMob(EntityTypes<T> entitytypes, EntitySpawnReason entityspawnreason, WorldServer worldserver, BlockPosition blockposition, int i, int j, int k, SpawnUtil.a spawnutil_a, boolean flag, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason reason) {
2022-06-08 02:00:00 +10:00
+ // CraftBukkit end
BlockPosition.MutableBlockPosition blockposition_mutableblockposition = blockposition.mutable();
for (int l = 0; l < i; ++l) {
2024-12-04 03:20:00 +11:00
@@ -29,16 +35,17 @@
2022-06-08 02:00:00 +10:00
blockposition_mutableblockposition.setWithOffset(blockposition, i1, k, j1);
2024-12-04 03:20:00 +11:00
if (worldserver.getWorldBorder().isWithinBounds((BlockPosition) blockposition_mutableblockposition) && moveToPossibleSpawnPosition(worldserver, k, blockposition_mutableblockposition, spawnutil_a) && (!flag || worldserver.noCollision(entitytypes.getSpawnAABB((double) blockposition_mutableblockposition.getX() + 0.5D, (double) blockposition_mutableblockposition.getY(), (double) blockposition_mutableblockposition.getZ() + 0.5D)))) {
2024-10-23 02:15:00 +11:00
- T t0 = (EntityInsentient) entitytypes.create(worldserver, (Consumer) null, blockposition_mutableblockposition, entityspawnreason, false, false);
+ T t0 = entitytypes.create(worldserver, (Consumer<T>) null, blockposition_mutableblockposition, entityspawnreason, false, false); // CraftBukkit - decompile error
2022-06-08 02:00:00 +10:00
if (t0 != null) {
2024-10-23 02:15:00 +11:00
if (t0.checkSpawnRules(worldserver, entityspawnreason) && t0.checkSpawnObstruction(worldserver)) {
2022-06-08 02:00:00 +10:00
- worldserver.addFreshEntityWithPassengers(t0);
+ worldserver.addFreshEntityWithPassengers(t0, reason); // CraftBukkit
2024-12-04 03:20:00 +11:00
+ if (t0.isRemoved()) return Optional.empty(); // CraftBukkit
t0.playAmbientSound();
2022-06-08 02:00:00 +10:00
return Optional.of(t0);
}
2024-02-21 20:55:34 +11:00
- t0.discard();
+ t0.discard(null); // CraftBukkit - add Bukkit remove cause
}
}
}