Slice support palettes

This commit is contained in:
cyberpwn 2021-09-22 06:25:23 -04:00
parent ee542abb5d
commit 7186afda93
16 changed files with 120 additions and 1 deletions

View File

@ -20,6 +20,8 @@ package com.volmit.iris.util.matter;
import com.volmit.iris.engine.data.cache.Cache;
import com.volmit.iris.util.data.Varint;
import com.volmit.iris.util.data.palette.Palette;
import com.volmit.iris.util.data.palette.PaletteType;
import com.volmit.iris.util.hunk.Hunk;
import org.bukkit.Location;
import org.bukkit.World;
@ -31,9 +33,21 @@ import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
public interface MatterSlice<T> extends Hunk<T> {
public interface MatterSlice<T> extends Hunk<T>, PaletteType<T> {
Class<T> getType();
Palette<T> getGlobalPalette();
@Override
default void writePaletteNode(DataOutputStream dos, T s) throws IOException {
writeNode(s, dos);
}
@Override
default T readPaletteNode(DataInputStream din) throws IOException {
return readNode(din);
}
default void applyFilter(MatterFilter<T> filter) {
updateSync(filter::update);
}

View File

@ -19,7 +19,9 @@
package com.volmit.iris.util.matter.slices;
import com.volmit.iris.engine.object.IrisBiome;
import com.volmit.iris.util.data.palette.Palette;
import com.volmit.iris.util.matter.Sliced;
import org.bukkit.entity.Player;
@Sliced
public class BiomeMatter extends RegistryMatter<IrisBiome> {
@ -27,6 +29,11 @@ public class BiomeMatter extends RegistryMatter<IrisBiome> {
this(1, 1, 1);
}
@Override
public Palette<IrisBiome> getGlobalPalette() {
return null;
}
public BiomeMatter(int width, int height, int depth) {
super(width, height, depth, IrisBiome.class);
}

View File

@ -19,9 +19,11 @@
package com.volmit.iris.util.matter.slices;
import com.volmit.iris.util.data.B;
import com.volmit.iris.util.data.palette.Palette;
import com.volmit.iris.util.matter.Sliced;
import org.bukkit.World;
import org.bukkit.block.data.BlockData;
import org.bukkit.entity.Player;
import java.io.DataInputStream;
import java.io.DataOutputStream;
@ -33,6 +35,11 @@ public class BlockMatter extends RawMatter<BlockData> {
this(1, 1, 1);
}
@Override
public Palette<BlockData> getGlobalPalette() {
return null;
}
public BlockMatter(int width, int height, int depth) {
super(width, height, depth, BlockData.class);
registerWriter(World.class, ((w, d, x, y, z) -> w.getBlockAt(x, y, z).setBlockData(d)));

View File

@ -18,7 +18,9 @@
package com.volmit.iris.util.matter.slices;
import com.volmit.iris.util.data.palette.Palette;
import com.volmit.iris.util.matter.Sliced;
import org.bukkit.entity.Player;
import java.io.DataInputStream;
import java.io.DataOutputStream;
@ -30,6 +32,11 @@ public class BooleanMatter extends RawMatter<Boolean> {
this(1, 1, 1);
}
@Override
public Palette<Boolean> getGlobalPalette() {
return null;
}
public BooleanMatter(int width, int height, int depth) {
super(width, height, depth, Boolean.class);
}

View File

@ -18,8 +18,10 @@
package com.volmit.iris.util.matter.slices;
import com.volmit.iris.util.data.palette.Palette;
import com.volmit.iris.util.matter.MatterCavern;
import com.volmit.iris.util.matter.Sliced;
import org.bukkit.entity.Player;
import java.io.DataInputStream;
import java.io.DataOutputStream;
@ -31,6 +33,11 @@ public class CavernMatter extends RawMatter<MatterCavern> {
this(1, 1, 1);
}
@Override
public Palette<MatterCavern> getGlobalPalette() {
return null;
}
public CavernMatter(int width, int height, int depth) {
super(width, height, depth, MatterCavern.class);
}

View File

@ -23,6 +23,7 @@ import com.volmit.iris.engine.object.IrisPosition;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.collection.KMap;
import com.volmit.iris.util.data.Varint;
import com.volmit.iris.util.data.palette.Palette;
import com.volmit.iris.util.matter.MatterEntity;
import com.volmit.iris.util.matter.MatterEntityGroup;
import com.volmit.iris.util.matter.MatterReader;
@ -32,6 +33,7 @@ import com.volmit.iris.util.nbt.tag.CompoundTag;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.util.BoundingBox;
import java.io.DataInputStream;
@ -46,6 +48,11 @@ public class EntityMatter extends RawMatter<MatterEntityGroup> {
this(1, 1, 1);
}
@Override
public Palette<MatterEntityGroup> getGlobalPalette() {
return null;
}
public EntityMatter(int width, int height, int depth) {
super(width, height, depth, MatterEntityGroup.class);
registerWriter(World.class, ((w, d, x, y, z) -> {

View File

@ -18,8 +18,10 @@
package com.volmit.iris.util.matter.slices;
import com.volmit.iris.util.data.palette.Palette;
import com.volmit.iris.util.matter.MatterFluidBody;
import com.volmit.iris.util.matter.Sliced;
import org.bukkit.entity.Player;
import java.io.DataInputStream;
import java.io.DataOutputStream;
@ -31,6 +33,11 @@ public class FluidBodyMatter extends RawMatter<MatterFluidBody> {
this(1, 1, 1);
}
@Override
public Palette<MatterFluidBody> getGlobalPalette() {
return null;
}
public FluidBodyMatter(int width, int height, int depth) {
super(width, height, depth, MatterFluidBody.class);
}

View File

@ -19,7 +19,9 @@
package com.volmit.iris.util.matter.slices;
import com.volmit.iris.util.data.Varint;
import com.volmit.iris.util.data.palette.Palette;
import com.volmit.iris.util.matter.Sliced;
import org.bukkit.entity.Player;
import java.io.DataInputStream;
import java.io.DataOutputStream;
@ -31,6 +33,11 @@ public class IntMatter extends RawMatter<Integer> {
this(1, 1, 1);
}
@Override
public Palette<Integer> getGlobalPalette() {
return null;
}
public IntMatter(int width, int height, int depth) {
super(width, height, depth, Integer.class);
}

View File

@ -19,7 +19,9 @@
package com.volmit.iris.util.matter.slices;
import com.volmit.iris.util.data.Varint;
import com.volmit.iris.util.data.palette.Palette;
import com.volmit.iris.util.matter.Sliced;
import org.bukkit.entity.Player;
import java.io.DataInputStream;
import java.io.DataOutputStream;
@ -31,6 +33,11 @@ public class LongMatter extends RawMatter<Long> {
this(1, 1, 1);
}
@Override
public Palette<Long> getGlobalPalette() {
return null;
}
public LongMatter(int width, int height, int depth) {
super(width, height, depth, Long.class);
}

View File

@ -19,8 +19,10 @@
package com.volmit.iris.util.matter.slices;
import com.volmit.iris.util.collection.KMap;
import com.volmit.iris.util.data.palette.Palette;
import com.volmit.iris.util.matter.MatterMarker;
import com.volmit.iris.util.matter.Sliced;
import org.bukkit.entity.Player;
import java.io.DataInputStream;
import java.io.DataOutputStream;
@ -36,6 +38,11 @@ public class MarkerMatter extends RawMatter<MatterMarker> {
this(1, 1, 1);
}
@Override
public Palette<MatterMarker> getGlobalPalette() {
return null;
}
public MarkerMatter(int width, int height, int depth) {
super(width, height, depth, MatterMarker.class);
}

View File

@ -18,8 +18,10 @@
package com.volmit.iris.util.matter.slices;
import com.volmit.iris.util.data.palette.Palette;
import com.volmit.iris.util.nbt.io.NBTUtil;
import com.volmit.iris.util.nbt.tag.Tag;
import org.bukkit.entity.Player;
import java.io.DataInputStream;
import java.io.DataOutputStream;
@ -30,6 +32,11 @@ public class NBTMatter<T extends Tag<?>> extends RawMatter<T> {
super(width, height, depth, c);
}
@Override
public Palette<T> getGlobalPalette() {
return null;
}
@Override
public void writeNode(T b, DataOutputStream dos) throws IOException {
NBTUtil.write(b, dos, false);

View File

@ -19,6 +19,8 @@
package com.volmit.iris.util.matter.slices;
import com.volmit.iris.util.data.Varint;
import com.volmit.iris.util.data.palette.Palette;
import com.volmit.iris.util.matter.MatterTile;
import com.volmit.iris.util.matter.Sliced;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
@ -34,6 +36,11 @@ public class PlayerMatter extends RawMatter<Player> {
this(1, 1, 1);
}
@Override
public Palette<Player> getGlobalPalette() {
return null;
}
public PlayerMatter(int width, int height, int depth) {
super(width, height, depth, Player.class);
}

View File

@ -20,6 +20,8 @@ package com.volmit.iris.util.matter.slices;
import com.volmit.iris.core.loader.IrisRegistrant;
import com.volmit.iris.util.context.IrisContext;
import com.volmit.iris.util.data.palette.Palette;
import com.volmit.iris.util.matter.MatterTile;
import java.io.DataInputStream;
import java.io.DataOutputStream;
@ -30,6 +32,11 @@ public class RegistryMatter<T extends IrisRegistrant> extends RawMatter<T> {
super(width, height, depth, c);
}
@Override
public Palette<T> getGlobalPalette() {
return null;
}
@Override
public void writeNode(T b, DataOutputStream dos) throws IOException {
dos.writeUTF(b.getLoadKey());

View File

@ -18,6 +18,7 @@
package com.volmit.iris.util.matter.slices;
import com.volmit.iris.util.data.palette.Palette;
import com.volmit.iris.util.matter.Sliced;
import java.io.DataInputStream;
@ -34,6 +35,11 @@ public class StringMatter extends RawMatter<String> {
super(width, height, depth, String.class);
}
@Override
public Palette<String> getGlobalPalette() {
return null;
}
@Override
public void writeNode(String b, DataOutputStream dos) throws IOException {
dos.writeUTF(b);

View File

@ -19,6 +19,7 @@
package com.volmit.iris.util.matter.slices;
import com.volmit.iris.core.nms.INMS;
import com.volmit.iris.util.data.palette.Palette;
import com.volmit.iris.util.matter.MatterTile;
import com.volmit.iris.util.matter.Sliced;
import com.volmit.iris.util.nbt.io.NBTUtil;
@ -36,6 +37,11 @@ public class TileMatter extends RawMatter<MatterTile> {
this(1, 1, 1);
}
@Override
public Palette<MatterTile> getGlobalPalette() {
return null;
}
public TileMatter(int width, int height, int depth) {
super(width, height, depth, MatterTile.class);
registerWriter(World.class, ((w, d, x, y, z) -> INMS.get().deserializeTile(d.getTileData(), new Location(w, x, y, z))));

View File

@ -18,6 +18,9 @@
package com.volmit.iris.util.matter.slices;
import com.volmit.iris.util.data.palette.GlobalPalette;
import com.volmit.iris.util.data.palette.Palette;
import com.volmit.iris.util.matter.MatterTile;
import com.volmit.iris.util.matter.MatterUpdate;
import com.volmit.iris.util.matter.Sliced;
@ -29,11 +32,17 @@ import java.io.IOException;
public class UpdateMatter extends RawMatter<MatterUpdate> {
public static final MatterUpdate ON = new MatterUpdate(true);
public static final MatterUpdate OFF = new MatterUpdate(false);
private static final Palette<MatterUpdate> GLOBAL = new GlobalPalette<>(OFF, ON);
public UpdateMatter() {
this(1, 1, 1);
}
@Override
public Palette<MatterUpdate> getGlobalPalette() {
return GLOBAL;
}
public UpdateMatter(int width, int height, int depth) {
super(width, height, depth, MatterUpdate.class);
}