Mushroom Cows do not path to mycelium, but grass. Causes unintended spawning requirements
Mooshroom pathfinding favours grass rather than mycelium.
Causes:
Caused by harcoded use of GRASS block instead of instance attribute, spawnableBlock (MCP for 1.9.4):
In entity/passive/EntityAnimal: #20 (EntityAnimal class):
protected Block spawnableBlock = Blocks.GRASS;
In entity/passive/EntityAnimal: #82 (EntityAnimal class):
public float getBlockPathWeight(BlockPos pos) { return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F; }
since MushroomCows redefine their spawnableBlock to mycelium:
In entity/passive/EntityMooshroom: #23 (EntityMooshroom class):
this.spawnableBlock = Blocks.MYCELIUM;
this have no effect on their pathing behaviour as the perferred block is hardcoded to GRASS.
Solution:
Replace
In entity/passive/EntityAnimal: #84 (EntityAnimal class):
return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F;
replace to:
return this.worldObj.getBlockState(pos.down()).getBlock() == this.spawnableBlock ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F;
Sideeffects of the current state:
Passive mobs are intended to spawn in light levels of 9 or above, as signified by this expression:
In entity/passive/EntityAnimal: #122 (EntityAnimal class):
return this.worldObj.getBlockState(blockpos.down()).getBlock() == this.spawnableBlock && this.worldObj.getLight(blockpos) > 8 && super.getCanSpawnHere();
However since mooshrooms will path through grass, the following code takes an effect while spawning on mycelium:
In entity/passive/EntityCreature: #40 (EntityCreature class):
return super.getCanSpawnHere() && this.getBlockPathWeight(new BlockPos(this.posX, this.getEntityBoundingBox().minY, this.posZ)) >= 0.0F;
and:
In entity/passive/EntityAnimal: #82 (EntityAnimal class):
public float getBlockPathWeight(BlockPos pos) { return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F; }
So instead of light level > 8, what it needs is brightness > 0.5F, which is achieved with light level > 11, which stays in contrary to the statement in EntityAnimal#122
Video with explanation:
https://www.youtube.com/watch?v=sm43geXAgys
Please and Thank you.
Environment
PC, Windows
Created Issue:
Mushroom Cows do not path to mycelium, but grass. Causes unintended spawning requirements
Mushroom pathfinding favours grass rather than mycelium.
Caused by harcoded use of GRASS block instead of instance attribute, spawnableBlock (MCP for 1.9.4):
{ return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F; }
In entity/passive/EntityAnimal: #20 (EntityAnimal class):
protected Block spawnableBlock = Blocks.GRASS;
In entity/passive/EntityAnimal: #82 (EntityAnimal class):
public float getBlockPathWeight(BlockPos pos)since MushroomCows redefine their spawnableBlock to mycelium:
In entity/passive/EntityMooshroom: #23 (EntityMooshroom class):
this.spawnableBlock = Blocks.MYCELIUM;this have no effect on their pathing behaviour as the perferred block is hardcoded to GRASS.
Solution: replace
In entity/passive/EntityAnimal: #84 (EntityAnimal class):return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F;
replaceto:
return this.worldObj.getBlockState(pos.down()).getBlock() == this.spawnableBlock ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F;
replaceSideeffects of the current state:
Passive mobs are intended to spawn in light levels of 9 or above, as signified by this expression:In entity/passive/EntityAnimal: #122 (EntityAnimal class):
return this.worldObj.getBlockState(blockpos.down()).getBlock() == this.spawnableBlock && this.worldObj.getLight(blockpos) > 8 && super.getCanSpawnHere();However since mooshrooms will path through grass, the following code takes an effect while spawning on mycelium:
In entity/passive/EntityCreature: #40 (EntityCreature class):
return super.getCanSpawnHere() && this.getBlockPathWeight(new BlockPos(this.posX, this.getEntityBoundingBox().minY, this.posZ)) >= 0.0F;and:
In entity/passive/EntityAnimal: #82 (EntityAnimal class):public float getBlockPathWeight(BlockPos pos)
{ return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F; }So instead of light level > 8, what it needs is brightness > 0.5F, which is achieved with light level > 10, which stays in contrary to the statement in EntityAnimal#122
Please and Thank you.
Environment
PC, Windows
Mushroom pathfinding favours grass rather than mycelium.
Caused by harcoded use of GRASS block instead of instance attribute, spawnableBlock (MCP for 1.9.4):
{ return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F; }In entity/passive/EntityAnimal: #20 (EntityAnimal class):
protected Block spawnableBlock = Blocks.GRASS;
In entity/passive/EntityAnimal: #82 (EntityAnimal class):
public float getBlockPathWeight(BlockPos pos)since MushroomCows redefine their spawnableBlock to mycelium:
In entity/passive/EntityMooshroom: #23 (EntityMooshroom class):
this.spawnableBlock = Blocks.MYCELIUM;this have no effect on their pathing behaviour as the perferred block is hardcoded to GRASS.
Solution: replace
In entity/passive/EntityAnimal: #84 (EntityAnimal class):return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F;
replaceto:
return this.worldObj.getBlockState(pos.down()).getBlock() == this.spawnableBlock ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F;
replaceSideeffects of the current state:
Passive mobs are intended to spawn in light levels of 9 or above, as signified by this expression:In entity/passive/EntityAnimal: #122 (EntityAnimal class):
return this.worldObj.getBlockState(blockpos.down()).getBlock() == this.spawnableBlock && this.worldObj.getLight(blockpos) > 8 && super.getCanSpawnHere();However since mooshrooms will path through grass, the following code takes an effect while spawning on mycelium:
In entity/passive/EntityCreature: #40 (EntityCreature class):
return super.getCanSpawnHere() && this.getBlockPathWeight(new BlockPos(this.posX, this.getEntityBoundingBox().minY, this.posZ)) >= 0.0F;and:
In entity/passive/EntityAnimal: #82 (EntityAnimal class):public float getBlockPathWeight(BlockPos pos)
{ return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F; }So instead of light level > 8, what it needs is brightness > 0.5F, which is achieved with light level > 10, which stays in contrary to the statement in EntityAnimal#122
Please and Thank you.
Mushroom pathfinding favours grass rather than mycelium.
Caused by harcoded use of GRASS block instead of instance attribute, spawnableBlock (MCP for 1.9.4):
In entity/passive/EntityAnimal: #20 (EntityAnimal class):
{ return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F; }
protected Block spawnableBlock = Blocks.GRASS;
In entity/passive/EntityAnimal: #82 (EntityAnimal class):
public float getBlockPathWeight(BlockPos pos)since MushroomCows redefine their spawnableBlock to mycelium:
In entity/passive/EntityMooshroom: #23 (EntityMooshroom class):
this.spawnableBlock = Blocks.MYCELIUM;this have no effect on their pathing behaviour as the perferred block is hardcoded to GRASS.
Solution: replace
In entity/passive/EntityAnimal: #84 (EntityAnimal class):return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F;
replaceto:
return this.worldObj.getBlockState(pos.down()).getBlock() == this.spawnableBlock ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F;
replaceSideeffects of the current state:
Passive mobs are intended to spawn in light levels of 9 or above, as signified by this expression:In entity/passive/EntityAnimal: #122 (EntityAnimal class):
return this.worldObj.getBlockState(blockpos.down()).getBlock() == this.spawnableBlock && this.worldObj.getLight(blockpos) > 8 && super.getCanSpawnHere();However since mooshrooms will path through grass, the following code takes an effect while spawning on mycelium:
In entity/passive/EntityCreature: #40 (EntityCreature class):
return super.getCanSpawnHere() && this.getBlockPathWeight(new BlockPos(this.posX, this.getEntityBoundingBox().minY, this.posZ)) >= 0.0F;and:
In entity/passive/EntityAnimal: #82 (EntityAnimal class):public float getBlockPathWeight(BlockPos pos)
{ return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F; }So instead of light level > 8, what it needs is brightness > 0.5F, which is achieved with light level > 10, which stays in contrary to the statement in EntityAnimal#122
Please and Thank you.
Mushroom pathfinding favours grass rather than mycelium.
Caused by harcoded use of GRASS block instead of instance attribute, spawnableBlock (MCP for 1.9.4):
In entity/passive/EntityAnimal: #20 (EntityAnimal class):
{ return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F; }
protected Block spawnableBlock = Blocks.GRASS;In entity/passive/EntityAnimal: #82 (EntityAnimal class):
public float getBlockPathWeight(BlockPos pos)since MushroomCows redefine their spawnableBlock to mycelium:
In entity/passive/EntityMooshroom: #23 (EntityMooshroom class):
this.spawnableBlock = Blocks.MYCELIUM;this have no effect on their pathing behaviour as the perferred block is hardcoded to GRASS.
Solution: replace
In entity/passive/EntityAnimal: #84 (EntityAnimal class):return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F;
replaceto:
return this.worldObj.getBlockState(pos.down()).getBlock() == this.spawnableBlock ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F;
replaceSideeffects of the current state:
Passive mobs are intended to spawn in light levels of 9 or above, as signified by this expression:In entity/passive/EntityAnimal: #122 (EntityAnimal class):
return this.worldObj.getBlockState(blockpos.down()).getBlock() == this.spawnableBlock && this.worldObj.getLight(blockpos) > 8 && super.getCanSpawnHere();However since mooshrooms will path through grass, the following code takes an effect while spawning on mycelium:
In entity/passive/EntityCreature: #40 (EntityCreature class):
return super.getCanSpawnHere() && this.getBlockPathWeight(new BlockPos(this.posX, this.getEntityBoundingBox().minY, this.posZ)) >= 0.0F;and:
In entity/passive/EntityAnimal: #82 (EntityAnimal class):public float getBlockPathWeight(BlockPos pos)
{ return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F; }So instead of light level > 8, what it needs is brightness > 0.5F, which is achieved with light level > 10, which stays in contrary to the statement in EntityAnimal#122
Please and Thank you.
Mushroom pathfinding favours grass rather than mycelium.
Caused by harcoded use of GRASS block instead of instance attribute, spawnableBlock (MCP for 1.9.4):
In entity/passive/EntityAnimal: #20 (EntityAnimal class):
protected Block spawnableBlock = Blocks.GRASS;In entity/passive/EntityAnimal: #82 (EntityAnimal class):
{ return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F; }
public float getBlockPathWeight(BlockPos pos)since MushroomCows redefine their spawnableBlock to mycelium:
In entity/passive/EntityMooshroom: #23 (EntityMooshroom class):
this.spawnableBlock = Blocks.MYCELIUM;this have no effect on their pathing behaviour as the perferred block is hardcoded to GRASS.
Solution: replace
In entity/passive/EntityAnimal: #84 (EntityAnimal class):return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F;
replaceto:
return this.worldObj.getBlockState(pos.down()).getBlock() == this.spawnableBlock ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F;
replaceSideeffects of the current state:
Passive mobs are intended to spawn in light levels of 9 or above, as signified by this expression:In entity/passive/EntityAnimal: #122 (EntityAnimal class):
return this.worldObj.getBlockState(blockpos.down()).getBlock() == this.spawnableBlock && this.worldObj.getLight(blockpos) > 8 && super.getCanSpawnHere();However since mooshrooms will path through grass, the following code takes an effect while spawning on mycelium:
In entity/passive/EntityCreature: #40 (EntityCreature class):
return super.getCanSpawnHere() && this.getBlockPathWeight(new BlockPos(this.posX, this.getEntityBoundingBox().minY, this.posZ)) >= 0.0F;and:
In entity/passive/EntityAnimal: #82 (EntityAnimal class):public float getBlockPathWeight(BlockPos pos)
{ return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F; }So instead of light level > 8, what it needs is brightness > 0.5F, which is achieved with light level > 10, which stays in contrary to the statement in EntityAnimal#122
Please and Thank you.
Mushroom pathfinding favours grass rather than mycelium.
Caused by harcoded use of GRASS block instead of instance attribute, spawnableBlock (MCP for 1.9.4):
In entity/passive/EntityAnimal: #20 (EntityAnimal class):
protected Block spawnableBlock = Blocks.GRASS;In entity/passive/EntityAnimal: #82 (EntityAnimal class):
{ return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F; }
public float getBlockPathWeight(BlockPos pos)since MushroomCows redefine their spawnableBlock to mycelium:
In entity/passive/EntityMooshroom: #23 (EntityMooshroom class):
this.spawnableBlock = Blocks.MYCELIUM;
this have no effect on their pathing behaviour as the perferred block is hardcoded to GRASS.Solution: replace
In entity/passive/EntityAnimal: #84 (EntityAnimal class):return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F;
replaceto:
return this.worldObj.getBlockState(pos.down()).getBlock() == this.spawnableBlock ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F;
replaceSideeffects of the current state:
Passive mobs are intended to spawn in light levels of 9 or above, as signified by this expression:In entity/passive/EntityAnimal: #122 (EntityAnimal class):
return this.worldObj.getBlockState(blockpos.down()).getBlock() == this.spawnableBlock && this.worldObj.getLight(blockpos) > 8 && super.getCanSpawnHere();However since mooshrooms will path through grass, the following code takes an effect while spawning on mycelium:
In entity/passive/EntityCreature: #40 (EntityCreature class):
return super.getCanSpawnHere() && this.getBlockPathWeight(new BlockPos(this.posX, this.getEntityBoundingBox().minY, this.posZ)) >= 0.0F;and:
In entity/passive/EntityAnimal: #82 (EntityAnimal class):public float getBlockPathWeight(BlockPos pos)
{ return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F; }So instead of light level > 8, what it needs is brightness > 0.5F, which is achieved with light level > 10, which stays in contrary to the statement in EntityAnimal#122
Please and Thank you.
Mushroom pathfinding favours grass rather than mycelium.
Caused by harcoded use of GRASS block instead of instance attribute, spawnableBlock (MCP for 1.9.4):
In entity/passive/EntityAnimal: #20 (EntityAnimal class):
protected Block spawnableBlock = Blocks.GRASS;In entity/passive/EntityAnimal: #82 (EntityAnimal class):
public float getBlockPathWeight(BlockPos pos) { return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F; }since MushroomCows redefine their spawnableBlock to mycelium:
In entity/passive/EntityMooshroom: #23 (EntityMooshroom class):
this.spawnableBlock = Blocks.MYCELIUM;this have no effect on their pathing behaviour as the perferred block is hardcoded to GRASS.
Solution: replace
In entity/passive/EntityAnimal: #84 (EntityAnimal class):return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F;replace to:
return this.worldObj.getBlockState(pos.down()).getBlock() == this.spawnableBlock ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F;Sideeffects of the current state:
Passive mobs are intended to spawn in light levels of 9 or above, as signified by this expression:In entity/passive/EntityAnimal: #122 (EntityAnimal class):
return this.worldObj.getBlockState(blockpos.down()).getBlock() == this.spawnableBlock && this.worldObj.getLight(blockpos) > 8 && super.getCanSpawnHere();However since mooshrooms will path through grass, the following code takes an effect while spawning on mycelium:
In entity/passive/EntityCreature: #40 (EntityCreature class):
return super.getCanSpawnHere() && this.getBlockPathWeight(new BlockPos(this.posX, this.getEntityBoundingBox().minY, this.posZ)) >= 0.0F;and:
In entity/passive/EntityAnimal: #82 (EntityAnimal class):public float getBlockPathWeight(BlockPos pos) { return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F; }So instead of light level > 8, what it needs is brightness > 0.5F, which is achieved with light level > 10, which stays in contrary to the statement in EntityAnimal#122
Please and Thank you.
Mushroom pathfinding favours grass rather than mycelium.
Caused by harcoded use of GRASS block instead of instance attribute, spawnableBlock (MCP for 1.9.4):
In entity/passive/EntityAnimal: #20 (EntityAnimal class):
protected Block spawnableBlock = Blocks.GRASS;In entity/passive/EntityAnimal: #82 (EntityAnimal class):
public float getBlockPathWeight(BlockPos pos) { return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F; }since MushroomCows redefine their spawnableBlock to mycelium:
In entity/passive/EntityMooshroom: #23 (EntityMooshroom class):
this.spawnableBlock = Blocks.MYCELIUM;this have no effect on their pathing behaviour as the perferred block is hardcoded to GRASS.
Solution: replace
In entity/passive/EntityAnimal: #84 (EntityAnimal class):return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F;replace to:
return this.worldObj.getBlockState(pos.down()).getBlock() == this.spawnableBlock ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F;Sideeffects of the current state:
Passive mobs are intended to spawn in light levels of 9 or above, as signified by this expression:In entity/passive/EntityAnimal: #122 (EntityAnimal class):
return this.worldObj.getBlockState(blockpos.down()).getBlock() == this.spawnableBlock && this.worldObj.getLight(blockpos) > 8 && super.getCanSpawnHere();However since mooshrooms will path through grass, the following code takes an effect while spawning on mycelium:
In entity/passive/EntityCreature: #40 (EntityCreature class):
return super.getCanSpawnHere() && this.getBlockPathWeight(new BlockPos(this.posX, this.getEntityBoundingBox().minY, this.posZ)) >= 0.0F;and:
In entity/passive/EntityAnimal: #82 (EntityAnimal class):public float getBlockPathWeight(BlockPos pos) { return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F; }So instead of light level > 8, what it needs is brightness > 0.5F, which is achieved with light level > 10, which stays in contrary to the statement in EntityAnimal#122
Please and Thank you.
Mushroom pathfinding favours grass rather than mycelium.
Causes:
Caused by harcoded use of GRASS block instead of instance attribute, spawnableBlock (MCP for 1.9.4):
In entity/passive/EntityAnimal: #20 (EntityAnimal class):
protected Block spawnableBlock = Blocks.GRASS;In entity/passive/EntityAnimal: #82 (EntityAnimal class):
public float getBlockPathWeight(BlockPos pos) { return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F; }since MushroomCows redefine their spawnableBlock to mycelium:
In entity/passive/EntityMooshroom: #23 (EntityMooshroom class):
this.spawnableBlock = Blocks.MYCELIUM;this have no effect on their pathing behaviour as the perferred block is hardcoded to GRASS.
Solution:
Replace
In entity/passive/EntityAnimal: #84 (EntityAnimal class):return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F;replace to:
return this.worldObj.getBlockState(pos.down()).getBlock() == this.spawnableBlock ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F;Sideeffects of the current state:
Passive mobs are intended to spawn in light levels of 9 or above, as signified by this expression:
In entity/passive/EntityAnimal: #122 (EntityAnimal class):
return this.worldObj.getBlockState(blockpos.down()).getBlock() == this.spawnableBlock && this.worldObj.getLight(blockpos) > 8 && super.getCanSpawnHere();However since mooshrooms will path through grass, the following code takes an effect while spawning on mycelium:
In entity/passive/EntityCreature: #40 (EntityCreature class):
return super.getCanSpawnHere() && this.getBlockPathWeight(new BlockPos(this.posX, this.getEntityBoundingBox().minY, this.posZ)) >= 0.0F;and:
In entity/passive/EntityAnimal: #82 (EntityAnimal class):public float getBlockPathWeight(BlockPos pos) { return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F; }So instead of light level > 8, what it needs is brightness > 0.5F, which is achieved with light level > 10, which stays in contrary to the statement in EntityAnimal#122
Please and Thank you.
M
ushroom pathfinding favours grass rather than mycelium.Causes:
Caused by harcoded use of GRASS block instead of instance attribute, spawnableBlock (MCP for 1.9.4):
In entity/passive/EntityAnimal: #20 (EntityAnimal class):
protected Block spawnableBlock = Blocks.GRASS;In entity/passive/EntityAnimal: #82 (EntityAnimal class):
public float getBlockPathWeight(BlockPos pos) { return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F; }since MushroomCows redefine their spawnableBlock to mycelium:
In entity/passive/EntityMooshroom: #23 (EntityMooshroom class):
this.spawnableBlock = Blocks.MYCELIUM;this have no effect on their pathing behaviour as the perferred block is hardcoded to GRASS.
Solution:
Replace
In entity/passive/EntityAnimal: #84 (EntityAnimal class):return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F;replace to:
return this.worldObj.getBlockState(pos.down()).getBlock() == this.spawnableBlock ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F;Sideeffects of the current state:
Passive mobs are intended to spawn in light levels of 9 or above, as signified by this expression:
In entity/passive/EntityAnimal: #122 (EntityAnimal class):
return this.worldObj.getBlockState(blockpos.down()).getBlock() == this.spawnableBlock && this.worldObj.getLight(blockpos) > 8 && super.getCanSpawnHere();However since mooshrooms will path through grass, the following code takes an effect while spawning on mycelium:
In entity/passive/EntityCreature: #40 (EntityCreature class):
return super.getCanSpawnHere() && this.getBlockPathWeight(new BlockPos(this.posX, this.getEntityBoundingBox().minY, this.posZ)) >= 0.0F;and:
In entity/passive/EntityAnimal: #82 (EntityAnimal class):public float getBlockPathWeight(BlockPos pos) { return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F; }So instead of light level > 8, what it needs is brightness > 0.5F, which is achieved with light level > 10, which stays in contrary to the statement in EntityAnimal#122
Please and Thank you.
Mooshroom pathfinding favours grass rather than mycelium.
Causes:
Caused by harcoded use of GRASS block instead of instance attribute, spawnableBlock (MCP for 1.9.4):
In entity/passive/EntityAnimal: #20 (EntityAnimal class):
protected Block spawnableBlock = Blocks.GRASS;In entity/passive/EntityAnimal: #82 (EntityAnimal class):
public float getBlockPathWeight(BlockPos pos) { return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F; }since MushroomCows redefine their spawnableBlock to mycelium:
In entity/passive/EntityMooshroom: #23 (EntityMooshroom class):
this.spawnableBlock = Blocks.MYCELIUM;this have no effect on their pathing behaviour as the perferred block is hardcoded to GRASS.
Solution:
Replace
In entity/passive/EntityAnimal: #84 (EntityAnimal class):return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F;replace to:
return this.worldObj.getBlockState(pos.down()).getBlock() == this.spawnableBlock ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F;Sideeffects of the current state:
Passive mobs are intended to spawn in light levels of 9 or above, as signified by this expression:
In entity/passive/EntityAnimal: #122 (EntityAnimal class):
return this.worldObj.getBlockState(blockpos.down()).getBlock() == this.spawnableBlock && this.worldObj.getLight(blockpos) > 8 && super.getCanSpawnHere();However since mooshrooms will path through grass, the following code takes an effect while spawning on mycelium:
In entity/passive/EntityCreature: #40 (EntityCreature class):
return super.getCanSpawnHere() && this.getBlockPathWeight(new BlockPos(this.posX, this.getEntityBoundingBox().minY, this.posZ)) >= 0.0F;and:
In entity/passive/EntityAnimal: #82 (EntityAnimal class):public float getBlockPathWeight(BlockPos pos) { return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F; }So instead of light level > 8, what it needs is brightness > 0.5F, which is achieved with light level > 10, which stays in contrary to the statement in EntityAnimal#122
Please and Thank you.
Mooshroom pathfinding favours grass rather than mycelium.
Causes:
Caused by harcoded use of GRASS block instead of instance attribute, spawnableBlock (MCP for 1.9.4):
In entity/passive/EntityAnimal: #20 (EntityAnimal class):
protected Block spawnableBlock = Blocks.GRASS;In entity/passive/EntityAnimal: #82 (EntityAnimal class):
public float getBlockPathWeight(BlockPos pos) { return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F; }since MushroomCows redefine their spawnableBlock to mycelium:
In entity/passive/EntityMooshroom: #23 (EntityMooshroom class):
this.spawnableBlock = Blocks.MYCELIUM;this have no effect on their pathing behaviour as the perferred block is hardcoded to GRASS.
Solution:
Replace
In entity/passive/EntityAnimal: #84 (EntityAnimal class):return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F;replace to:
return this.worldObj.getBlockState(pos.down()).getBlock() == this.spawnableBlock ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F;Sideeffects of the current state:
Passive mobs are intended to spawn in light levels of 9 or above, as signified by this expression:
In entity/passive/EntityAnimal: #122 (EntityAnimal class):
return this.worldObj.getBlockState(blockpos.down()).getBlock() == this.spawnableBlock && this.worldObj.getLight(blockpos) > 8 && super.getCanSpawnHere();However since mooshrooms will path through grass, the following code takes an effect while spawning on mycelium:
In entity/passive/EntityCreature: #40 (EntityCreature class):
return super.getCanSpawnHere() && this.getBlockPathWeight(new BlockPos(this.posX, this.getEntityBoundingBox().minY, this.posZ)) >= 0.0F;and:
In entity/passive/EntityAnimal: #82 (EntityAnimal class):public float getBlockPathWeight(BlockPos pos) { return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F; }So instead of light level > 8, what it needs is brightness > 0.5F, which is achieved with light level > 1
0, which stays in contrary to the statement in EntityAnimal#122Please and Thank you.
Mooshroom pathfinding favours grass rather than mycelium.
Causes:
Caused by harcoded use of GRASS block instead of instance attribute, spawnableBlock (MCP for 1.9.4):
In entity/passive/EntityAnimal: #20 (EntityAnimal class):
protected Block spawnableBlock = Blocks.GRASS;In entity/passive/EntityAnimal: #82 (EntityAnimal class):
public float getBlockPathWeight(BlockPos pos) { return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F; }since MushroomCows redefine their spawnableBlock to mycelium:
In entity/passive/EntityMooshroom: #23 (EntityMooshroom class):
this.spawnableBlock = Blocks.MYCELIUM;this have no effect on their pathing behaviour as the perferred block is hardcoded to GRASS.
Solution:
Replace
In entity/passive/EntityAnimal: #84 (EntityAnimal class):return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F;replace to:
return this.worldObj.getBlockState(pos.down()).getBlock() == this.spawnableBlock ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F;Sideeffects of the current state:
Passive mobs are intended to spawn in light levels of 9 or above, as signified by this expression:
In entity/passive/EntityAnimal: #122 (EntityAnimal class):
return this.worldObj.getBlockState(blockpos.down()).getBlock() == this.spawnableBlock && this.worldObj.getLight(blockpos) > 8 && super.getCanSpawnHere();However since mooshrooms will path through grass, the following code takes an effect while spawning on mycelium:
In entity/passive/EntityCreature: #40 (EntityCreature class):
return super.getCanSpawnHere() && this.getBlockPathWeight(new BlockPos(this.posX, this.getEntityBoundingBox().minY, this.posZ)) >= 0.0F;and:
In entity/passive/EntityAnimal: #82 (EntityAnimal class):public float getBlockPathWeight(BlockPos pos) { return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F; }So instead of light level > 8, what it needs is brightness > 0.5F, which is achieved with light level > 11, which stays in contrary to the statement in EntityAnimal#122
Please and Thank you.
Mooshroom pathfinding favours grass rather than mycelium.
Causes:
Caused by harcoded use of GRASS block instead of instance attribute, spawnableBlock (MCP for 1.9.4):
In entity/passive/EntityAnimal: #20 (EntityAnimal class):
protected Block spawnableBlock = Blocks.GRASS;In entity/passive/EntityAnimal: #82 (EntityAnimal class):
public float getBlockPathWeight(BlockPos pos) { return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F; }since MushroomCows redefine their spawnableBlock to mycelium:
In entity/passive/EntityMooshroom: #23 (EntityMooshroom class):
this.spawnableBlock = Blocks.MYCELIUM;this have no effect on their pathing behaviour as the perferred block is hardcoded to GRASS.
Solution:
Replace
In entity/passive/EntityAnimal: #84 (EntityAnimal class):return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F;replace to:
return this.worldObj.getBlockState(pos.down()).getBlock() == this.spawnableBlock ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F;Sideeffects of the current state:
Passive mobs are intended to spawn in light levels of 9 or above, as signified by this expression:
In entity/passive/EntityAnimal: #122 (EntityAnimal class):
return this.worldObj.getBlockState(blockpos.down()).getBlock() == this.spawnableBlock && this.worldObj.getLight(blockpos) > 8 && super.getCanSpawnHere();However since mooshrooms will path through grass, the following code takes an effect while spawning on mycelium:
In entity/passive/EntityCreature: #40 (EntityCreature class):
return super.getCanSpawnHere() && this.getBlockPathWeight(new BlockPos(this.posX, this.getEntityBoundingBox().minY, this.posZ)) >= 0.0F;and:
In entity/passive/EntityAnimal: #82 (EntityAnimal class):public float getBlockPathWeight(BlockPos pos) { return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F; }So instead of light level > 8, what it needs is brightness > 0.5F, which is achieved with light level > 11, which stays in contrary to the statement in EntityAnimal#122
Please and Thank you.
Mooshroom pathfinding favours grass rather than mycelium.
Causes:
Caused by harcoded use of GRASS block instead of instance attribute, spawnableBlock (MCP for 1.9.4):
In entity/passive/EntityAnimal: #20 (EntityAnimal class):
protected Block spawnableBlock = Blocks.GRASS;In entity/passive/EntityAnimal: #82 (EntityAnimal class):
public float getBlockPathWeight(BlockPos pos) { return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F; }since MushroomCows redefine their spawnableBlock to mycelium:
In entity/passive/EntityMooshroom: #23 (EntityMooshroom class):
this.spawnableBlock = Blocks.MYCELIUM;this have no effect on their pathing behaviour as the perferred block is hardcoded to GRASS.
Solution:
Replace
In entity/passive/EntityAnimal: #84 (EntityAnimal class):return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F;replace to:
return this.worldObj.getBlockState(pos.down()).getBlock() == this.spawnableBlock ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F;Sideeffects of the current state:
Passive mobs are intended to spawn in light levels of 9 or above, as signified by this expression:
In entity/passive/EntityAnimal: #122 (EntityAnimal class):
return this.worldObj.getBlockState(blockpos.down()).getBlock() == this.spawnableBlock && this.worldObj.getLight(blockpos) > 8 && super.getCanSpawnHere();However since mooshrooms will path through grass, the following code takes an effect while spawning on mycelium:
In entity/passive/EntityCreature: #40 (EntityCreature class):
return super.getCanSpawnHere() && this.getBlockPathWeight(new BlockPos(this.posX, this.getEntityBoundingBox().minY, this.posZ)) >= 0.0F;and:
In entity/passive/EntityAnimal: #82 (EntityAnimal class):public float getBlockPathWeight(BlockPos pos) { return this.worldObj.getBlockState(pos.down()).getBlock() == Blocks.GRASS ? 10.0F : this.worldObj.getLightBrightness(pos) - 0.5F; }So instead of light level > 8, what it needs is brightness > 0.5F, which is achieved with light level > 11, which stays in contrary to the statement in EntityAnimal#122
Video with explanation:
https://www.youtube.com/watch?v=sm43geXAgysPlease and Thank you.