mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-08-17 00:36:35 +00:00
save structure placed at block
This commit is contained in:
parent
a610d0a7a9
commit
8705ca6e47
@ -47,6 +47,7 @@ import com.volmit.iris.util.mantle.MantleFlag;
|
|||||||
import com.volmit.iris.util.math.M;
|
import com.volmit.iris.util.math.M;
|
||||||
import com.volmit.iris.util.math.RNG;
|
import com.volmit.iris.util.math.RNG;
|
||||||
import com.volmit.iris.util.matter.MatterStructurePOI;
|
import com.volmit.iris.util.matter.MatterStructurePOI;
|
||||||
|
import com.volmit.iris.util.matter.slices.container.JigsawStructureContainer;
|
||||||
import com.volmit.iris.util.scheduling.ChronoLatch;
|
import com.volmit.iris.util.scheduling.ChronoLatch;
|
||||||
import com.volmit.iris.util.scheduling.J;
|
import com.volmit.iris.util.scheduling.J;
|
||||||
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
|
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
|
||||||
@ -223,6 +224,12 @@ public class IrisEngine implements Engine {
|
|||||||
return getMantle().getJigsawComponent().guess(x, z);
|
return getMantle().getJigsawComponent().guess(x, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IrisJigsawStructure getStructureAt(int x, int y, int z) {
|
||||||
|
var container = getMantle().getMantle().get(x, y, z, JigsawStructureContainer.class);
|
||||||
|
return container == null ? null : container.load(getData());
|
||||||
|
}
|
||||||
|
|
||||||
private void warmupChunk(int x, int z) {
|
private void warmupChunk(int x, int z) {
|
||||||
for (int i = 0; i < 16; i++) {
|
for (int i = 0; i < 16; i++) {
|
||||||
for (int j = 0; j < 16; j++) {
|
for (int j = 0; j < 16; j++) {
|
||||||
|
@ -231,6 +231,9 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
|
|||||||
@ChunkCoordinates
|
@ChunkCoordinates
|
||||||
IrisJigsawStructure getStructureAt(int x, int z);
|
IrisJigsawStructure getStructureAt(int x, int z);
|
||||||
|
|
||||||
|
@BlockCoordinates
|
||||||
|
IrisJigsawStructure getStructureAt(int x, int y, int z);
|
||||||
|
|
||||||
@BlockCoordinates
|
@BlockCoordinates
|
||||||
default IrisBiome getCaveBiome(int x, int z) {
|
default IrisBiome getCaveBiome(int x, int z) {
|
||||||
return getComplex().getCaveBiomeStream().get(x, z);
|
return getComplex().getCaveBiomeStream().get(x, z);
|
||||||
|
@ -29,6 +29,7 @@ import com.volmit.iris.util.mantle.Mantle;
|
|||||||
import com.volmit.iris.util.math.Position2;
|
import com.volmit.iris.util.math.Position2;
|
||||||
import com.volmit.iris.util.math.RNG;
|
import com.volmit.iris.util.math.RNG;
|
||||||
import com.volmit.iris.util.matter.slices.container.JigsawPieceContainer;
|
import com.volmit.iris.util.matter.slices.container.JigsawPieceContainer;
|
||||||
|
import com.volmit.iris.util.matter.slices.container.JigsawStructureContainer;
|
||||||
import com.volmit.iris.util.matter.slices.container.JigsawStructuresContainer;
|
import com.volmit.iris.util.matter.slices.container.JigsawStructuresContainer;
|
||||||
import com.volmit.iris.util.scheduling.J;
|
import com.volmit.iris.util.scheduling.J;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@ -149,11 +150,13 @@ public class PlannedStructure {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int id = rng.i(0, Integer.MAX_VALUE);
|
int id = rng.i(0, Integer.MAX_VALUE);
|
||||||
JigsawPieceContainer container = JigsawPieceContainer.toContainer(i.getPiece());
|
JigsawPieceContainer piece = JigsawPieceContainer.toContainer(i.getPiece());
|
||||||
|
JigsawStructureContainer structure = JigsawStructureContainer.toContainer(getStructure());
|
||||||
i.setRealPositions(xx, height, zz, placer);
|
i.setRealPositions(xx, height, zz, placer);
|
||||||
return v.place(xx, height, zz, placer, options, rng, (b, data) -> {
|
return v.place(xx, height, zz, placer, options, rng, (b, data) -> {
|
||||||
e.set(b.getX(), b.getY(), b.getZ(), v.getLoadKey() + "@" + id);
|
e.set(b.getX(), b.getY(), b.getZ(), v.getLoadKey() + "@" + id);
|
||||||
e.set(b.getX(), b.getY(), b.getZ(), container);
|
e.set(b.getX(), b.getY(), b.getZ(), structure);
|
||||||
|
e.set(b.getX(), b.getY(), b.getZ(), piece);
|
||||||
}, null, getData().getEngine() != null ? getData() : eng.getData()) != -1;
|
}, null, getData().getEngine() != null ? getData() : eng.getData()) != -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,35 @@
|
|||||||
|
package com.volmit.iris.util.matter.slices;
|
||||||
|
|
||||||
|
import com.volmit.iris.util.data.palette.Palette;
|
||||||
|
import com.volmit.iris.util.matter.Sliced;
|
||||||
|
import com.volmit.iris.util.matter.slices.container.JigsawPieceContainer;
|
||||||
|
|
||||||
|
import java.io.DataInputStream;
|
||||||
|
import java.io.DataOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
@Sliced
|
||||||
|
public class JigsawStructureMatter extends RawMatter<JigsawPieceContainer> {
|
||||||
|
public JigsawStructureMatter() {
|
||||||
|
this(1,1,1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JigsawStructureMatter(int width, int height, int depth) {
|
||||||
|
super(width, height, depth, JigsawPieceContainer.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Palette<JigsawPieceContainer> getGlobalPalette() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeNode(JigsawPieceContainer b, DataOutputStream dos) throws IOException {
|
||||||
|
dos.writeUTF(b.getLoadKey());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JigsawPieceContainer readNode(DataInputStream din) throws IOException {
|
||||||
|
return new JigsawPieceContainer(din.readUTF());
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
package com.volmit.iris.util.matter.slices.container;
|
||||||
|
|
||||||
|
import com.volmit.iris.engine.object.IrisJigsawStructure;
|
||||||
|
|
||||||
|
public class JigsawStructureContainer extends RegistrantContainer<IrisJigsawStructure> {
|
||||||
|
public JigsawStructureContainer(String loadKey) {
|
||||||
|
super(IrisJigsawStructure.class, loadKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static JigsawStructureContainer toContainer(IrisJigsawStructure structure) {
|
||||||
|
return new JigsawStructureContainer(structure.getLoadKey());
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user