From 46f533ca9d273aa265cb58be8f02c50784fdd865 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Wed, 25 Jun 2025 00:38:24 -0600 Subject: [PATCH] Perf opts --- .../biome/extrusion/BiomeExtrusionProvider.java | 8 ++++---- .../com/dfsek/terra/api/properties/Context.java | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/BiomeExtrusionProvider.java b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/BiomeExtrusionProvider.java index 621c2d37a..bc658c8ca 100644 --- a/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/BiomeExtrusionProvider.java +++ b/common/addons/biome-provider-extrusion/src/main/java/com/dfsek/terra/addons/biome/extrusion/BiomeExtrusionProvider.java @@ -14,14 +14,14 @@ import com.dfsek.terra.api.world.biome.generation.BiomeProvider; public class BiomeExtrusionProvider implements BiomeProvider { private final BiomeProvider delegate; private final Set biomes; - private final List extrusions; + private final Extrusion[] extrusions; private final int resolution; public BiomeExtrusionProvider(BiomeProvider delegate, List extrusions, int resolution) { this.delegate = delegate; this.biomes = delegate.stream().collect(Collectors.toSet()); extrusions.forEach(e -> biomes.addAll(e.getBiomes())); - this.extrusions = extrusions; + this.extrusions = extrusions.toArray(new Extrusion[0]); this.resolution = resolution; } @@ -33,8 +33,8 @@ public class BiomeExtrusionProvider implements BiomeProvider { } public Biome extrude(Biome original, int x, int y, int z, long seed) { - for(Extrusion extrusion : extrusions) { - original = extrusion.extrude(original, x, y, z, seed); + for(int i = 0; i < extrusions.length; i++) { + original = extrusions[i].extrude(original, x, y, z, seed); } return original; } diff --git a/common/api/src/main/java/com/dfsek/terra/api/properties/Context.java b/common/api/src/main/java/com/dfsek/terra/api/properties/Context.java index b840711f0..e5660d537 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/properties/Context.java +++ b/common/api/src/main/java/com/dfsek/terra/api/properties/Context.java @@ -17,7 +17,7 @@ public class Context { private static final AtomicInteger size = new AtomicInteger(0); private static final Map, PropertyKey> properties = new HashMap<>(); private final Map, Properties> map = new HashMap<>(); - private final AtomicReference list = new AtomicReference<>(new Properties[size.get()]); + private Properties[] list = new Properties[size.get()]; @SuppressWarnings("unchecked") public static PropertyKey create(Class clazz) { @@ -38,19 +38,19 @@ public class Context { return this; } - public Context put(PropertyKey key, T properties) { - list.updateAndGet(p -> { - if(p.length == size.get()) return p; + public synchronized Context put(PropertyKey key, T properties) { + if(list.length != size.get()) { Properties[] p2 = new Properties[size.get()]; - System.arraycopy(p, 0, p2, 0, p.length); - return p2; - })[key.key] = properties; + System.arraycopy(list, 0, p2, 0, list.length); + list = p2; + } + list[key.key] = properties; return this; } @SuppressWarnings("unchecked") public T get(PropertyKey key) { - return (T) list.get()[key.key]; + return (T) list[key.key]; } public boolean has(Class test) {