rough safeguard for missing dimension type

This commit is contained in:
Julian Krings
2025-04-16 22:02:42 +02:00
parent 3415e7c7af
commit 6577f4a5de
10 changed files with 282 additions and 504 deletions
@@ -35,6 +35,7 @@ import org.bukkit.entity.EntityType;
import org.bukkit.event.entity.CreatureSpawnEvent;
import org.bukkit.generator.ChunkGenerator;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.Nullable;
import java.awt.Color;
@@ -88,7 +89,7 @@ public interface INMSBinding {
MCABiomeContainer newBiomeContainer(int min, int max);
default World createWorld(WorldCreator c) {
if (missingDimensionTypes(c.environment()))
if (missingDimensionTypes(c.generator()))
throw new IllegalStateException("Missing dimenstion types to create world");
return c.createWorld();
@@ -126,18 +127,7 @@ public interface INMSBinding {
KList<String> getStructureKeys();
KMap<String, World.Environment> getMainWorlds();
boolean missingDimensionTypes(boolean overworld, boolean nether, boolean end);
default boolean missingDimensionTypes(World.Environment env) {
return switch (env) {
case NORMAL -> missingDimensionTypes(true, false, false);
case NETHER -> missingDimensionTypes(false, true, false);
case THE_END -> missingDimensionTypes(false, false, true);
default -> true;
};
}
boolean missingDimensionTypes(@Nullable ChunkGenerator generator);
default boolean injectBukkit() {
return true;
@@ -20,9 +20,7 @@ package com.volmit.iris.core.nms.v1X;
import com.volmit.iris.Iris;
import com.volmit.iris.core.nms.INMSBinding;
import com.volmit.iris.core.nms.container.AutoClosing;
import com.volmit.iris.core.nms.container.BiomeColor;
import com.volmit.iris.core.nms.container.Pair;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.collection.KMap;
@@ -39,6 +37,7 @@ import org.bukkit.event.entity.CreatureSpawnEvent;
import org.bukkit.generator.ChunkGenerator;
import org.bukkit.generator.structure.Structure;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.Nullable;
import java.awt.Color;
import java.util.stream.StreamSupport;
@@ -121,12 +120,7 @@ public class NMSBinding1X implements INMSBinding {
}
@Override
public KMap<String, World.Environment> getMainWorlds() {
return new KMap<>();
}
@Override
public boolean missingDimensionTypes(boolean overworld, boolean nether, boolean end) {
public boolean missingDimensionTypes(@Nullable ChunkGenerator generator) {
return false;
}
@@ -4,11 +4,7 @@ import com.volmit.iris.Iris;
import com.volmit.iris.core.nms.INMS;
import com.volmit.iris.core.nms.v1X.NMSBinding1X;
import com.volmit.iris.util.agent.Agent;
import com.volmit.iris.util.misc.ServerProperties;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginManager;
import javax.tools.JavaCompiler;
@@ -20,7 +16,6 @@ import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.*;
import java.util.function.Predicate;
import static com.volmit.iris.Iris.getJavaVersion;
import static com.volmit.iris.core.safeguard.IrisSafeguard.*;
@@ -189,30 +184,6 @@ public class ServerBootSFG {
}
private static boolean missingDimensionTypes() {
var irisWorlds = irisWorlds();
if (irisWorlds.isEmpty()) return false;
var worlds = INMS.get().getMainWorlds();
worlds.keySet().removeIf(Predicate.not(irisWorlds::contains));
boolean overworld = worlds.containsValue(World.Environment.NORMAL) || worlds.containsValue(World.Environment.CUSTOM);
boolean nether = worlds.containsValue(World.Environment.NETHER);
boolean end = worlds.containsValue(World.Environment.THE_END);
if (overworld || nether || end)
return INMS.get().missingDimensionTypes(overworld, nether, end);
return false;
return INMS.get().missingDimensionTypes(null);
}
private static List<String> irisWorlds() {
var config = YamlConfiguration.loadConfiguration(ServerProperties.BUKKIT_YML);
ConfigurationSection section = config.getConfigurationSection("worlds");
if (section == null) return List.of();
return section.getKeys(false)
.stream()
.filter(k -> section.getString(k + ".generator", "").startsWith("Iris"))
.toList();
}
}