Between 1.14 and 1.16, Ghasts were changed internally from being a "Mob" to being a "Monster". By default, monsters only spawn when the light level is low. (This is hardcoded in the game and cannot be changed by json-based spawning rules).
Expected Behavior: Ghasts spawn at all light levels.
Actual Behavior: Ghasts only spawn if the light level is below 8.
Consequence: Portal-based ghast farms no longer work because portals emit light.
Demo world: Press a button to switch from a netherwart block floor to a shroomlight floor.
How to fix: Add a Ghast::isDarkEnoughToSpawn() function that always returns true. Example code below. This wasn't needed before when Ghasts were Mobs, but now is needed because they are Monsters.
virtual bool Ghast::isDarkEnoughToSpawn() const override {
return true;
}
Linked issues
is duplicated by 2
Attachments
Comments 3
The Mob -> Monster change that I'm referring to happened at the C++ level. In 1.14, the Ghast class was derived from the Mob class. In 1.16, it is derived from the Monster class.
I agree that this bug is likely related to fixing Ghasts not despawning on Peaceful.
This issue may stem from the fix to MCPE-53383. It does not just break certain farms. It also prevents ghasts from spawning over lava oceans.
Strangely, the following is in the ghast.json for both 1.14 and 1.16:
"minecraft:type_family": {
"family": [ "ghast", "monster", "mob" ]
},