mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-03 16:36:00 +00:00
Fix IrisJigsawPiece tectonic plate panic
This commit is contained in:
parent
1619df1ba3
commit
f25c4c74be
@ -49,6 +49,8 @@ import com.volmit.iris.util.math.RNG;
|
||||
import com.volmit.iris.util.matter.MatterCavern;
|
||||
import com.volmit.iris.util.matter.MatterUpdate;
|
||||
import com.volmit.iris.util.matter.TileWrapper;
|
||||
import com.volmit.iris.util.matter.slices.JigsawPieceMatter;
|
||||
import com.volmit.iris.util.matter.slices.container.JigsawPieceContainer;
|
||||
import com.volmit.iris.util.parallel.BurstExecutor;
|
||||
import com.volmit.iris.util.parallel.MultiBurst;
|
||||
import com.volmit.iris.util.scheduling.ChronoLatch;
|
||||
@ -771,7 +773,7 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
|
||||
|
||||
|
||||
IrisContext.getOr(this);
|
||||
IrisJigsawPiece piece = getMantle().getMantle().get(x, y, z, IrisJigsawPiece.class);
|
||||
IrisJigsawPiece piece = getMantle().getMantle().get(x, y, z, JigsawPieceContainer.class).load(getData());
|
||||
if (piece != null && piece.getObject().equals(object)) {
|
||||
return new PlacedObject(piece.getPlacementOptions(), getData().getObjectLoader().load(object), id, x, z);
|
||||
}
|
||||
|
@ -28,6 +28,8 @@ import com.volmit.iris.engine.object.*;
|
||||
import com.volmit.iris.util.collection.KList;
|
||||
import com.volmit.iris.util.mantle.Mantle;
|
||||
import com.volmit.iris.util.math.RNG;
|
||||
import com.volmit.iris.util.matter.slices.JigsawPieceMatter;
|
||||
import com.volmit.iris.util.matter.slices.container.JigsawPieceContainer;
|
||||
import lombok.Data;
|
||||
import org.bukkit.Axis;
|
||||
import org.bukkit.World;
|
||||
@ -120,6 +122,7 @@ public class PlannedStructure {
|
||||
}
|
||||
|
||||
int id = rng.i(0, Integer.MAX_VALUE);
|
||||
JigsawPieceContainer container = JigsawPieceContainer.toContainer(i.getPiece());
|
||||
vo.place(xx, height, zz, new IObjectPlacer() {
|
||||
@Override
|
||||
public int getHighest(int x, int z, IrisData data) {
|
||||
@ -133,13 +136,13 @@ public class PlannedStructure {
|
||||
|
||||
@Override
|
||||
public void set(int x, int y, int z, BlockData d) {
|
||||
placer.setData(x, y, z, i.getPiece());
|
||||
placer.setData(x, y, z, container);
|
||||
placer.set(x, y, z, d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockData get(int x, int y, int z) {
|
||||
placer.setData(x, y, z, i.getPiece());
|
||||
placer.setData(x, y, z, container);
|
||||
return placer.get(x, y, z);
|
||||
}
|
||||
|
||||
|
@ -1,15 +1,35 @@
|
||||
package com.volmit.iris.util.matter.slices;
|
||||
|
||||
import com.volmit.iris.engine.object.IrisJigsawPiece;
|
||||
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 JigsawPieceMatter extends RegistryMatter<IrisJigsawPiece> {
|
||||
public class JigsawPieceMatter extends RawMatter<JigsawPieceContainer> {
|
||||
public JigsawPieceMatter() {
|
||||
this(1,1,1);
|
||||
}
|
||||
|
||||
public JigsawPieceMatter(int width, int height, int depth) {
|
||||
super(width, height, depth, IrisJigsawPiece.class, new IrisJigsawPiece());
|
||||
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.IrisJigsawPiece;
|
||||
|
||||
public class JigsawPieceContainer extends RegistrantContainer<IrisJigsawPiece> {
|
||||
public JigsawPieceContainer(String loadKey) {
|
||||
super(IrisJigsawPiece.class, loadKey);
|
||||
}
|
||||
|
||||
public static JigsawPieceContainer toContainer(IrisJigsawPiece piece) {
|
||||
return new JigsawPieceContainer(piece.getLoadKey());
|
||||
}
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
package com.volmit.iris.util.matter.slices.container;
|
||||
|
||||
import com.volmit.iris.core.loader.IrisData;
|
||||
import com.volmit.iris.core.loader.IrisRegistrant;
|
||||
|
||||
public abstract class RegistrantContainer<T extends IrisRegistrant> {
|
||||
private final Class<T> type;
|
||||
private final String loadKey;
|
||||
|
||||
public RegistrantContainer(Class<T> type, String loadKey) {
|
||||
this.type = type;
|
||||
this.loadKey = loadKey;
|
||||
}
|
||||
|
||||
public T load(IrisData data) {
|
||||
return (T) data.getLoaders().get(type).load(loadKey);
|
||||
}
|
||||
|
||||
public String getLoadKey() {
|
||||
return loadKey;
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user