Fixes for pieces

This commit is contained in:
cyberpwn 2021-09-08 08:40:55 -04:00
parent 1065079be6
commit fc94fe30d0

View File

@ -21,6 +21,7 @@ package com.volmit.iris.engine.jigsaw;
import com.googlecode.concurrentlinkedhashmap.ConcurrentLinkedHashMap;
import com.volmit.iris.Iris;
import com.volmit.iris.core.loader.IrisData;
import com.volmit.iris.engine.data.cache.Cache;
import com.volmit.iris.engine.object.*;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.interpolation.InterpolationMethod;
@ -101,6 +102,7 @@ public class PlannedStructure {
int sz = (v.getD() / 2);
int xx = i.getPosition().getX() + sx;
int zz = i.getPosition().getZ() + sz;
RNG rngf = new RNG(Cache.key(xx, zz));
int offset = i.getPosition().getY() - startHeight;
int height = 0;
@ -124,25 +126,7 @@ public class PlannedStructure {
int h = vo.place(xx, height, zz, placer, options, rng, (b)
-> e.set(b.getX(), b.getY(), b.getZ(), v.getLoadKey() + "@" + id), null, getData());
for (IrisJigsawPieceConnector j : i.getAvailableConnectors()) {
if (j.getSpawnEntity() != null)// && h != -1)
{
IrisPosition p;
if (j.getEntityPosition() == null) {
p = i.getWorldPosition(j).add(new IrisPosition(j.getDirection().toVector().multiply(2)));
} else {
p = i.getWorldPosition(j).add(j.getEntityPosition());
}
if (options.getMode().equals(ObjectPlaceMode.PAINT) || options.isVacuum()) {
p.setY(placer.getHighest(xx, zz, getData()) + offset + (v.getH() / 2));
} else {
p.setY(height);
}
}
}
if (options.usesFeatures()) {
if (options.isVacuum()) {
double a = Math.max(v.getW(), v.getD());
IrisFeature f = new IrisFeature();
f.setConvergeToHeight(h - (v.getH() >> 1) - 1);
@ -152,6 +136,17 @@ public class PlannedStructure {
f.setStrength(1D);
e.set(xx, 0, zz, new IrisFeaturePositional(xx, zz, f));
}
if(options.getAddFeatures().isNotEmpty())
{
for (IrisFeaturePotential j : options.getAddFeatures())
{
if(rngf.nextInt(j.getRarity()) == 0)
{
e.set(xx, 0, zz, new IrisFeaturePositional(xx, zz, j.getZone()));
}
}
}
}
public void place(World world) {