9
0
mirror of https://github.com/VolmitSoftware/Iris.git synced 2025-12-19 15:09:18 +00:00

fix more unsafe mantle operations

This commit is contained in:
Julian Krings
2025-08-27 00:32:34 +02:00
parent 9c492a2e66
commit 0e0e4075d8
2 changed files with 11 additions and 1 deletions

View File

@@ -220,7 +220,9 @@ public class MantleChunk {
if (matter == null) { if (matter == null) {
matter = new IrisMatter(16, 16, 16); matter = new IrisMatter(16, 16, 16);
sections.set(section, matter); if (!sections.compareAndSet(section, null, matter)) {
matter = get(section);
}
} }
return matter; return matter;

View File

@@ -25,6 +25,8 @@ import com.volmit.iris.util.json.JSONObject;
import com.volmit.iris.util.plugin.VolmitSender; import com.volmit.iris.util.plugin.VolmitSender;
import lombok.Getter; import lombok.Getter;
import java.util.Objects;
public class IrisMatter extends IrisRegistrant implements Matter { public class IrisMatter extends IrisRegistrant implements Matter {
protected static final KMap<Class<?>, MatterSlice<?>> slicers = buildSlicers(); protected static final KMap<Class<?>, MatterSlice<?>> slicers = buildSlicers();
@@ -65,6 +67,12 @@ public class IrisMatter extends IrisRegistrant implements Matter {
return c; return c;
} }
@Override
@SuppressWarnings("unchecked")
public <T> MatterSlice<T> slice(Class<?> c) {
return (MatterSlice<T>) sliceMap.computeIfAbsent(c, $ -> Objects.requireNonNull(createSlice(c, this), "Bad slice " + c.getCanonicalName()));
}
@Override @Override
public <T> MatterSlice<T> createSlice(Class<T> type, Matter m) { public <T> MatterSlice<T> createSlice(Class<T> type, Matter m) {
MatterSlice<?> slice = slicers.get(type); MatterSlice<?> slice = slicers.get(type);