mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-10-25 13:30:08 +00:00
Currency Seams
This commit is contained in:
1 parent
1c08eb23b2
commit
4568f0b4b6
2 files changed
+43
-2
No files matched your search
@@ -21,6 +21,7 @@ package art.arcane.iris.platform.bukkit;
|
|||||||
import art.arcane.iris.core.nms.INMS;
|
import art.arcane.iris.core.nms.INMS;
|
||||||
import art.arcane.iris.spi.PlatformBlockState;
|
import art.arcane.iris.spi.PlatformBlockState;
|
||||||
import art.arcane.iris.util.common.data.B;
|
import art.arcane.iris.util.common.data.B;
|
||||||
|
import art.arcane.iris.util.common.data.IrisCustomData;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
|
|
||||||
@@ -37,6 +38,8 @@ public final class BukkitBlockState implements PlatformBlockState {
|
|||||||
private final BlockData data;
|
private final BlockData data;
|
||||||
private final String key;
|
private final String key;
|
||||||
private final String namespace;
|
private final String namespace;
|
||||||
|
private volatile Boolean air;
|
||||||
|
private volatile Boolean solid;
|
||||||
|
|
||||||
private BukkitBlockState(BlockData data, String key) {
|
private BukkitBlockState(BlockData data, String key) {
|
||||||
this.data = data;
|
this.data = data;
|
||||||
@@ -45,10 +48,29 @@ public final class BukkitBlockState implements PlatformBlockState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static BukkitBlockState of(BlockData data) {
|
public static BukkitBlockState of(BlockData data) {
|
||||||
|
if (data instanceof IrisCustomData custom) {
|
||||||
|
return new BukkitBlockState(data, custom.getAsString());
|
||||||
|
}
|
||||||
String key = data.getAsString();
|
String key = data.getAsString();
|
||||||
return CACHE.computeIfAbsent(key, (String k) -> new BukkitBlockState(data, k));
|
return CACHE.computeIfAbsent(key, (String k) -> new BukkitBlockState(data, k));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object other) {
|
||||||
|
if (this == other) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (!(other instanceof BukkitBlockState state)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return data.equals(state.data);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return key.hashCode();
|
||||||
|
}
|
||||||
|
|
||||||
private static String parseNamespace(String key) {
|
private static String parseNamespace(String key) {
|
||||||
String base = key;
|
String base = key;
|
||||||
int bracket = base.indexOf('[');
|
int bracket = base.indexOf('[');
|
||||||
@@ -99,12 +121,22 @@ public final class BukkitBlockState implements PlatformBlockState {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAir() {
|
public boolean isAir() {
|
||||||
return B.isAir(data);
|
Boolean cached = air;
|
||||||
|
if (cached == null) {
|
||||||
|
cached = B.isAir(data);
|
||||||
|
air = cached;
|
||||||
|
}
|
||||||
|
return cached;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isSolid() {
|
public boolean isSolid() {
|
||||||
return B.isSolid(data);
|
Boolean cached = solid;
|
||||||
|
if (cached == null) {
|
||||||
|
cached = B.isSolid(data);
|
||||||
|
solid = cached;
|
||||||
|
}
|
||||||
|
return cached;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -192,6 +192,15 @@ public class B {
|
|||||||
return BASE.get(bdxf);
|
return BASE.get(bdxf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static art.arcane.iris.spi.PlatformBlockState getState(String bdxf) {
|
||||||
|
return art.arcane.iris.platform.bukkit.BukkitBlockState.of(BASE.get(bdxf));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static art.arcane.iris.spi.PlatformBlockState getStateOrNull(String bdxf) {
|
||||||
|
BlockData data = BASE.getOrNull(bdxf);
|
||||||
|
return data == null ? null : art.arcane.iris.platform.bukkit.BukkitBlockState.of(data);
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean isStorage(BlockData mat) {
|
public static boolean isStorage(BlockData mat) {
|
||||||
return BASE.isStorage(mat);
|
return BASE.isStorage(mat);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user