Hey there, just wanted to drop this message here because I saw you undid my revision to the ghasts bugs. I have extensively tested this on my own server. We have no customized mob spawners or anything of the sort, and yet ghasts were spawning in our overworld. We had: a bridge in a large underground area with a netherbrick fence, a dome with a netherbrick floor and netherrack on fire surrounding it, and a building made completely out of netherbrick in an underground area. Ghasts spawned in all three of these locations until we disabled mob spawning. I encourage you to look into this if you think it's false. I can't think of any reason it would be server-specific. 208.110.178.1 20:14, 30 December 2011 (UTC)
- I'll need to see into that. I have some structures made of netherrack, but none underground. --mgr 11:09, 3 January 2012 (UTC)
Thanks
Thanks for helping with the spamming Mgr. Doggey 13:34, 16 January 2012 (UTC)
- :) --mgr 13:43, 16 January 2012 (UTC)
Blaze spawning
You recently updated the light level for spawning Blazes, and I'm wondering what your source is for that. In the code, Blazes have isValidLightLevel() set to always return true, which suggests that they can spawn at any light level. -- Orthotope 08:33, 10 March 2012 (UTC)
- I've build a test-case around Blaze spawner (viewed from a side):
- The fact that Blazes will spawn only above Netherrack indicates, that they require light level of 11 or less (torches have light level 14).
- What about the code?
- Bazes don't spawn in light level 12+ not because of
isValidLightLevel(), but because ofgetBlockPathWeight():
EntityCreature.java:
boolean getCanSpawnHere() {
int i = MathHelper.floor_double(posX);
int j = MathHelper.floor_double(boundingBox.minY);
int k = MathHelper.floor_double(posZ);
return super.getCanSpawnHere() && getBlockPathWeight(i, j, k) >= 0.0F;
}
EntityMob.java
float getBlockPathWeight(int par1, int par2, int par3) {
return 0.5F - worldObj.getLightBrightness(par1, par2, par3);
}
World.java
float getLightBrightness(int par1, int par2, int par3) {
return worldProvider.lightBrightnessTable[getBlockLightValue(par1, par2, par3)];
}
lightBrightnessTableis calculated ingenerateLightBrightnessTable()and it is different forWorldProviderandWorldProviderHell:
| lightValue | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| WorldProvider.lightBrightnessTable | 0.00 | 0.02 | 0.04 | 0.06 | 0.08 | 0.11 | 0.14 | 0.18 | 0.22 | 0.27 | 0.33 | 0.41 | 0.50 | 0.62 | 0.78 | 1.00 |
| WorldProviderHell.lightBrightnessTable | 0.10 | 0.12 | 0.13 | 0.15 | 0.18 | 0.20 | 0.23 | 0.26 | 0.30 | 0.35 | 0.40 | 0.47 | 0.55 | 0.66 | 0.80 | 1.00 |