diff --git a/build.gradle b/build.gradle index b66784e55..015ab9b4d 100644 --- a/build.gradle +++ b/build.gradle @@ -44,6 +44,7 @@ registerCustomOutputTask('Strange', 'D://Servers/1.17 Test Server/plugins') registerCustomOutputTask('Vatuu', 'D://Minecraft/Servers/1.19.4/plugins') registerCustomOutputTask('CrazyDev22', 'C://Users/Julian/Desktop/server/plugins') registerCustomOutputTask('Pixel', 'D://Iris Dimension Engine/1.20.4 - Development/plugins') +registerCustomOutputTask('PixelFury', 'C://Users/RePixelatedMC/Iris/1.21 - Render/plugins') // ========================== UNIX ============================== registerCustomOutputTaskUnix('CyberpwnLT', '/Users/danielmills/development/server/plugins') registerCustomOutputTaskUnix('PsychoLT', '/Users/brianfopiano/Developer/RemoteGit/Server/plugins') diff --git a/core/src/main/java/com/volmit/iris/engine/actuator/IrisTerrainNormalActuator.java b/core/src/main/java/com/volmit/iris/engine/actuator/IrisTerrainNormalActuator.java index d385a5f99..182343c75 100644 --- a/core/src/main/java/com/volmit/iris/engine/actuator/IrisTerrainNormalActuator.java +++ b/core/src/main/java/com/volmit/iris/engine/actuator/IrisTerrainNormalActuator.java @@ -18,6 +18,7 @@ package com.volmit.iris.engine.actuator; +import com.volmit.iris.Iris; import com.volmit.iris.core.nms.IMemoryWorld; import com.volmit.iris.core.nms.INMS; import com.volmit.iris.engine.framework.Engine; @@ -32,13 +33,15 @@ import com.volmit.iris.util.math.RNG; import com.volmit.iris.util.misc.E; import com.volmit.iris.util.scheduling.PrecisionStopwatch; import lombok.Getter; -import org.bukkit.Chunk; -import org.bukkit.Material; -import org.bukkit.World; -import org.bukkit.WorldCreator; +import org.bukkit.*; import org.bukkit.block.Block; import org.bukkit.block.data.BlockData; import org.bukkit.generator.ChunkGenerator; +import org.bukkit.packs.DataPack; +import org.bukkit.packs.DataPackManager; + +import javax.annotation.Nullable; +import java.util.Collection; public class IrisTerrainNormalActuator extends EngineAssignedActuator { private static final BlockData AIR = Material.AIR.createBlockData(); @@ -56,9 +59,15 @@ public class IrisTerrainNormalActuator extends EngineAssignedActuator public IrisTerrainNormalActuator(Engine engine) { super(engine, "Terrain"); rng = new RNG(engine.getSeedManager().getTerrain()); - if (memoryWorld != null) { + boolean debug = getDimension().getMerger().isDatapackMode(); + if (!getDimension().getMerger().getGenerator().isBlank()) { try { - this.memoryWorld = INMS.get().createMemoryWorld(new WorldCreator("terrain").generator(getEngine().getDimension().getMerger().getGenerator())); + if (!getDimension().getMerger().isDatapackMode()) { + this.memoryWorld = INMS.get().createMemoryWorld(new WorldCreator("terrain").generator(getEngine().getDimension().getMerger().getGenerator())); + } else { + String test = getDimension().getMerger().getGenerator().toLowerCase(); + this.memoryWorld = INMS.get().createMemoryWorld(NamespacedKey.minecraft(test), new WorldCreator("terrain")); + } } catch (Exception e) { e.printStackTrace(); } @@ -69,17 +78,19 @@ public class IrisTerrainNormalActuator extends EngineAssignedActuator @Override public void onActuate(int x, int z, Hunk h, boolean multicore, ChunkContext context) { PrecisionStopwatch p = PrecisionStopwatch.start(); + Hunk hm = null; if (memoryWorld != null) { - Hunk hm = toHunk(memoryWorld.getChunkData(x,z)); + hm = toHunk(memoryWorld.getChunkData(x, z)); } for (int xf = 0; xf < h.getWidth(); xf++) { - terrainSliver(x, z, xf, h, context); + terrainSliver(x, z, xf, h, hm, context); } getEngine().getMetrics().getTerrain().put(p.getMilliseconds()); } + private int fluidOrHeight(int height) { return Math.max(getDimension().getFluidHeight(), height); } @@ -93,7 +104,7 @@ public class IrisTerrainNormalActuator extends EngineAssignedActuator * @param h the blockdata */ @BlockCoordinates - public void terrainSliver(int x, int z, int xf, Hunk h, ChunkContext context) { + public void terrainSliver(int x, int z, int xf, Hunk h, @Nullable Hunk hm, ChunkContext context) { int zf, realX, realZ, hf, he; IrisBiome biome; IrisRegion region; @@ -158,13 +169,18 @@ public class IrisTerrainNormalActuator extends EngineAssignedActuator continue; } + // Merger DEV CODE + if (hm != null) { + h.set(xf, i, zf, hm.get(xf, i, zf)); + } + BlockData ore = biome.generateOres(realX, i, realZ, rng, getData()); ore = ore == null ? region.generateOres(realX, i, realZ, rng, getData()) : ore; ore = ore == null ? getDimension().generateOres(realX, i, realZ, rng, getData()) : ore; if (ore != null) { h.set(xf, i, zf, ore); - } else { + } else if (hm == null) { // todo remove this ( TEMP ) if (getDimension().isDeepslateLayer() && i < 64) { h.set(xf, i, zf, DEEPSLATE); @@ -176,24 +192,6 @@ public class IrisTerrainNormalActuator extends EngineAssignedActuator } } } - /** - * Merges caves from a selected chunk into the corresponding chunk in the outcome world. - * This is calling 1/16th of a chunk x/z slice. It is a plane from sky to bedrock 1 thick in the x direction. - * - * @param x the chunk x in blocks - * @param z the chunk z in blocks - * @param xf the current x slice - * @param h the blockdata - */ - @BlockCoordinates - private void terrainMergeSliver(int x, int z, int xf, Hunk h, ChunkContext context) { - int zf, realX, realZ, hf, he; - - for (zf = 0; zf < h.getDepth(); zf++) { - - - } - } private Hunk toHunk(ChunkGenerator.ChunkData data) { Hunk h = Hunk.newArrayHunk(16, memoryWorld.getBukkit().getMaxHeight(), 16); diff --git a/core/src/main/java/com/volmit/iris/engine/object/IrisMerger.java b/core/src/main/java/com/volmit/iris/engine/object/IrisMerger.java index e944bc457..e32c1ab1f 100644 --- a/core/src/main/java/com/volmit/iris/engine/object/IrisMerger.java +++ b/core/src/main/java/com/volmit/iris/engine/object/IrisMerger.java @@ -1,15 +1,20 @@ package com.volmit.iris.engine.object; +import com.volmit.iris.engine.framework.Engine; import com.volmit.iris.engine.object.annotations.ArrayType; import com.volmit.iris.engine.object.annotations.Desc; import com.volmit.iris.engine.platform.BukkitChunkGenerator; import com.volmit.iris.util.collection.KList; +import com.volmit.iris.util.context.ChunkContext; +import com.volmit.iris.util.documentation.BlockCoordinates; +import com.volmit.iris.util.hunk.Hunk; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; import org.bukkit.World; +import org.bukkit.block.data.BlockData; @AllArgsConstructor @NoArgsConstructor @@ -19,9 +24,37 @@ public class IrisMerger { @Desc("Selected Generator") private String generator; + @Desc("Uses the generator as a datapack key") + private boolean datapackMode; + @Desc("Merging strategy") private IrisMergeStrategies mode; + /** + * Merges caves from a selected chunk into the corresponding chunk in the outcome world. + * This is calling 1/16th of a chunk x/z slice. It is a plane from sky to bedrock 1 thick in the x direction. + * + * @param x the chunk x in blocks + * @param z the chunk z in blocks + * @param xf the current x slice + * @param h the blockdata + */ + @BlockCoordinates + private void terrainMergeSliver(int x, int z, int xf, Hunk h, Engine engine) { + int zf, realX, realZ, hf, he; + + for (zf = 0; zf < h.getDepth(); zf++) { + realX = xf + x; + realZ = zf + z; + + for (int i = h.getHeight(); i >= 0; i--) { + + + } + + + } + } } diff --git a/nms/v1_20_R3/src/main/java/com/volmit/iris/core/nms/v1_20_R3/NMSBinding.java b/nms/v1_20_R3/src/main/java/com/volmit/iris/core/nms/v1_20_R3/NMSBinding.java index 752eb05d8..4a105c5e8 100644 --- a/nms/v1_20_R3/src/main/java/com/volmit/iris/core/nms/v1_20_R3/NMSBinding.java +++ b/nms/v1_20_R3/src/main/java/com/volmit/iris/core/nms/v1_20_R3/NMSBinding.java @@ -20,6 +20,7 @@ import net.minecraft.nbt.*; import net.minecraft.nbt.Tag; import net.minecraft.server.commands.data.BlockDataAccessor; import net.minecraft.tags.TagKey; +import net.minecraft.world.level.DataPackConfig; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.EntityBlock; import org.bukkit.*; @@ -39,6 +40,8 @@ import org.bukkit.entity.Entity; import org.bukkit.event.entity.CreatureSpawnEvent; import org.bukkit.generator.ChunkGenerator; import org.bukkit.inventory.ItemStack; +import org.bukkit.packs.DataPack; +import org.bukkit.packs.DataPackManager; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull;