9
0
mirror of https://github.com/VolmitSoftware/Iris.git synced 2025-12-29 03:59:06 +00:00

add dummy datapack + fix world creation

This commit is contained in:
Julian Krings
2024-08-02 18:14:41 +02:00
parent 1e22a65329
commit 488b76d1d2
34 changed files with 1450 additions and 38 deletions

View File

@@ -469,6 +469,7 @@ public class Iris extends VolmitPlugin implements Listener {
IrisSafeguard.instance.IrisSafeguardSystem();
getSender().setTag(getTag());
INMS.get().injectBukkit();
ServerConfigurator.disableDataPack();
if (IrisSafeguard.instance.unstablemode && !IrisSafeguard.instance.acceptUnstable) IrisSafeguard.instance.earlySplash();
compat = IrisCompat.configured(getDataFile("compat.json"));
linkMultiverseCore = new MultiverseCoreLink();

View File

@@ -19,13 +19,18 @@
package com.volmit.iris.core;
import com.volmit.iris.Iris;
import com.volmit.iris.core.nms.INMS;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.scheduling.J;
import org.bukkit.Bukkit;
import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
import java.util.concurrent.TimeUnit;
public class ServerConfigurator {
@@ -67,4 +72,42 @@ public class ServerConfigurator {
f.save(spigotConfig);
}
}
private static KList<File> getDataPacksFolder() {
if (!IrisSettings.get().getGeneral().forceMainWorld.isEmpty()) {
return new KList<File>().qadd(new File(Bukkit.getWorldContainer(), IrisSettings.get().getGeneral().forceMainWorld + "/datapacks"));
}
KList<File> worlds = new KList<>();
Bukkit.getServer().getWorlds().forEach(w -> worlds.add(new File(w.getWorldFolder(), "datapacks")));
if (worlds.isEmpty()) {
worlds.add(new File(getMainWorldFolder(), "datapacks"));
}
return worlds;
}
private static File getMainWorldFolder() {
try {
Properties prop = new Properties();
prop.load(new FileInputStream("server.properties"));
String world = prop.getProperty("level-name", "world");
return new File(Bukkit.getWorldContainer(), world);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void dumpDataPack() {
if (!INMS.get().dumpRegistry(getDataPacksFolder().toArray(File[]::new)))
return;
disableDataPack();
}
public static void disableDataPack() {
var packs = INMS.get().getPackRepository();
packs.reload();
if (!packs.removePack("file/iris"))
return;
packs.reloadWorldData();
}
}

View File

@@ -19,6 +19,7 @@
package com.volmit.iris.core.nms;
import com.volmit.iris.core.nms.container.BiomeColor;
import com.volmit.iris.core.nms.container.IPackRepository;
import com.volmit.iris.core.nms.datapack.DataVersion;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.object.IrisBiomeCustom;
@@ -43,6 +44,7 @@ import org.bukkit.generator.ChunkGenerator;
import org.bukkit.inventory.ItemStack;
import java.awt.*;
import java.io.File;
public interface INMSBinding {
boolean hasTile(Location l);
@@ -127,9 +129,17 @@ public interface INMSBinding {
boolean registerBiome(String dimensionId, IrisBiomeCustom biome, boolean replace);
boolean dumpRegistry(File... folders);
void injectBukkit();
default IHeadless createHeadless(Engine engine) {
throw new IllegalStateException("Headless mode not supported");
}
default int getSpawnChunkCount(World world) {
return 441;
}
IPackRepository getPackRepository();
}

View File

@@ -0,0 +1,14 @@
package com.volmit.iris.core.nms.container;
import java.util.Collection;
public interface IPackRepository {
void reload();
void reloadWorldData();
void setSelected(Collection<String> packs);
boolean addPack(String packId);
boolean removePack(String packId);
Collection<String> getAvailableIds();
Collection<String> getSelectedIds();
boolean isAvailable(String packId);
}

View File

@@ -23,6 +23,7 @@ import com.volmit.iris.Iris;
import com.volmit.iris.core.nms.INMSBinding;
import com.volmit.iris.core.nms.container.BiomeColor;
import com.volmit.iris.core.nms.container.BlockPos;
import com.volmit.iris.core.nms.container.IPackRepository;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.object.IrisBiomeCustom;
import com.volmit.iris.engine.object.IrisDimension;
@@ -121,6 +122,11 @@ public class NMSBinding1X implements INMSBinding {
return false;
}
@Override
public boolean dumpRegistry(File... folders) {
return false;
}
@Override
public Color getBiomeColor(Location location, BiomeColor type) {
return Color.GREEN;
@@ -272,6 +278,11 @@ public class NMSBinding1X implements INMSBinding {
}
@Override
public IPackRepository getPackRepository() {
return new PackRepository1X();
}
private static class WorldCreatorAdvice {
@Advice.OnMethodEnter
static void enter(@Advice.Argument(0) String name) {

View File

@@ -0,0 +1,43 @@
package com.volmit.iris.core.nms.v1X;
import com.volmit.iris.core.nms.container.IPackRepository;
import java.util.Collection;
import java.util.List;
import java.util.concurrent.CompletableFuture;
class PackRepository1X implements IPackRepository {
@Override
public void reload() {}
@Override
public void reloadWorldData() {}
@Override
public void setSelected(Collection<String> packs) {}
@Override
public boolean addPack(String packId) {
return false;
}
@Override
public boolean removePack(String packId) {
return false;
}
@Override
public Collection<String> getAvailableIds() {
return List.of();
}
@Override
public Collection<String> getSelectedIds() {
return List.of();
}
@Override
public boolean isAvailable(String packId) {
return false;
}
}

View File

@@ -21,6 +21,7 @@ package com.volmit.iris.core.tools;
import com.google.common.util.concurrent.AtomicDouble;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.nms.INMS;
import com.volmit.iris.core.pregenerator.PregenTask;
import com.volmit.iris.core.service.StudioSVC;
import com.volmit.iris.engine.object.IrisDimension;
@@ -147,7 +148,6 @@ public class IrisCreator {
J.a(() ->
{
int req = 441;
Supplier<Integer> g = () -> {
if (finalAccess1 == null || finalAccess1.getEngine() == null) {
return 0;
@@ -155,6 +155,9 @@ public class IrisCreator {
return finalAccess1.getEngine().getGenerated();
};
if(!benchmark) {
if (finalAccess1 == null) return;
int req = finalAccess1.getSpawnChunks().join();
while (g.get() < req) {
double v = (double) g.get() / (double) req;
if (sender.isPlayer()) {

View File

@@ -65,6 +65,7 @@ import java.io.IOException;
import java.lang.reflect.Field;
import java.util.List;
import java.util.Random;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Semaphore;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
@@ -86,6 +87,7 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun
private final AtomicBoolean setup;
private final boolean studio;
private final AtomicInteger a = new AtomicInteger(0);
private final CompletableFuture<Integer> spawnChunks = new CompletableFuture<>();
private final boolean smartVanillaHeight;
private Engine engine;
private Looper hotloader;
@@ -150,6 +152,7 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun
} else {
INMS.get().inject(event.getWorld().getSeed(), engine, event.getWorld());
Iris.info("Injected Iris Biome Source into " + event.getWorld().getName());
spawnChunks.complete(INMS.get().getSpawnChunkCount(event.getWorld()));
initialized = true;
}
}

View File

@@ -25,6 +25,7 @@ import com.volmit.iris.engine.framework.Hotloadable;
import com.volmit.iris.util.data.DataProvider;
import org.bukkit.World;
import java.util.concurrent.CompletableFuture;
import java.util.function.Consumer;
public interface PlatformChunkGenerator extends Hotloadable, DataProvider {
@@ -46,4 +47,6 @@ public interface PlatformChunkGenerator extends Hotloadable, DataProvider {
boolean isStudio();
void touch(World world);
CompletableFuture<Integer> getSpawnChunks();
}