mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-18 10:12:53 +00:00
Fix spawning & block updating height issues
This commit is contained in:
parent
deb42da38e
commit
f2d1f7bf52
@ -205,11 +205,12 @@ public class IrisWorldManager extends EngineAssignedWorldManager {
|
|||||||
J.a(() -> getMantle().raiseFlag(finalX, finalZ, MantleFlag.INITIAL_SPAWNED_MARKER,
|
J.a(() -> getMantle().raiseFlag(finalX, finalZ, MantleFlag.INITIAL_SPAWNED_MARKER,
|
||||||
() -> {
|
() -> {
|
||||||
J.a(() -> spawnIn(cx, true), RNG.r.i(5, 200));
|
J.a(() -> spawnIn(cx, true), RNG.r.i(5, 200));
|
||||||
getSpawnersFromMarkers(cx).forEach((block, spawners) -> {
|
getSpawnersFromMarkers(cx).forEach((blockf, spawners) -> {
|
||||||
if(spawners.isEmpty()) {
|
if(spawners.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IrisPosition block = new IrisPosition(blockf.getX(), blockf.getY() + getEngine().getWorld().minHeight(), blockf.getZ());
|
||||||
IrisSpawner s = new KList<>(spawners).getRandom();
|
IrisSpawner s = new KList<>(spawners).getRandom();
|
||||||
spawn(block, s, true);
|
spawn(block, s, true);
|
||||||
});
|
});
|
||||||
@ -321,11 +322,12 @@ public class IrisWorldManager extends EngineAssignedWorldManager {
|
|||||||
//@done
|
//@done
|
||||||
|
|
||||||
if(IrisSettings.get().getWorld().isMarkerEntitySpawningSystem()) {
|
if(IrisSettings.get().getWorld().isMarkerEntitySpawningSystem()) {
|
||||||
getSpawnersFromMarkers(c).forEach((block, spawners) -> {
|
getSpawnersFromMarkers(c).forEach((blockf, spawners) -> {
|
||||||
if(spawners.isEmpty()) {
|
if(spawners.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IrisPosition block = new IrisPosition(blockf.getX(), blockf.getY() + getEngine().getWorld().minHeight(), blockf.getZ());
|
||||||
IrisSpawner s = new KList<>(spawners).getRandom();
|
IrisSpawner s = new KList<>(spawners).getRandom();
|
||||||
spawn(block, s, false);
|
spawn(block, s, false);
|
||||||
J.a(() -> getMantle().raiseFlag(c.getX(), c.getZ(), MantleFlag.INITIAL_SPAWNED_MARKER,
|
J.a(() -> getMantle().raiseFlag(c.getX(), c.getZ(), MantleFlag.INITIAL_SPAWNED_MARKER,
|
||||||
|
@ -280,7 +280,8 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
|
|||||||
PrecisionStopwatch p = PrecisionStopwatch.start();
|
PrecisionStopwatch p = PrecisionStopwatch.start();
|
||||||
KMap<Long, Integer> updates = new KMap<>();
|
KMap<Long, Integer> updates = new KMap<>();
|
||||||
RNG r = new RNG(Cache.key(c.getX(), c.getZ()));
|
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())) {
|
if(!B.isFluid(c.getBlock(x & 15, y, z & 15).getBlockData())) {
|
||||||
return;
|
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));
|
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()) {
|
if(v != null && v.isUpdate()) {
|
||||||
int vx = x & 15;
|
int vx = x & 15;
|
||||||
int vz = z & 15;
|
int vz = z & 15;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user