From e24eadca8a546f2df06421c236baf0d5eb9aa0bb Mon Sep 17 00:00:00 2001 From: Sollace Date: Tue, 29 Jan 2019 17:56:16 +0200 Subject: [PATCH] Fixed cloud spawning race??? --- .../minelittlepony/unicopia/UEntities.java | 2 +- .../unicopia/entity/EntityWildCloud.java | 44 ++++++++----------- 2 files changed, 20 insertions(+), 26 deletions(-) diff --git a/src/main/java/com/minelittlepony/unicopia/UEntities.java b/src/main/java/com/minelittlepony/unicopia/UEntities.java index a9bb1b6b..b508a9fe 100644 --- a/src/main/java/com/minelittlepony/unicopia/UEntities.java +++ b/src/main/java/com/minelittlepony/unicopia/UEntities.java @@ -54,7 +54,7 @@ public class UEntities { static void registerSpawnEntries(Biome biome) { if (!(biome instanceof BiomeHell || biome instanceof BiomeEnd)) { - List entries = biome.getSpawnableList(EnumCreatureType.CREATURE); + List entries = biome.getSpawnableList(EnumCreatureType.AMBIENT); entries.stream().filter(p -> p.entityClass == EntityWildCloud.class).findFirst().orElseGet(() -> { entries.add( BiomeManager.oceanBiomes.contains(biome) ? diff --git a/src/main/java/com/minelittlepony/unicopia/entity/EntityWildCloud.java b/src/main/java/com/minelittlepony/unicopia/entity/EntityWildCloud.java index 5f6902cb..3b685f48 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/EntityWildCloud.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/EntityWildCloud.java @@ -1,8 +1,6 @@ package com.minelittlepony.unicopia.entity; -import java.util.ArrayList; import java.util.Iterator; -import java.util.List; import net.minecraft.entity.Entity; import net.minecraft.entity.IEntityLivingData; @@ -18,38 +16,20 @@ import net.minecraft.world.chunk.Chunk; public class EntityWildCloud extends EntityCloud { public static final SpawnListEntry SPAWN_ENTRY_LAND = new SpawnListEntry(EntityWildCloud.class, 1, 1, 15); - public static final SpawnListEntry SPAWN_ENTRY_OCEAN = new SpawnListEntry(EntityWildCloud.class, 1, 1, 2); + public static final SpawnListEntry SPAWN_ENTRY_OCEAN = new SpawnListEntry(EntityWildCloud.class, 1, 1, 7); public EntityWildCloud(World world) { super(world); - this.preventEntitySpawning = true; + preventEntitySpawning = true; } @Override public boolean isNotColliding() { - int count = 0; - - - BlockPos pos = new BlockPos(this); - - Chunk chunk = world.getChunk(pos); - for (ClassInheritanceMultiMap i : chunk.getEntityLists()) { - Iterator iter = i.getByClass(EntityCloud.class).iterator(); - while (iter.hasNext()) { - iter.next(); - count++; - - if (count > 2) { - return false; - } - } - } - AxisAlignedBB boundingbox = getEntityBoundingBox(); return checkNoEntityCollision(boundingbox, this) - && world.canBlockSeeSky(pos) + && world.canBlockSeeSky(new BlockPos(this)) && world.getCollisionBoxes(this, boundingbox).isEmpty() && !world.containsAnyLiquid(boundingbox); } @@ -71,9 +51,23 @@ public class EntityWildCloud extends EntityCloud { @Override public boolean getCanSpawnHere() { - BlockPos pos = new BlockPos(this).down(); + int count = 0; - return world.getBlockState(pos).canEntitySpawn(this); + BlockPos pos = new BlockPos(this); + + Chunk chunk = world.getChunk(pos); + for (ClassInheritanceMultiMap i : chunk.getEntityLists()) { + Iterator iter = i.getByClass(EntityCloud.class).iterator(); + while (iter.hasNext()) { + iter.next(); + + if (count++ > 2) { + return false; + } + } + } + + return world.getBlockState(pos.down()).canEntitySpawn(this); } @Override