This commit is contained in:
RePixelatedMC 2024-10-14 12:24:10 +02:00
parent 36b99ae4b0
commit 3f994c18ff
5 changed files with 19 additions and 19 deletions

View File

@ -44,7 +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')
registerCustomOutputTask('PixelFury', 'C://Users/RePixelatedMC/Iris/1.21 - Development-v3/plugins')
// ========================== UNIX ==============================
registerCustomOutputTaskUnix('CyberpwnLT', '/Users/danielmills/development/server/plugins')
registerCustomOutputTaskUnix('PsychoLT', '/Users/brianfopiano/Developer/RemoteGit/Server/plugins')

View File

@ -64,7 +64,6 @@ import org.bukkit.command.CommandSender;
import org.bukkit.persistence.PersistentDataContainer;
import org.bukkit.persistence.PersistentDataType;
import javax.annotation.Nullable;
import java.io.File;
import java.io.IOException;
import java.util.HashSet;
@ -134,7 +133,8 @@ public class IrisEngine implements Engine {
context = new IrisContext(this);
cleaning = new AtomicBoolean(false);
context.touch();
merger = new IrisMerger();
merger = getDimension().getMerger();
updateMemoryWorld();
getData().setEngine(this);
getData().loadPrefetch(this);
Iris.info("Initializing Engine: " + target.getWorld().name() + "/" + target.getDimension().getLoadKey() + " (" + target.getDimension().getDimensionHeight() + " height) Seed: " + getSeedManager().getSeed());
@ -200,15 +200,16 @@ public class IrisEngine implements Engine {
mode = getDimension().getMode().getType().create(this);
}
private void setupMemoryWorld() {
private void updateMemoryWorld() {
try {
merger = getDimension().getMerger();
if (!getDimension().isEnableExperimentalMerger()) return;
if (getMerger().getGenerator().isBlank()) return;
NamespacedKey dk = NamespacedKey.minecraft("memory_current_creator");
PersistentDataContainer per = null;
PersistentDataContainer per;
if (memoryWorld != null) {
per = memoryWorld.getBukkit().getPersistentDataContainer();
if (Objects.equals(per.get(dk, PersistentDataType.STRING), memoryWorld.getBukkit().getGenerator().toString()))
if (Objects.equals(per.get(dk, PersistentDataType.STRING), getMerger().getGenerator()))
return;
if (memoryWorld != null)
memoryWorld.close();
@ -219,7 +220,7 @@ public class IrisEngine implements Engine {
INMS.get().createMemoryWorld(NamespacedKey.minecraft(getMerger().getGenerator()), new WorldCreator("memoryworld"))
) : null; // todo: experimental
per = memoryWorld.getBukkit().getPersistentDataContainer();
per.set(dk, PersistentDataType.STRING, memoryWorld.getBukkit().getGenerator().toString());
per.set(dk, PersistentDataType.STRING, getMerger().getGenerator());
} catch (Exception e) {
e.printStackTrace();
}
@ -274,6 +275,7 @@ public class IrisEngine implements Engine {
getData().clearLists();
getTarget().setDimension(getData().getDimensionLoader().load(getDimension().getLoadKey()));
prehotload();
updateMemoryWorld();
setupEngine();
J.a(() -> {
synchronized (ServerConfigurator.class) {

View File

@ -144,9 +144,8 @@ public class IrisDimension extends IrisRegistrant {
@RegistryListResource(IrisJigsawStructure.class)
@Desc("If defined, Iris will place the given jigsaw structure where minecraft should place the overworld stronghold.")
private String stronghold;
@ArrayType(max = 1, type = IrisMerger.class)
@Desc("Iris merger [Experimental] ( Deprecated for v3 )")
private IrisMerger merger;
private IrisMerger merger = new IrisMerger();
@Desc("Cheap temp solution till v4 arrives [ Enables the experimental merger ] Requires studio restart to take effect!")
private boolean EnableExperimentalMerger = true;
@Desc("If set to true, Iris will remove chunks to allow visualizing cross sections of chunks easily")

View File

@ -28,8 +28,8 @@ import org.bukkit.generator.ChunkGenerator;
@Data
public class IrisMerger {
private RollingSequence mergeDuration;
private Engine engine;
private transient RollingSequence mergeDuration = new RollingSequence(20);
private transient Engine engine;
@Desc("Selected Generator")
private String generator;
@ -48,8 +48,11 @@ public class IrisMerger {
*/
@Deprecated
public void generateVanillaUnderground(int x, int z, Engine engine) {
if (engine.getMemoryWorld() == null || engine.getWorld() == null)
throw new NullPointerException();
if (engine.getMemoryWorld() == null)
throw new IllegalStateException("MemoryWorld is null. Ensure that it has been initialized.");
if (engine.getWorld() == null)
throw new IllegalStateException("World is null. Ensure that the world has been properly loaded.");
PrecisionStopwatch p = PrecisionStopwatch.start();
Hunk<BlockData> vh = memoryWorldToHunk(engine.getMemoryWorld().getChunkData(x, z), engine);
int totalHeight = engine.getMemoryWorld().getBukkit().getMaxHeight() - engine.getMemoryWorld().getBukkit().getMinHeight();
@ -60,7 +63,7 @@ public class IrisMerger {
for (int zz = 0; zz < 16; zz++) {
for (int y = 0; y < totalHeight; y++) {
//int height = engine.getHeight(x * 16 + xx, z * 16 + zz, true) - 10;
int height = (int) Math.ceil(context.getHeight().get(xx,zz));
int height = (int) Math.ceil(context.getHeight().get(xx,zz) - depth);
if (y < height) {
BlockData blockData = vh.get(xx, y, zz);
if (blockData != null) {

View File

@ -366,12 +366,8 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun
getEngine().generate(x << 4, z << 4, blocks, biomes, false);
blocks.apply();
biomes.apply();
J.s(() -> {
//generateVanillaUnderground(x,z, blocks);
});
}
Iris.info("dev");
Iris.debug("Generated " + x + " " + z);
} catch (Throwable e) {
Iris.error("======================================");
@ -389,7 +385,7 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun
@EventHandler
private void onChunkGeneration(ChunkLoadEvent event) {
if(!event.isNewChunk() || !engine.getWorld().realWorld().equals(event.getWorld()) || !engine.getDimension().isEnableExperimentalMerger() || engine.getMemoryWorld() != null) return;
if(!event.isNewChunk() || !engine.getWorld().realWorld().equals(event.getWorld()) || !engine.getDimension().isEnableExperimentalMerger() || engine.getMemoryWorld() == null) return;
engine.getMerger().generateVanillaUnderground(event.getChunk().getX(), event.getChunk().getZ(), engine);
}