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