Matter utilities

This commit is contained in:
Daniel Mills 2021-08-07 08:15:03 -04:00
parent 803dfed9f7
commit 600995a220
2 changed files with 21 additions and 1 deletions

View File

@ -23,7 +23,7 @@ import com.volmit.iris.util.collection.KMap;
import lombok.Getter; import lombok.Getter;
public class IrisMatter implements Matter { public class IrisMatter implements Matter {
private static final KMap<Class<?>, MatterSlice<?>> slicers = buildSlicers(); protected static final KMap<Class<?>, MatterSlice<?>> slicers = buildSlicers();
@Getter @Getter
private final MatterHeader header; private final MatterHeader header;

View File

@ -18,11 +18,16 @@
package com.volmit.iris.util.matter; package com.volmit.iris.util.matter;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.object.basic.IrisPosition; import com.volmit.iris.engine.object.basic.IrisPosition;
import com.volmit.iris.util.collection.KSet; import com.volmit.iris.util.collection.KSet;
import com.volmit.iris.util.data.Varint; import com.volmit.iris.util.data.Varint;
import com.volmit.iris.util.format.C;
import com.volmit.iris.util.hunk.Hunk; import com.volmit.iris.util.hunk.Hunk;
import com.volmit.iris.util.math.BlockPosition; import com.volmit.iris.util.math.BlockPosition;
import org.bukkit.World;
import org.bukkit.block.data.BlockData;
import org.bukkit.entity.Entity;
import javax.xml.crypto.Data; import javax.xml.crypto.Data;
import java.io.*; import java.io.*;
@ -167,11 +172,26 @@ public interface Matter {
return (MatterSlice<T>) getSliceMap().put(c, slice); return (MatterSlice<T>) getSliceMap().put(c, slice);
} }
default Class<?> getClass(Object w) {
Class<?> c = w.getClass();
if (w instanceof World) {
c = World.class;
} else if (w instanceof BlockData) {
c = BlockData.class;
} else if (w instanceof Entity) {
c = Entity.class;
}
return c;
}
default <T> MatterSlice<T> slice(Class<?> c) { default <T> MatterSlice<T> slice(Class<?> c) {
if (!hasSlice(c)) { if (!hasSlice(c)) {
MatterSlice<?> s = createSlice(c, this); MatterSlice<?> s = createSlice(c, this);
if (s == null) { if (s == null) {
Iris.error("Unable to find a slice for class " + C.DARK_RED + c.getCanonicalName());
return null; return null;
} }