51 lines
2.4 KiB
Diff
51 lines
2.4 KiB
Diff
--- ../src_base/common/net/minecraft/src/SpawnerAnimals.java
|
|
+++ ../src_work/common/net/minecraft/src/SpawnerAnimals.java
|
|
@@ -1,9 +1,14 @@
|
|
package net.minecraft.src;
|
|
|
|
+import java.util.ArrayList;
|
|
+import java.util.Collections;
|
|
import java.util.HashMap;
|
|
import java.util.Iterator;
|
|
import java.util.List;
|
|
import java.util.Random;
|
|
+
|
|
+import net.minecraftforge.common.MinecraftForge;
|
|
+import net.minecraftforge.event.entity.living.LivingSpecialSpawnEvent;
|
|
|
|
public final class SpawnerAnimals
|
|
{
|
|
@@ -79,6 +84,9 @@
|
|
if ((!var34.getPeacefulCreature() || par2) && (var34.getPeacefulCreature() || par1) && par0WorldServer.countEntities(var34.getCreatureClass()) <= var34.getMaxNumberOfCreature() * eligibleChunksForSpawning.size() / 256)
|
|
{
|
|
Iterator var35 = eligibleChunksForSpawning.keySet().iterator();
|
|
+ ArrayList<ChunkCoordIntPair> tmp = new ArrayList(eligibleChunksForSpawning.keySet());
|
|
+ Collections.shuffle(tmp);
|
|
+ var35 = tmp.iterator();
|
|
label108:
|
|
|
|
while (var35.hasNext())
|
|
@@ -207,7 +215,8 @@
|
|
else
|
|
{
|
|
int var5 = par1World.getBlockId(par2, par3 - 1, par4);
|
|
- return var5 != Block.bedrock.blockID && !par1World.isBlockNormalCube(par2, par3, par4) && !par1World.getBlockMaterial(par2, par3, par4).isLiquid() && !par1World.isBlockNormalCube(par2, par3 + 1, par4);
|
|
+ boolean spawnBlock = (Block.blocksList[var5] != null && Block.blocksList[var5].canCreatureSpawn(par0EnumCreatureType, par1World, par2, par3 - 1, par4));
|
|
+ return spawnBlock && var5 != Block.bedrock.blockID && !par1World.isBlockNormalCube(par2, par3, par4) && !par1World.getBlockMaterial(par2, par3, par4).isLiquid() && !par1World.isBlockNormalCube(par2, par3 + 1, par4);
|
|
}
|
|
}
|
|
|
|
@@ -216,6 +225,13 @@
|
|
*/
|
|
private static void creatureSpecificInit(EntityLiving par0EntityLiving, World par1World, float par2, float par3, float par4)
|
|
{
|
|
+ LivingSpecialSpawnEvent event = new LivingSpecialSpawnEvent(par0EntityLiving, par1World, par2, par3, par4);
|
|
+ MinecraftForge.EVENT_BUS.post(event);
|
|
+ if (event.isHandeled())
|
|
+ {
|
|
+ return;
|
|
+ }
|
|
+
|
|
if (par0EntityLiving instanceof EntitySpider && par1World.rand.nextInt(100) == 0)
|
|
{
|
|
EntitySkeleton var7 = new EntitySkeleton(par1World);
|