Fix spawning & block updating height issues

This commit is contained in:
cyberpwn 2022-01-14 08:07:35 -05:00
parent deb42da38e
commit f2d1f7bf52
2 changed files with 8 additions and 4 deletions

View File

@ -205,11 +205,12 @@ public class IrisWorldManager extends EngineAssignedWorldManager {
J.a(() -> getMantle().raiseFlag(finalX, finalZ, MantleFlag.INITIAL_SPAWNED_MARKER,
() -> {
J.a(() -> spawnIn(cx, true), RNG.r.i(5, 200));
getSpawnersFromMarkers(cx).forEach((block, spawners) -> {
getSpawnersFromMarkers(cx).forEach((blockf, spawners) -> {
if(spawners.isEmpty()) {
return;
}
IrisPosition block = new IrisPosition(blockf.getX(), blockf.getY() + getEngine().getWorld().minHeight(), blockf.getZ());
IrisSpawner s = new KList<>(spawners).getRandom();
spawn(block, s, true);
});
@ -321,11 +322,12 @@ public class IrisWorldManager extends EngineAssignedWorldManager {
//@done
if(IrisSettings.get().getWorld().isMarkerEntitySpawningSystem()) {
getSpawnersFromMarkers(c).forEach((block, spawners) -> {
getSpawnersFromMarkers(c).forEach((blockf, spawners) -> {
if(spawners.isEmpty()) {
return;
}
IrisPosition block = new IrisPosition(blockf.getX(), blockf.getY() + getEngine().getWorld().minHeight(), blockf.getZ());
IrisSpawner s = new KList<>(spawners).getRandom();
spawn(block, s, false);
J.a(() -> getMantle().raiseFlag(c.getX(), c.getZ(), MantleFlag.INITIAL_SPAWNED_MARKER,

View File

@ -280,7 +280,8 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
PrecisionStopwatch p = PrecisionStopwatch.start();
KMap<Long, Integer> updates = new KMap<>();
RNG r = new RNG(Cache.key(c.getX(), c.getZ()));
getMantle().getMantle().iterateChunk(c.getX(), c.getZ(), MatterCavern.class, (x, y, z, v) -> {
getMantle().getMantle().iterateChunk(c.getX(), c.getZ(), MatterCavern.class, (x, yf, z, v) -> {
int y = yf + getWorld().minHeight();
if(!B.isFluid(c.getBlock(x & 15, y, z & 15).getBlockData())) {
return;
}
@ -309,7 +310,8 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
});
updates.forEach((k, v) -> update(Cache.keyX(k), v, Cache.keyZ(k), c, r));
getMantle().getMantle().iterateChunk(c.getX(), c.getZ(), MatterUpdate.class, (x, y, z, v) -> {
getMantle().getMantle().iterateChunk(c.getX(), c.getZ(), MatterUpdate.class, (x, yf, z, v) -> {
int y = yf + getWorld().minHeight();
if(v != null && v.isUpdate()) {
int vx = x & 15;
int vz = z & 15;