mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-10-26 05:50:39 +00:00
Stability
This commit is contained in:
1 parent
6c69c69868
commit
b1bb01665a
2 files changed
+35
-15
No files matched your search
@@ -29,8 +29,12 @@ import org.bukkit.*;
|
|||||||
import org.bukkit.block.Biome;
|
import org.bukkit.block.Biome;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.world.WorldLoadEvent;
|
||||||
import org.bukkit.generator.ChunkGenerator;
|
import org.bukkit.generator.ChunkGenerator;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.locks.ReentrantLock;
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
@@ -95,13 +99,15 @@ public class IrisMerger {
|
|||||||
ChunkGenerator.ChunkData chunkDataIris = getChunkDataAt(engine.getWorld().realWorld(), x, z);
|
ChunkGenerator.ChunkData chunkDataIris = getChunkDataAt(engine.getWorld().realWorld(), x, z);
|
||||||
if (world.isBlank()) {
|
if (world.isBlank()) {
|
||||||
throw new UnsupportedOperationException("No.");
|
throw new UnsupportedOperationException("No.");
|
||||||
// memoryWorld = engine.getMemoryWorld();
|
// memoryWorld = engine.getMemoryWorld();
|
||||||
// bukkit = memoryWorld.getBukkit();
|
// bukkit = memoryWorld.getBukkit();
|
||||||
// chunkData = memoryWorld.getChunkData(x, z);
|
// chunkData = memoryWorld.getChunkData(x, z);
|
||||||
} else {
|
} else {
|
||||||
bukkit = Bukkit.getWorld(world);
|
bukkit = Bukkit.getWorld(world);
|
||||||
if (bukkit == null)
|
if (bukkit == null) {
|
||||||
throw new IllegalStateException("Somehow world is null? Initialization Failed!");
|
Iris.info("World " + world + " not loaded yet, cannot generate chunk at (" + x + ", " + z + ")");
|
||||||
|
return;
|
||||||
|
}
|
||||||
chunkData = getChunkDataAt(bukkit, x, z);
|
chunkData = getChunkDataAt(bukkit, x, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -149,7 +155,7 @@ public class IrisMerger {
|
|||||||
blockData = dps.createBlockData();
|
blockData = dps.createBlockData();
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Iris.error(e.getMessage());
|
//Iris.error(e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -296,16 +302,30 @@ public class IrisMerger {
|
|||||||
return copy;
|
return copy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void loadWorld(Engine engine) {
|
public void loadWorld(Engine engine) {
|
||||||
if (!engine.getDimension().isEnableExperimentalMerger())
|
if (!engine.getDimension().isEnableExperimentalMerger())
|
||||||
return;
|
return;
|
||||||
J.sfut(() -> {
|
|
||||||
worldsave = Bukkit.getWorld(world);
|
World bukkitWorld = Bukkit.getWorld(world);
|
||||||
if (worldsave == null) {
|
if(!new File(Bukkit.getWorldContainer(), world).exists())
|
||||||
WorldCreator worldCreator = new WorldCreator(world);
|
throw new IllegalStateException("World does not exist!");
|
||||||
worldsave = Bukkit.createWorld(worldCreator);
|
if (bukkitWorld == null) {
|
||||||
}
|
Iris.info("World " + world + " is not loaded yet, creating it.");
|
||||||
});
|
|
||||||
|
Bukkit.getPluginManager().registerEvents(new Listener() {
|
||||||
|
@EventHandler
|
||||||
|
public void onWorldLoad(WorldLoadEvent event) {
|
||||||
|
if (event.getWorld().getName().equals(world)) {
|
||||||
|
worldsave = event.getWorld();
|
||||||
|
Iris.info("World " + world + " has been loaded.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, Iris.instance);
|
||||||
|
|
||||||
|
WorldCreator worldCreator = new WorldCreator(world);
|
||||||
|
Bukkit.createWorld(worldCreator);
|
||||||
|
} else {
|
||||||
|
worldsave = bukkitWorld;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -385,7 +385,7 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun
|
|||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
private void onChunkGeneration(ChunkLoadEvent event) {
|
private void onChunkGeneration(ChunkLoadEvent event) {
|
||||||
if (!event.isNewChunk() || !engine.getWorld().realWorld().equals(event.getWorld()) || !engine.getDimension().isEnableExperimentalMerger() || engine.getMemoryWorld() == null)
|
if (engine == null ||!event.isNewChunk() || !engine.getWorld().realWorld().equals(event.getWorld()) || !engine.getDimension().isEnableExperimentalMerger() || engine.getMemoryWorld() == null)
|
||||||
return;
|
return;
|
||||||
engine.getMerger().generateVanillaUnderground(event.getChunk().getX(), event.getChunk().getZ(), engine);
|
engine.getMerger().generateVanillaUnderground(event.getChunk().getX(), event.getChunk().getZ(), engine);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user