here crazy

This commit is contained in:
RePixelatedMC
2024-04-26 11:16:09 +02:00
parent 71a62b9c73
commit 979af82122
4 changed files with 62 additions and 17 deletions
+10 -7
View File
@@ -66,10 +66,7 @@ import io.papermc.lib.PaperLib;
import lombok.Getter; import lombok.Getter;
import net.kyori.adventure.platform.bukkit.BukkitAudiences; import net.kyori.adventure.platform.bukkit.BukkitAudiences;
import net.kyori.adventure.text.serializer.ComponentSerializer; import net.kyori.adventure.text.serializer.ComponentSerializer;
import org.bukkit.Bukkit; import org.bukkit.*;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.WorldCreator;
import org.bukkit.block.data.BlockData; import org.bukkit.block.data.BlockData;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@@ -100,6 +97,7 @@ import java.util.regex.Pattern;
import static com.volmit.iris.core.safeguard.IrisSafeguard.*; import static com.volmit.iris.core.safeguard.IrisSafeguard.*;
import static com.volmit.iris.core.safeguard.ServerBootSFG.passedserversoftware; import static com.volmit.iris.core.safeguard.ServerBootSFG.passedserversoftware;
import static com.volmit.iris.util.misc.getHardware.getCPUModel; import static com.volmit.iris.util.misc.getHardware.getCPUModel;
import static org.bukkit.Bukkit.getServer;
@SuppressWarnings("CanBeFinal") @SuppressWarnings("CanBeFinal")
public class Iris extends VolmitPlugin implements Listener { public class Iris extends VolmitPlugin implements Listener {
@@ -124,6 +122,10 @@ public class Iris extends VolmitPlugin implements Listener {
} }
} }
public Iris() {
System.out.println("Hello!");
}
private final KList<Runnable> postShutdown = new KList<>(); private final KList<Runnable> postShutdown = new KList<>();
private KMap<Class<? extends IrisService>, IrisService> services; private KMap<Class<? extends IrisService>, IrisService> services;
@@ -456,12 +458,13 @@ public class Iris extends VolmitPlugin implements Listener {
} }
private void enable() { private void enable() {
instance = this; instance = this;
boolean configured;
services = new KMap<>(); services = new KMap<>();
setupAudience(); setupAudience();
initialize("com.volmit.iris.core.service").forEach((i) -> services.put((Class<? extends IrisService>) i.getClass(), (IrisService) i)); initialize("com.volmit.iris.core.service").forEach((i) -> services.put((Class<? extends IrisService>) i.getClass(), (IrisService) i));
INMS.get(); INMS.get();
IO.delete(new File("iris")); IO.delete(new File("iris"));
IrisSafeguard.IrisSafeguardSystem(); IrisSafeguardSystem();
getSender().setTag(getTag()); getSender().setTag(getTag());
compat = IrisCompat.configured(getDataFile("compat.json")); compat = IrisCompat.configured(getDataFile("compat.json"));
linkMultiverseCore = new MultiverseCoreLink(); linkMultiverseCore = new MultiverseCoreLink();
@@ -469,6 +472,7 @@ public class Iris extends VolmitPlugin implements Listener {
configWatcher = new FileWatcher(getDataFile("settings.json")); configWatcher = new FileWatcher(getDataFile("settings.json"));
services.values().forEach(IrisService::onEnable); services.values().forEach(IrisService::onEnable);
services.values().forEach(this::registerListener); services.values().forEach(this::registerListener);
configured = ServerConfigurator.postConfigure();
J.s(() -> { J.s(() -> {
J.a(() -> PaperLib.suggestPaper(this)); J.a(() -> PaperLib.suggestPaper(this));
J.a(() -> IO.delete(getTemp())); J.a(() -> IO.delete(getTemp()));
@@ -477,10 +481,9 @@ public class Iris extends VolmitPlugin implements Listener {
J.ar(this::checkConfigHotload, 60); J.ar(this::checkConfigHotload, 60);
J.sr(this::tickQueue, 0); J.sr(this::tickQueue, 0);
J.s(this::setupPapi); J.s(this::setupPapi);
J.a(ServerConfigurator::configure, 20); if (!configured) J.a(ServerConfigurator::configure, 20);
splash(); splash();
UtilsSFG.splash(); UtilsSFG.splash();
autoStartStudio(); autoStartStudio();
checkForBukkitWorlds(); checkForBukkitWorlds();
IrisToolbelt.retainMantleDataForSlice(String.class.getCanonicalName()); IrisToolbelt.retainMantleDataForSlice(String.class.getCanonicalName());
@@ -31,16 +31,21 @@ import com.volmit.iris.util.format.C;
import com.volmit.iris.util.plugin.VolmitSender; import com.volmit.iris.util.plugin.VolmitSender;
import com.volmit.iris.util.scheduling.J; import com.volmit.iris.util.scheduling.J;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import java.io.File; import java.io.File;
import java.io.FileInputStream;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.Properties;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import static org.bukkit.Bukkit.getServer;
public class ServerConfigurator { public class ServerConfigurator {
public static void configure() { public static void configure() {
IrisSettings.IrisSettingsAutoconfiguration s = IrisSettings.get().getAutoConfiguration(); IrisSettings.IrisSettingsAutoconfiguration s = IrisSettings.get().getAutoConfiguration();
@@ -55,6 +60,14 @@ public class ServerConfigurator {
installDataPacks(true); installDataPacks(true);
} }
public static boolean postConfigure() {
if(postVerifyDataPacks(true)) {
configure();
return true;
}
return false;
}
private static void increaseKeepAliveSpigot() throws IOException, InvalidConfigurationException { private static void increaseKeepAliveSpigot() throws IOException, InvalidConfigurationException {
File spigotConfig = new File("config/spigot.yml"); File spigotConfig = new File("config/spigot.yml");
FileConfiguration f = new YamlConfiguration(); FileConfiguration f = new YamlConfiguration();
@@ -91,6 +104,22 @@ public class ServerConfigurator {
return worlds; return worlds;
} }
private static boolean postVerifyDataPacks(boolean fast) {
try {
Properties prop = new Properties();
prop.load(new FileInputStream("server.properties"));
String world = prop.getProperty("level-name");
File worldFolder = new File(Bukkit.getWorldContainer(), world);
File datapacksFolder = new File(worldFolder, "datapacks");
File IrisDatapacks = new File(datapacksFolder, "iris");
if (!datapacksFolder.exists() || !IrisDatapacks.exists()) {
return (true);
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
public static void installDataPacks(boolean fullInstall) { public static void installDataPacks(boolean fullInstall) {
Iris.info("Checking Data Packs..."); Iris.info("Checking Data Packs...");
@@ -19,6 +19,8 @@ import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReferenceArray; import java.util.concurrent.atomic.AtomicReferenceArray;
public class IrisWorldDump { public class IrisWorldDump {
public static int Failed = 0;
public static int Success = 0;
private KList<MCAFile> mcaList; private KList<MCAFile> mcaList;
private World world; private World world;
private File MCADirectory; private File MCADirectory;
@@ -65,18 +67,13 @@ public class IrisWorldDump {
for (int x = 0; x < 16; x++) { for (int x = 0; x < 16; x++) {
for (int z = 0; z < 16; z++) { for (int z = 0; z < 16; z++) {
for (int y = 0; y < CHUNK_HEIGHT; y++) { for (int y = 0; y < CHUNK_HEIGHT; y++) {
CompoundTag tag = chunk.getBlockStateAt(x,y,z); // CompoundTag tag = chunk.getBlockStateAt(x,y,z);
int i1 = 0;
} }
} }
} }
} }
} }
} }
} }
@@ -93,6 +90,8 @@ public class IrisWorldDump {
int l = 0; int l = 0;
int f = 0; int f = 0;
for (File mca : MCADirectory.listFiles()) { for (File mca : MCADirectory.listFiles()) {
// net.minecraft.world.level.chunk.PalettedContainer
// take a look at the classes `net.minecraft.world.level.chunk.PalettedContainer` and `net.minecraft.world.level.chunk.storage.ChunkSerializer`
if (mca.getName().endsWith(".mca")) { if (mca.getName().endsWith(".mca")) {
try { try {
mcaFiles.add(MCAUtil.read(mca)); mcaFiles.add(MCAUtil.read(mca));
@@ -108,6 +107,8 @@ public class IrisWorldDump {
if (f > 0) { if (f > 0) {
sender.sendMessage(C.RED +"Failed " + C.GRAY + "to load: " + f + " MCA Regions"); sender.sendMessage(C.RED +"Failed " + C.GRAY + "to load: " + f + " MCA Regions");
} }
Iris.info("Successfull: " + Form.f(Success));
Iris.info("Failed: " + Form.f(Failed));
return mcaFiles; return mcaFiles;
} }
@@ -20,7 +20,9 @@ package com.volmit.iris.util.nbt.mca;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.core.nms.INMS; import com.volmit.iris.core.nms.INMS;
import com.volmit.iris.core.tools.IrisWorldDump;
import com.volmit.iris.util.collection.KMap; import com.volmit.iris.util.collection.KMap;
import com.volmit.iris.util.format.Form;
import com.volmit.iris.util.nbt.io.NBTDeserializer; import com.volmit.iris.util.nbt.io.NBTDeserializer;
import com.volmit.iris.util.nbt.io.NBTSerializer; import com.volmit.iris.util.nbt.io.NBTSerializer;
import com.volmit.iris.util.nbt.io.NamedTag; import com.volmit.iris.util.nbt.io.NamedTag;
@@ -57,6 +59,8 @@ public class Chunk {
private ListTag<ListTag<?>> postProcessing; private ListTag<ListTag<?>> postProcessing;
private String status; private String status;
private CompoundTag structures; private CompoundTag structures;
private int d;
private int f;
Chunk(int lastMCAUpdate) { Chunk(int lastMCAUpdate) {
this.lastMCAUpdate = lastMCAUpdate; this.lastMCAUpdate = lastMCAUpdate;
@@ -69,6 +73,8 @@ public class Chunk {
*/ */
public Chunk(CompoundTag data) { public Chunk(CompoundTag data) {
this.data = data; this.data = data;
d = 0;
f = 0;
initReferences(ALL_DATA); initReferences(ALL_DATA);
setStatus("full"); setStatus("full");
} }
@@ -156,11 +162,17 @@ public class Chunk {
if (sectionIndex > 15 || sectionIndex < 0) { if (sectionIndex > 15 || sectionIndex < 0) {
continue; continue;
} }
Section newSection = new Section(section, dataVersion, loadFlags); try {
if (newSection.isEmpty()) { Section newSection = new Section(section, dataVersion, loadFlags);
continue; if (newSection.isEmpty()) {
continue;
}
sections.put(sectionIndex, newSection);
IrisWorldDump.Success++;
} catch (Exception e) {
IrisWorldDump.Failed++;
// e.printStackTrace();
} }
sections.put(sectionIndex, newSection);
} }
} }