9
0
mirror of https://github.com/VolmitSoftware/Iris.git synced 2025-12-29 12:09:07 +00:00

Initial spawns

This commit is contained in:
Daniel Mills
2020-09-06 04:01:20 -04:00
parent c5ab77b8ac
commit 90a5398e98
11 changed files with 192 additions and 29 deletions

View File

@@ -26,7 +26,8 @@ import com.volmit.iris.object.IrisBiome;
import com.volmit.iris.object.IrisBlockDrops;
import com.volmit.iris.object.IrisDimension;
import com.volmit.iris.object.IrisEffect;
import com.volmit.iris.object.IrisEntitySpawn;
import com.volmit.iris.object.IrisEntityInitialSpawn;
import com.volmit.iris.object.IrisEntitySpawnOverride;
import com.volmit.iris.object.IrisRegion;
import com.volmit.iris.util.Form;
import com.volmit.iris.util.IrisStructureResult;
@@ -409,6 +410,33 @@ public class IrisTerrainProvider extends PostBlockTerrainProvider implements Iri
}
}
public void spawnInitials(Chunk c, RNG rng)
{
int x = (c.getX() * 16) + rng.nextInt(15);
int z = (c.getZ() * 16) + rng.nextInt(15);
int y = getCarvedHeight(x, z);
IrisDimension dim = getDimension();
IrisRegion region = sampleRegion(x, z);
IrisBiome above = sampleTrueBiome(x, z);
IrisStructureResult res = getStructure(x, y, z);
if(res != null && res.getTile() != null)
{
trySpawn(res.getTile().getEntityInitialSpawns(), c, rng);
}
if(res != null && res.getStructure() != null)
{
trySpawn(res.getStructure().getEntityInitialSpawns(), c, rng);
}
trySpawn(above.getEntityInitialSpawns(), c, rng);
trySpawn(region.getEntityInitialSpawns(), c, rng);
trySpawn(dim.getEntityInitialSpawns(), c, rng);
}
@Override
protected void onSpawn(EntitySpawnEvent e)
{
@@ -431,7 +459,7 @@ public class IrisTerrainProvider extends PostBlockTerrainProvider implements Iri
if(res != null && res.getTile() != null)
{
if(trySpawn(res.getTile().getEntitySpawns(), e))
if(trySpawn(res.getTile().getEntitySpawnOverrides(), e))
{
return;
}
@@ -439,7 +467,7 @@ public class IrisTerrainProvider extends PostBlockTerrainProvider implements Iri
if(res != null && res.getStructure() != null)
{
if(trySpawn(res.getStructure().getEntitySpawns(), e))
if(trySpawn(res.getStructure().getEntitySpawnOverrides(), e))
{
return;
}
@@ -447,32 +475,32 @@ public class IrisTerrainProvider extends PostBlockTerrainProvider implements Iri
if(below != null)
{
if(trySpawn(below.getEntitySpawns(), e))
if(trySpawn(below.getEntitySpawnOverrides(), e))
{
return;
}
}
if(trySpawn(above.getEntitySpawns(), e))
if(trySpawn(above.getEntitySpawnOverrides(), e))
{
return;
}
if(trySpawn(region.getEntitySpawns(), e))
if(trySpawn(region.getEntitySpawnOverrides(), e))
{
return;
}
if(trySpawn(dim.getEntitySpawns(), e))
if(trySpawn(dim.getEntitySpawnOverrides(), e))
{
return;
}
}
}
private boolean trySpawn(KList<IrisEntitySpawn> s, EntitySpawnEvent e)
private boolean trySpawn(KList<IrisEntitySpawnOverride> s, EntitySpawnEvent e)
{
for(IrisEntitySpawn i : s)
for(IrisEntitySpawnOverride i : s)
{
setSpawnable(false);
@@ -492,6 +520,14 @@ public class IrisTerrainProvider extends PostBlockTerrainProvider implements Iri
return false;
}
private void trySpawn(KList<IrisEntityInitialSpawn> s, Chunk c, RNG rng)
{
for(IrisEntityInitialSpawn i : s)
{
i.spawn(this, c, rng);
}
}
@Override
public boolean canSpawn(int x, int z)
{

View File

@@ -13,6 +13,7 @@ import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack;
import com.volmit.iris.Iris;
import com.volmit.iris.gen.IrisTerrainProvider;
import com.volmit.iris.gen.ParallaxTerrainProvider;
import com.volmit.iris.gen.atomics.AtomicSliverMap;
import com.volmit.iris.object.InventorySlotType;
@@ -61,6 +62,8 @@ public class GenLayerUpdate extends BlockPopulator
}
}
((IrisTerrainProvider) gen).spawnInitials(c, rx);
p.end();
gen.getMetrics().getUpdate().put(p.getMilliseconds());
}