Path: blob/1.20.x/patches/minecraft/net/minecraft/world/level/BaseSpawner.java.patch
19118 views
--- a/net/minecraft/world/level/BaseSpawner.java1+++ b/net/minecraft/world/level/BaseSpawner.java2@@ -149,13 +_,15 @@34entity.moveTo(entity.getX(), entity.getY(), entity.getZ(), randomsource.nextFloat() * 360.0F, 0.0F);5if (entity instanceof Mob mob) {6- if (spawndata.getCustomSpawnRules().isEmpty() && !mob.checkSpawnRules(p_151312_, MobSpawnType.SPAWNER) || !mob.checkSpawnObstruction(p_151312_)) {7+ if (!net.minecraftforge.event.ForgeEventFactory.checkSpawnPositionSpawner(mob, p_151312_, MobSpawnType.SPAWNER, spawndata, this)) {8continue;9}1011boolean flag1 = spawndata.getEntityToSpawn().size() == 1 && spawndata.getEntityToSpawn().contains("id", 8);12- if (flag1) {13- ((Mob)entity).finalizeSpawn(p_151312_, p_151312_.getCurrentDifficultyAt(entity.blockPosition()), MobSpawnType.SPAWNER, null);14+ // Forge: Patch in FinalizeSpawn for spawners so it may be fired unconditionally, instead of only when vanilla normally would trigger it.15+ var event = net.minecraftforge.event.ForgeEventFactory.onFinalizeSpawnSpawner(mob, p_151312_, p_151312_.getCurrentDifficultyAt(entity.blockPosition()), null, compoundtag, this);16+ if (!event.isCanceled() && flag1) {17+ ((Mob)entity).finalizeSpawn(p_151312_, event.getDifficulty(), MobSpawnType.SPAWNER, null);18}1920spawndata.getEquipment().ifPresent(mob::equip);21@@ -305,5 +_,15 @@2223public double getoSpin() {24return this.oSpin;25+ }26+27+ @Nullable28+ public Entity getSpawnerEntity() {29+ return null;30+ }31+32+ @Nullable33+ public net.minecraft.world.level.block.entity.BlockEntity getSpawnerBlockEntity() {34+ return null;35}36}373839