diff --git a/src/main/java/com/volmit/iris/util/matter/MatterSlice.java b/src/main/java/com/volmit/iris/util/matter/MatterSlice.java index a5919ac23..5cba77059 100644 --- a/src/main/java/com/volmit/iris/util/matter/MatterSlice.java +++ b/src/main/java/com/volmit/iris/util/matter/MatterSlice.java @@ -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 extends Hunk { +public interface MatterSlice extends Hunk, PaletteType { Class getType(); + Palette 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 filter) { updateSync(filter::update); } diff --git a/src/main/java/com/volmit/iris/util/matter/slices/BiomeMatter.java b/src/main/java/com/volmit/iris/util/matter/slices/BiomeMatter.java index 520a0206c..3f5ff39f2 100644 --- a/src/main/java/com/volmit/iris/util/matter/slices/BiomeMatter.java +++ b/src/main/java/com/volmit/iris/util/matter/slices/BiomeMatter.java @@ -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 { @@ -27,6 +29,11 @@ public class BiomeMatter extends RegistryMatter { this(1, 1, 1); } + @Override + public Palette getGlobalPalette() { + return null; + } + public BiomeMatter(int width, int height, int depth) { super(width, height, depth, IrisBiome.class); } diff --git a/src/main/java/com/volmit/iris/util/matter/slices/BlockMatter.java b/src/main/java/com/volmit/iris/util/matter/slices/BlockMatter.java index 5790e758a..0acc3257d 100644 --- a/src/main/java/com/volmit/iris/util/matter/slices/BlockMatter.java +++ b/src/main/java/com/volmit/iris/util/matter/slices/BlockMatter.java @@ -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 { this(1, 1, 1); } + @Override + public Palette 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))); diff --git a/src/main/java/com/volmit/iris/util/matter/slices/BooleanMatter.java b/src/main/java/com/volmit/iris/util/matter/slices/BooleanMatter.java index 75bd83e81..4d0211e10 100644 --- a/src/main/java/com/volmit/iris/util/matter/slices/BooleanMatter.java +++ b/src/main/java/com/volmit/iris/util/matter/slices/BooleanMatter.java @@ -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 { this(1, 1, 1); } + @Override + public Palette getGlobalPalette() { + return null; + } + public BooleanMatter(int width, int height, int depth) { super(width, height, depth, Boolean.class); } diff --git a/src/main/java/com/volmit/iris/util/matter/slices/CavernMatter.java b/src/main/java/com/volmit/iris/util/matter/slices/CavernMatter.java index 8ed8cf38c..04c4ecd30 100644 --- a/src/main/java/com/volmit/iris/util/matter/slices/CavernMatter.java +++ b/src/main/java/com/volmit/iris/util/matter/slices/CavernMatter.java @@ -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 { this(1, 1, 1); } + @Override + public Palette getGlobalPalette() { + return null; + } + public CavernMatter(int width, int height, int depth) { super(width, height, depth, MatterCavern.class); } diff --git a/src/main/java/com/volmit/iris/util/matter/slices/EntityMatter.java b/src/main/java/com/volmit/iris/util/matter/slices/EntityMatter.java index de7934cae..c24f711e1 100644 --- a/src/main/java/com/volmit/iris/util/matter/slices/EntityMatter.java +++ b/src/main/java/com/volmit/iris/util/matter/slices/EntityMatter.java @@ -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 { this(1, 1, 1); } + @Override + public Palette 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) -> { diff --git a/src/main/java/com/volmit/iris/util/matter/slices/FluidBodyMatter.java b/src/main/java/com/volmit/iris/util/matter/slices/FluidBodyMatter.java index 3d12eb428..32c285f4a 100644 --- a/src/main/java/com/volmit/iris/util/matter/slices/FluidBodyMatter.java +++ b/src/main/java/com/volmit/iris/util/matter/slices/FluidBodyMatter.java @@ -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 { this(1, 1, 1); } + @Override + public Palette getGlobalPalette() { + return null; + } + public FluidBodyMatter(int width, int height, int depth) { super(width, height, depth, MatterFluidBody.class); } diff --git a/src/main/java/com/volmit/iris/util/matter/slices/IntMatter.java b/src/main/java/com/volmit/iris/util/matter/slices/IntMatter.java index a50f6ed6d..51d366e98 100644 --- a/src/main/java/com/volmit/iris/util/matter/slices/IntMatter.java +++ b/src/main/java/com/volmit/iris/util/matter/slices/IntMatter.java @@ -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 { this(1, 1, 1); } + @Override + public Palette getGlobalPalette() { + return null; + } + public IntMatter(int width, int height, int depth) { super(width, height, depth, Integer.class); } diff --git a/src/main/java/com/volmit/iris/util/matter/slices/LongMatter.java b/src/main/java/com/volmit/iris/util/matter/slices/LongMatter.java index 56c20f516..4a3dbd3a5 100644 --- a/src/main/java/com/volmit/iris/util/matter/slices/LongMatter.java +++ b/src/main/java/com/volmit/iris/util/matter/slices/LongMatter.java @@ -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 { this(1, 1, 1); } + @Override + public Palette getGlobalPalette() { + return null; + } + public LongMatter(int width, int height, int depth) { super(width, height, depth, Long.class); } diff --git a/src/main/java/com/volmit/iris/util/matter/slices/MarkerMatter.java b/src/main/java/com/volmit/iris/util/matter/slices/MarkerMatter.java index e5cbd6fc2..456ad44d1 100644 --- a/src/main/java/com/volmit/iris/util/matter/slices/MarkerMatter.java +++ b/src/main/java/com/volmit/iris/util/matter/slices/MarkerMatter.java @@ -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 { this(1, 1, 1); } + @Override + public Palette getGlobalPalette() { + return null; + } + public MarkerMatter(int width, int height, int depth) { super(width, height, depth, MatterMarker.class); } diff --git a/src/main/java/com/volmit/iris/util/matter/slices/NBTMatter.java b/src/main/java/com/volmit/iris/util/matter/slices/NBTMatter.java index e7d18d09a..33b5e90ed 100644 --- a/src/main/java/com/volmit/iris/util/matter/slices/NBTMatter.java +++ b/src/main/java/com/volmit/iris/util/matter/slices/NBTMatter.java @@ -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> extends RawMatter { super(width, height, depth, c); } + @Override + public Palette getGlobalPalette() { + return null; + } + @Override public void writeNode(T b, DataOutputStream dos) throws IOException { NBTUtil.write(b, dos, false); diff --git a/src/main/java/com/volmit/iris/util/matter/slices/PlayerMatter.java b/src/main/java/com/volmit/iris/util/matter/slices/PlayerMatter.java index f298a4335..f8320c634 100644 --- a/src/main/java/com/volmit/iris/util/matter/slices/PlayerMatter.java +++ b/src/main/java/com/volmit/iris/util/matter/slices/PlayerMatter.java @@ -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 { this(1, 1, 1); } + @Override + public Palette getGlobalPalette() { + return null; + } + public PlayerMatter(int width, int height, int depth) { super(width, height, depth, Player.class); } diff --git a/src/main/java/com/volmit/iris/util/matter/slices/RegistryMatter.java b/src/main/java/com/volmit/iris/util/matter/slices/RegistryMatter.java index 8a343b2af..8f4158717 100644 --- a/src/main/java/com/volmit/iris/util/matter/slices/RegistryMatter.java +++ b/src/main/java/com/volmit/iris/util/matter/slices/RegistryMatter.java @@ -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 extends RawMatter { super(width, height, depth, c); } + @Override + public Palette getGlobalPalette() { + return null; + } + @Override public void writeNode(T b, DataOutputStream dos) throws IOException { dos.writeUTF(b.getLoadKey()); diff --git a/src/main/java/com/volmit/iris/util/matter/slices/StringMatter.java b/src/main/java/com/volmit/iris/util/matter/slices/StringMatter.java index 4646a8f4e..6af11b595 100644 --- a/src/main/java/com/volmit/iris/util/matter/slices/StringMatter.java +++ b/src/main/java/com/volmit/iris/util/matter/slices/StringMatter.java @@ -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 { super(width, height, depth, String.class); } + @Override + public Palette getGlobalPalette() { + return null; + } + @Override public void writeNode(String b, DataOutputStream dos) throws IOException { dos.writeUTF(b); diff --git a/src/main/java/com/volmit/iris/util/matter/slices/TileMatter.java b/src/main/java/com/volmit/iris/util/matter/slices/TileMatter.java index ad79dc32c..ed68daf1b 100644 --- a/src/main/java/com/volmit/iris/util/matter/slices/TileMatter.java +++ b/src/main/java/com/volmit/iris/util/matter/slices/TileMatter.java @@ -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 { this(1, 1, 1); } + @Override + public Palette 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)))); diff --git a/src/main/java/com/volmit/iris/util/matter/slices/UpdateMatter.java b/src/main/java/com/volmit/iris/util/matter/slices/UpdateMatter.java index 31ec595f9..cba6fefb7 100644 --- a/src/main/java/com/volmit/iris/util/matter/slices/UpdateMatter.java +++ b/src/main/java/com/volmit/iris/util/matter/slices/UpdateMatter.java @@ -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 { public static final MatterUpdate ON = new MatterUpdate(true); public static final MatterUpdate OFF = new MatterUpdate(false); + private static final Palette GLOBAL = new GlobalPalette<>(OFF, ON); public UpdateMatter() { this(1, 1, 1); } + @Override + public Palette getGlobalPalette() { + return GLOBAL; + } + public UpdateMatter(int width, int height, int depth) { super(width, height, depth, MatterUpdate.class); }