From 93421a1dc967cf5b0b91b0c153e04a5de477e13f Mon Sep 17 00:00:00 2001 From: DanMB Date: Thu, 11 Aug 2022 18:18:00 -0700 Subject: [PATCH 1/4] An attempt --- .../engine/platform/BukkitChunkGenerator.java | 4 +++- .../engine/platform/DummyBiomeProvider.java | 24 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/volmit/iris/engine/platform/DummyBiomeProvider.java diff --git a/src/main/java/com/volmit/iris/engine/platform/BukkitChunkGenerator.java b/src/main/java/com/volmit/iris/engine/platform/BukkitChunkGenerator.java index d12028f25..9d644fcf0 100644 --- a/src/main/java/com/volmit/iris/engine/platform/BukkitChunkGenerator.java +++ b/src/main/java/com/volmit/iris/engine/platform/BukkitChunkGenerator.java @@ -81,12 +81,14 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun private Engine engine; private Looper hotloader; private StudioMode lastMode; + private DummyBiomeProvider dummyBiomeProvider; @Setter private StudioGenerator studioGenerator; public BukkitChunkGenerator(IrisWorld world, boolean studio, File dataLocation, String dimensionKey) { setup = new AtomicBoolean(false); studioGenerator = null; + dummyBiomeProvider = new DummyBiomeProvider(); populators = new KList<>(); loadLock = new Semaphore(LOAD_LOCKS); this.world = world; @@ -368,6 +370,6 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun @Nullable @Override public BiomeProvider getDefaultBiomeProvider(@NotNull WorldInfo worldInfo) { - return null; + return dummyBiomeProvider; } } diff --git a/src/main/java/com/volmit/iris/engine/platform/DummyBiomeProvider.java b/src/main/java/com/volmit/iris/engine/platform/DummyBiomeProvider.java new file mode 100644 index 000000000..206fad782 --- /dev/null +++ b/src/main/java/com/volmit/iris/engine/platform/DummyBiomeProvider.java @@ -0,0 +1,24 @@ +package com.volmit.iris.engine.platform; + +import org.bukkit.block.Biome; +import org.bukkit.generator.BiomeProvider; +import org.bukkit.generator.WorldInfo; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +public class DummyBiomeProvider extends BiomeProvider { + private final List ALL = List.of(Biome.values()); + + @NotNull + @Override + public Biome getBiome(@NotNull WorldInfo worldInfo, int x, int y, int z) { + return Biome.PLAINS; + } + + @NotNull + @Override + public List getBiomes(@NotNull WorldInfo worldInfo) { + return ALL; + } +} From 4d6c092615968eac0b5a4fb09fc12daed2630395 Mon Sep 17 00:00:00 2001 From: Brian Fopiano Date: Thu, 11 Aug 2022 18:34:38 -0700 Subject: [PATCH 2/4] Performance... --- .../com/volmit/iris/engine/platform/DummyBiomeProvider.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/volmit/iris/engine/platform/DummyBiomeProvider.java b/src/main/java/com/volmit/iris/engine/platform/DummyBiomeProvider.java index 206fad782..c453d5a62 100644 --- a/src/main/java/com/volmit/iris/engine/platform/DummyBiomeProvider.java +++ b/src/main/java/com/volmit/iris/engine/platform/DummyBiomeProvider.java @@ -1,5 +1,6 @@ package com.volmit.iris.engine.platform; +import com.volmit.iris.util.collection.KList; import org.bukkit.block.Biome; import org.bukkit.generator.BiomeProvider; import org.bukkit.generator.WorldInfo; @@ -8,7 +9,7 @@ import org.jetbrains.annotations.NotNull; import java.util.List; public class DummyBiomeProvider extends BiomeProvider { - private final List ALL = List.of(Biome.values()); + private final List ALL = new KList<>(Biome.values()).qdel(Biome.CUSTOM); @NotNull @Override From 3a4aac1ee4ddb9e74fb8332769b6a64d04c58514 Mon Sep 17 00:00:00 2001 From: DanMB Date: Fri, 12 Aug 2022 08:05:48 -0700 Subject: [PATCH 3/4] Get all --- .../iris/util/stream/ProceduralStream.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/main/java/com/volmit/iris/util/stream/ProceduralStream.java b/src/main/java/com/volmit/iris/util/stream/ProceduralStream.java index 6f6ba5d0c..c4ac879b4 100644 --- a/src/main/java/com/volmit/iris/util/stream/ProceduralStream.java +++ b/src/main/java/com/volmit/iris/util/stream/ProceduralStream.java @@ -20,6 +20,7 @@ package com.volmit.iris.util.stream; import com.volmit.iris.Iris; import com.volmit.iris.core.loader.IrisData; +import com.volmit.iris.engine.data.cache.Cache; import com.volmit.iris.engine.framework.Engine; import com.volmit.iris.engine.object.IRare; import com.volmit.iris.engine.object.IrisStyledRange; @@ -531,6 +532,21 @@ public interface ProceduralStream extends ProceduralLayer, Interpolated { ProceduralStream getSource(); + default void fillChunk(int x, int z, T[] c) { + if(c.length != 256) { + throw new RuntimeException("Not 256 Length for chunk get"); + } + + int xs = x << 4; + int zs = z << 4; + + for(int i = 0; i < 16; i++) { + for(int j = 0; j < 16; j++) { + c[Cache.to1D(i+xs, j+zs, 0, 16, 16)] = get(i+xs, j+zs); + } + } + } + T get(double x, double z); T get(double x, double y, double z); From 3c759f3b01960833801a3939fd48e04720267add Mon Sep 17 00:00:00 2001 From: Vatuu <21113232+Vatuu@users.noreply.github.com> Date: Sat, 13 Aug 2022 00:37:42 +0200 Subject: [PATCH 4/4] Kinda fixed vine issues with PAINT. --- src/main/java/com/volmit/iris/engine/object/IrisObject.java | 6 ++++-- src/main/java/com/volmit/iris/util/data/B.java | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/volmit/iris/engine/object/IrisObject.java b/src/main/java/com/volmit/iris/engine/object/IrisObject.java index 1a7e65ffd..349a0bc29 100644 --- a/src/main/java/com/volmit/iris/engine/object/IrisObject.java +++ b/src/main/java/com/volmit/iris/engine/object/IrisObject.java @@ -781,7 +781,7 @@ public class IrisObject extends IrisRegistrant { zz += config.warp(rng, i.getZ() + z, i.getY() + y, i.getX() + x, getLoader()); } - if(yv < 0 && (config.getMode().equals(ObjectPlaceMode.PAINT))) { + if(yv < 0 && (config.getMode().equals(ObjectPlaceMode.PAINT)) && !B.isVineBlock(data)) { yy = (int) Math.round(i.getY()) + Math.floorDiv(h, 2) + placer.getHighest(xx, zz, getLoader(), config.isUnderwater()); } @@ -823,7 +823,9 @@ public class IrisObject extends IrisRegistrant { placer.getEngine().getMantle().getMantle().set(xx, yy, zz, new MatterMarker(markers.get(g))); } - if(!data.getMaterial().equals(Material.AIR) && !data.getMaterial().equals(Material.CAVE_AIR)) { + boolean wouldReplace = B.isSolid(placer.get(xx, yy, zz)) && B.isVineBlock(data); + + if(!data.getMaterial().equals(Material.AIR) && !data.getMaterial().equals(Material.CAVE_AIR) && !wouldReplace) { placer.set(xx, yy, zz, data); if(tile != null) { placer.setTile(xx, yy, zz, tile); diff --git a/src/main/java/com/volmit/iris/util/data/B.java b/src/main/java/com/volmit/iris/util/data/B.java index 728977a7f..f74116f1f 100644 --- a/src/main/java/com/volmit/iris/util/data/B.java +++ b/src/main/java/com/volmit/iris/util/data/B.java @@ -405,6 +405,8 @@ public class B { } public static boolean isSolid(BlockData mat) { + if(mat == null) + return false; return mat.getMaterial().isSolid(); }