diff --git a/patches/api/0005-Revert-purpur-Remove-Timings.patch b/patches/api/0004-Revert-purpur-Remove-Timings.patch similarity index 100% rename from patches/api/0005-Revert-purpur-Remove-Timings.patch rename to patches/api/0004-Revert-purpur-Remove-Timings.patch diff --git a/patches/api/0004-Suki-configuration.patch b/patches/api/0004-Suki-configuration.patch deleted file mode 100644 index 6f59765..0000000 --- a/patches/api/0004-Suki-configuration.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: MartijnMuijsers -Date: Thu, 13 Oct 2022 20:55:09 +0200 -Subject: [PATCH] Suki configuration - -Original code by SuCraft, licensed under GPL-3.0. -You can find the original code on https://github.com/SuCraft/Suki - -diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index a7e2fab3e174fe2c1d79d904f7eaff88dd0c3c82..b36419e0512b4b7ef421b54ca27db37e02fbe86e 100644 ---- a/src/main/java/org/bukkit/Server.java -+++ b/src/main/java/org/bukkit/Server.java -@@ -1981,6 +1981,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi - } - // Purpur end - -+ // Suki start - Suki configuration -+ @NotNull -+ public org.bukkit.configuration.file.YamlConfiguration getSukiConfig() { -+ throw new UnsupportedOperationException("Not supported yet."); -+ } -+ // Suki end - Suki configuration -+ - /** - * Sends the component to the player - * diff --git a/patches/server/0006-Suki-Patches.patch b/patches/server/0006-Suki-Patches.patch index 07e3c1f..09fde29 100644 --- a/patches/server/0006-Suki-Patches.patch +++ b/patches/server/0006-Suki-Patches.patch @@ -5,7 +5,6 @@ Subject: [PATCH] Suki Patches Original code by SuCraft, licensed under GPL-3.0. You can find the original code on https://github.com/SuCraft/Suki -0002-Suki-configuration-and-commands.patch 0012-Only-refresh-lootables-for-players.patch 0013-Optimize-harmless-explosions.patch 0016-Send-more-packets-immediately.patch @@ -41,220 +40,6 @@ index bc9403d002ef24e71be67a962d099f5d73db9540..8b9a2f06b0a61cfdd493eeddde512f0a + // Suki end - do not relocated corrupted chunks } \ No newline at end of file -diff --git a/src/main/java/co/aikar/timings/TimingsExport.java b/src/main/java/co/aikar/timings/TimingsExport.java -index 2cc44fbf8e5bd436b6d4e19f6c06b351e750cb31..991b06836df310913a14ce1c60979a2c2944b0e5 100644 ---- a/src/main/java/co/aikar/timings/TimingsExport.java -+++ b/src/main/java/co/aikar/timings/TimingsExport.java -@@ -29,6 +29,7 @@ import net.kyori.adventure.text.event.ClickEvent; - import net.kyori.adventure.text.format.NamedTextColor; - import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; - import net.minecraft.server.MinecraftServer; -+import net.minecraft.server.dedicated.DedicatedServer; - import org.apache.commons.lang.StringUtils; - import org.bukkit.Bukkit; - import org.bukkit.Material; -@@ -242,7 +243,8 @@ public class TimingsExport extends Thread { - pair("spigot", mapAsJSON(Bukkit.spigot().getSpigotConfig(), null)), - pair("bukkit", mapAsJSON(Bukkit.spigot().getBukkitConfig(), null)), - pair("paper", mapAsJSON(Bukkit.spigot().getPaperConfig(), null)), // Pufferfish -- pair("pufferfish", mapAsJSON(gg.pufferfish.pufferfish.PufferfishConfig.getConfigCopy(), null)) // Pufferfish -+ pair("pufferfish", mapAsJSON(gg.pufferfish.pufferfish.PufferfishConfig.getConfigCopy(), null)), // Pufferfish -+ pair("suki", mapAsJSON(Bukkit.spigot().getSukiConfig(), null)) // Suki - Suki configuration - )); - - new TimingsExport(listeners, parent, history).start(); -diff --git a/src/main/java/io/papermc/paper/configuration/ConfigurationPart.java b/src/main/java/io/papermc/paper/configuration/ConfigurationPart.java -index 7a4a7a654fe2516ed894a68f2657344df9d70f4c..0a501c3ba5382dae230122066c131de631edff0d 100644 ---- a/src/main/java/io/papermc/paper/configuration/ConfigurationPart.java -+++ b/src/main/java/io/papermc/paper/configuration/ConfigurationPart.java -@@ -1,6 +1,6 @@ - package io.papermc.paper.configuration; - --abstract class ConfigurationPart { -+public abstract class ConfigurationPart { // Suki - Suki configuration - - public static abstract class Post extends ConfigurationPart { - -diff --git a/src/main/java/io/papermc/paper/configuration/Configurations.java b/src/main/java/io/papermc/paper/configuration/Configurations.java -index c2dca89291361d60cbf160cab77749cb0130035a..aedd5aec308dd206ce149e2b303323e5a8adb88e 100644 ---- a/src/main/java/io/papermc/paper/configuration/Configurations.java -+++ b/src/main/java/io/papermc/paper/configuration/Configurations.java -@@ -5,7 +5,10 @@ import io.leangen.geantyref.TypeToken; - import io.papermc.paper.configuration.constraint.Constraint; - import io.papermc.paper.configuration.constraint.Constraints; - import net.minecraft.resources.ResourceLocation; -+import net.minecraft.server.MinecraftServer; - import net.minecraft.server.level.ServerLevel; -+import org.bukkit.configuration.ConfigurationSection; -+import org.bukkit.configuration.file.YamlConfiguration; - import org.checkerframework.checker.nullness.qual.Nullable; - import org.jetbrains.annotations.MustBeInvokedByOverriders; - import org.slf4j.Logger; -@@ -17,6 +20,8 @@ import org.spongepowered.configurate.objectmapping.ObjectMapper; - import org.spongepowered.configurate.serialize.SerializationException; - import org.spongepowered.configurate.util.CheckedFunction; - import org.spongepowered.configurate.yaml.YamlConfigurationLoader; -+import org.sucraft.suki.configuration.SukiConfigurations; -+import org.sucraft.suki.configuration.SukiWorldConfiguration; - - import java.io.IOException; - import java.lang.reflect.Type; -@@ -88,7 +93,7 @@ public abstract class Configurations { - }; - } - -- static CheckedFunction reloader(Class type, T instance) { -+ public static CheckedFunction reloader(Class type, T instance) { // Suki - Suki configuration - return node -> { - ObjectMapper.Factory factory = (ObjectMapper.Factory) Objects.requireNonNull(node.options().serializers().get(type)); - ObjectMapper.Mutable mutable = (ObjectMapper.Mutable) factory.get(type); -@@ -148,7 +153,7 @@ public abstract class Configurations { - final YamlConfigurationLoader loader = result.loader(); - final ConfigurationNode node = loader.load(); - if (result.isNewFile()) { // add version to new files -- node.node(Configuration.VERSION_FIELD).raw(WorldConfiguration.CURRENT_VERSION); -+ node.node(Configuration.VERSION_FIELD).raw(getWorldConfigurationCurrentVersion()); // Suki - Suki configuration - } - this.applyWorldConfigTransformations(contextMap, node); - final W instance = node.require(this.worldConfigClass); -@@ -207,7 +212,7 @@ public abstract class Configurations { - .build(); - final ConfigurationNode worldNode = worldLoader.load(); - if (newFile) { // set the version field if new file -- worldNode.node(Configuration.VERSION_FIELD).set(WorldConfiguration.CURRENT_VERSION); -+ worldNode.node(Configuration.VERSION_FIELD).set(getWorldConfigurationCurrentVersion()); // Suki - Suki configuration - } - this.applyWorldConfigTransformations(contextMap, worldNode); - this.applyDefaultsAwareWorldConfigTransformations(contextMap, worldNode, defaultsNode); -@@ -308,4 +313,21 @@ public abstract class Configurations { - return "ContextKey{" + this.name + "}"; - } - } -+ -+ // Suki start - Suki configuration -+ -+ @Deprecated -+ public YamlConfiguration createLegacyObject(final MinecraftServer server) { -+ YamlConfiguration global = YamlConfiguration.loadConfiguration(this.globalFolder.resolve(this.globalConfigFileName).toFile()); -+ ConfigurationSection worlds = global.createSection("__________WORLDS__________"); -+ worlds.set("__defaults__", YamlConfiguration.loadConfiguration(this.globalFolder.resolve(this.defaultWorldConfigFileName).toFile())); -+ for (ServerLevel level : server.getAllLevels()) { -+ worlds.set(level.getWorld().getName(), YamlConfiguration.loadConfiguration(getWorldConfigFile(level).toFile())); -+ } -+ return global; -+ } -+ -+ public abstract int getWorldConfigurationCurrentVersion(); -+ // Suki end - Suki configuration -+ - } -diff --git a/src/main/java/io/papermc/paper/configuration/InnerClassFieldDiscoverer.java b/src/main/java/io/papermc/paper/configuration/InnerClassFieldDiscoverer.java -index a0aa1f1a7adf986d500a2135aa42e138aa3c4f08..bc3907beb2aa63259300e8960039bd59397d071e 100644 ---- a/src/main/java/io/papermc/paper/configuration/InnerClassFieldDiscoverer.java -+++ b/src/main/java/io/papermc/paper/configuration/InnerClassFieldDiscoverer.java -@@ -5,6 +5,7 @@ import org.checkerframework.checker.nullness.qual.Nullable; - import org.spongepowered.configurate.objectmapping.FieldDiscoverer; - import org.spongepowered.configurate.serialize.SerializationException; - import org.spongepowered.configurate.util.CheckedSupplier; -+import org.sucraft.suki.configuration.SukiWorldConfiguration; - - import java.lang.reflect.AnnotatedType; - import java.lang.reflect.Constructor; -@@ -17,7 +18,7 @@ import java.util.Map; - - import static io.leangen.geantyref.GenericTypeReflector.erase; - --final class InnerClassFieldDiscoverer implements FieldDiscoverer> { -+public final class InnerClassFieldDiscoverer implements FieldDiscoverer> { // Suki - Suki configuration - - private final Map, Object> instanceMap = new HashMap<>(); - private final Map, Object> overrides; -@@ -136,7 +137,19 @@ final class InnerClassFieldDiscoverer implements FieldDiscoverer globalConfig() { -+ // Suki start - Suki configuration -+ public static FieldDiscoverer sukiWorldConfig(Configurations.ContextMap contextMap) { -+ final Map, Object> overrides = Map.of( -+ SukiWorldConfiguration.class, new SukiWorldConfiguration( -+ contextMap.require(PaperConfigurations.SPIGOT_WORLD_CONFIG_CONTEXT_KEY).get(), -+ contextMap.require(Configurations.WORLD_KEY) -+ ) -+ ); -+ return new InnerClassFieldDiscoverer(overrides); -+ } -+ // Suki end - Suki configuration -+ -+ public static FieldDiscoverer globalConfig() { // Suki - Suki configuration - return new InnerClassFieldDiscoverer(Collections.emptyMap()); - } - } -diff --git a/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java b/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java -index e731de3ac158c5a4cff236c6f5001674cd488a77..06a6cecfa01c676285ea894c3ed77d0e2d96ba91 100644 ---- a/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java -+++ b/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java -@@ -125,13 +125,13 @@ public class PaperConfigurations extends Configurations SPIGOT_WORLD_DEFAULTS = Suppliers.memoize(() -> new SpigotWorldConfig(RandomStringUtils.randomAlphabetic(255)) { -+ public static final Supplier SPIGOT_WORLD_DEFAULTS = Suppliers.memoize(() -> new SpigotWorldConfig(RandomStringUtils.randomAlphabetic(255)) { // Suki - Suki configuration - @Override // override to ensure "verbose" is false - public void init() { - SpigotConfig.readConfig(SpigotWorldConfig.class, this); - } - }); -- static final ContextKey> SPIGOT_WORLD_CONFIG_CONTEXT_KEY = new ContextKey<>(new TypeToken>() {}, "spigot world config"); -+ public static final ContextKey> SPIGOT_WORLD_CONFIG_CONTEXT_KEY = new ContextKey<>(new TypeToken>() {}, "spigot world config"); // Suki - Suki configuration - - - public PaperConfigurations(final Path globalFolder) { -@@ -293,7 +293,7 @@ public class PaperConfigurations extends Configurations { MinecraftServer.LOGGER.error("Uncaught exception in server thread", throwable); }); @@ -392,98 +169,6 @@ index 795c631bb5edc696a4e52703b1819fcddfb800e2..a85170f6ff613b002d9471f18385d6fe } S s0 = serverFactory.apply(thread); // CraftBukkit - decompile error -@@ -400,6 +403,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop public - - public static Services create(YggdrasilAuthenticationService authenticationService, File rootDirectory, File userCacheFile, joptsimple.OptionSet optionSet) throws Exception { // Paper -@@ -30,7 +36,11 @@ public record Services(MinecraftSessionService sessionService, SignatureValidato - final java.nio.file.Path legacyConfigPath = ((File) optionSet.valueOf("paper-settings")).toPath(); - final java.nio.file.Path configDirPath = ((File) optionSet.valueOf("paper-settings-directory")).toPath(); - io.papermc.paper.configuration.PaperConfigurations paperConfigurations = io.papermc.paper.configuration.PaperConfigurations.setup(legacyConfigPath, configDirPath, rootDirectory.toPath(), (File) optionSet.valueOf("spigot-settings")); -- return new Services(minecraftSessionService, signatureValidator, gameProfileRepository, gameProfileCache, paperConfigurations); -+ // Suki start - Suki configuration -+ final java.nio.file.Path sukiLegacyConfigPath = legacyConfigPath.resolveSibling("suki.yml"); -+ org.sucraft.suki.configuration.SukiConfigurations sukiConfigurations = org.sucraft.suki.configuration.SukiConfigurations.setup(sukiLegacyConfigPath, configDirPath, rootDirectory.toPath(), (File) optionSet.valueOf("spigot-settings")); -+ return new Services(minecraftSessionService, signatureValidator, gameProfileRepository, gameProfileCache, paperConfigurations, sukiConfigurations); -+ // Suki end - Suki configuration - // Paper end - } - } -diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index a9c4f1192f53fea55b2f5edc8a91b6911489e2d3..bb4e33f0cbc33ffe2fed783fab411564338bd228 100644 ---- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -@@ -213,6 +213,10 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface - io.papermc.paper.util.ObfHelper.INSTANCE.getClass(); // Paper - load mappings for stacktrace deobf and etc. - paperConfigurations.initializeGlobalConfiguration(); - paperConfigurations.initializeWorldDefaultsConfiguration(); -+ // Suki start - Suki configuration -+ sukiConfigurations.initializeGlobalConfiguration(); -+ sukiConfigurations.initializeWorldDefaultsConfiguration(); -+ // Suki end - Suki configuration - // Paper start - moved up to right after PlayerList creation but before file load/save - if (this.convertOldUsers()) { - this.getProfileCache().save(false); // Paper -diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java -index 01ca7156d86243a80cd343a2a66be9ebedcc3b7c..852ec490e2a53803ca72a3ec0d994cbefb1f5fcd 100644 ---- a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java -+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java -@@ -97,7 +97,7 @@ public class DedicatedServerProperties extends Settings.MutableValue playerIdleTimeout; - public final Settings.MutableValue whiteList; - public final boolean enforceSecureProfile; -- private final DedicatedServerProperties.WorldGenProperties worldGenProperties; -+ public final DedicatedServerProperties.WorldGenProperties worldGenProperties; // Suki - Suki configuration- include vanilla server.properties in timings - @Nullable - private WorldGenSettings worldGenSettings; - -diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 00fe84ae4fee41b365223f836c82e1688fe322ee..475022d09a149baf7ff37203d7e69d8c0cf17647 100644 ---- a/src/main/java/net/minecraft/server/level/ServerLevel.java -+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -535,7 +535,7 @@ public class ServerLevel extends Level implements WorldGenLevel { - public ServerLevel(MinecraftServer minecraftserver, Executor executor, LevelStorageSource.LevelStorageAccess convertable_conversionsession, PrimaryLevelData iworlddataserver, ResourceKey resourcekey, LevelStem worlddimension, ChunkProgressListener worldloadlistener, boolean flag, long i, List list, boolean flag1, org.bukkit.World.Environment env, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider) { - // Holder holder = worlddimension.typeHolder(); // CraftBukkit - decompile error - // Objects.requireNonNull(minecraftserver); // CraftBukkit - decompile error -- super(iworlddataserver, resourcekey, worlddimension.typeHolder(), minecraftserver::getProfiler, false, flag, i, minecraftserver.getMaxChainedNeighborUpdates(), gen, biomeProvider, env, spigotConfig -> minecraftserver.paperConfigurations.createWorldConfig(io.papermc.paper.configuration.PaperConfigurations.createWorldContextMap(convertable_conversionsession.levelDirectory.path(), iworlddataserver.getLevelName(), resourcekey.location(), spigotConfig)), executor); // Paper - Async-Anti-Xray - Pass executor -+ super(iworlddataserver, resourcekey, worlddimension.typeHolder(), minecraftserver::getProfiler, false, flag, i, minecraftserver.getMaxChainedNeighborUpdates(), gen, biomeProvider, env, spigotConfig -> minecraftserver.paperConfigurations.createWorldConfig(io.papermc.paper.configuration.PaperConfigurations.createWorldContextMap(convertable_conversionsession.levelDirectory.path(), iworlddataserver.getLevelName(), resourcekey.location(), spigotConfig)), spigotConfig -> minecraftserver.sukiConfigurations.createWorldConfig(io.papermc.paper.configuration.PaperConfigurations.createWorldContextMap(convertable_conversionsession.levelDirectory.path(), iworlddataserver.getLevelName(), resourcekey.location(), spigotConfig)), executor); // Paper - Async-Anti-Xray - Pass executor // Suki - Suki configuration - this.pvpMode = minecraftserver.isPvpAllowed(); - this.convertable = convertable_conversionsession; - this.uuid = WorldUUID.getUUID(convertable_conversionsession.levelDirectory.path().toFile()); diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java index c9def2202d7c2a523858ec124df2beaf994d9888..3a7bcee2e4b1c4ef2ba303b0200ae846357c5982 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java @@ -524,38 +209,6 @@ index c9def2202d7c2a523858ec124df2beaf994d9888..3a7bcee2e4b1c4ef2ba303b0200ae846 this.level.addParticle(ParticleTypes.EXPLOSION_EMITTER, this.x, this.y, this.z, 1.0D, 0.0D, 0.0D); } else { this.level.addParticle(ParticleTypes.EXPLOSION, this.x, this.y, this.z, 1.0D, 0.0D, 0.0D); -diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index aa27ab72d30f917ea41045db16b6f59f1442ea77..d882d52ff7aa2c3a33438ecb078c810160ef47d1 100644 ---- a/src/main/java/net/minecraft/world/level/Level.java -+++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -172,7 +172,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - return this.paperConfig; - } - // Paper end -+ // Suki start - Suki configuration -+ private final org.sucraft.suki.configuration.SukiWorldConfiguration sukiConfig; - -+ public org.sucraft.suki.configuration.SukiWorldConfiguration sukiConfig() { -+ return this.sukiConfig; -+ } -+ -+ // Suki end - Suki configuration - public final com.destroystokyo.paper.antixray.ChunkPacketBlockController chunkPacketBlockController; // Paper - Anti-Xray - public final org.purpurmc.purpur.PurpurWorldConfig purpurConfig; // Purpur - -@@ -327,10 +334,11 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - @Override public final int getHeight() { return this.height; } - // Pufferfish end - -- protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - Async-Anti-Xray - Pass executor -+ protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, java.util.function.Function sukiWorldConfigCreator, java.util.concurrent.Executor executor) { // Paper - Async-Anti-Xray - Pass executor // Suki - Suki configuration - this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot - this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - this.purpurConfig = new org.purpurmc.purpur.PurpurWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName(), env); // Purpur -+ this.sukiConfig = sukiWorldConfigCreator.apply(this.spigotConfig); // Suki - Suki configuration - this.playerBreedingCooldowns = this.getNewBreedingCooldownCache(); // Purpur - this.generator = gen; - this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); diff --git a/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java index 13e749a3c40f0b2cc002f13675a9a56eedbefdac..2995d5f80dd2e9b4b8fbbafe3567a6f2847a1187 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java @@ -621,7 +274,7 @@ index 34e351e04ac57e47e3cea671c61cc01d17983b77..6b23a65378c7ac05d03bf9e39c3ac428 UpgradeData chunkconverter = nbt.contains("UpgradeData", 10) ? new UpgradeData(nbt.getCompound("UpgradeData"), world) : UpgradeData.EMPTY; diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 3a67aaa39daf1fb86938f53e129aadfb686583b0..fcef3719c1ced178e47681b7721ed387a18d59f5 100644 +index 3a67aaa39daf1fb86938f53e129aadfb686583b0..a57d633c439f66cb27209f56abf391e84bbb52c5 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -242,6 +242,7 @@ import org.jetbrains.annotations.NotNull; @@ -632,15 +285,7 @@ index 3a67aaa39daf1fb86938f53e129aadfb686583b0..fcef3719c1ced178e47681b7721ed387 import net.md_5.bungee.api.chat.BaseComponent; // Spigot -@@ -1013,6 +1014,7 @@ public final class CraftServer implements Server { - org.spigotmc.SpigotConfig.init((File) console.options.valueOf("spigot-settings")); // Spigot - this.console.paperConfigurations.reloadConfigs(this.console); - org.purpurmc.purpur.PurpurConfig.init((File) console.options.valueOf("purpur-settings")); // Purpur -+ this.console.sukiConfigurations.reloadConfigs(this.console); // Suki - Suki configuration - for (ServerLevel world : this.console.getAllLevels()) { - // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty - world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters, config.spawnAnimals); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -1295,9 +1297,11 @@ public final class CraftServer implements Server { +@@ -1295,9 +1296,11 @@ public final class CraftServer implements Server { worldKey = ResourceKey.create(net.minecraft.core.Registry.DIMENSION_REGISTRY, new net.minecraft.resources.ResourceLocation(creator.key().getNamespace().toLowerCase(java.util.Locale.ENGLISH), creator.key().getKey().toLowerCase(java.util.Locale.ENGLISH))); // Paper } @@ -654,29 +299,3 @@ index 3a67aaa39daf1fb86938f53e129aadfb686583b0..fcef3719c1ced178e47681b7721ed387 if (!(this.worlds.containsKey(name.toLowerCase(java.util.Locale.ENGLISH)))) { return null; } -@@ -2840,6 +2844,13 @@ public final class CraftServer implements Server { - return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); - } - -+ // Suki start - Suki configuration -+ @Override -+ public YamlConfiguration getSukiConfig() { -+ return CraftServer.this.console.sukiConfigurations.createLegacyObject(CraftServer.this.console); -+ } -+ // Suki end - Suki configuration -+ - // Purpur start - @Override - public YamlConfiguration getPurpurConfig() { -diff --git a/src/main/java/org/bukkit/craftbukkit/util/permissions/CraftDefaultPermissions.java b/src/main/java/org/bukkit/craftbukkit/util/permissions/CraftDefaultPermissions.java -index 8e06bc11fb28baee3407bbfe9d7b3689d6f85ff2..ce1190a6b0fb1e4f00e0d573edd42e2456c7e1e2 100644 ---- a/src/main/java/org/bukkit/craftbukkit/util/permissions/CraftDefaultPermissions.java -+++ b/src/main/java/org/bukkit/craftbukkit/util/permissions/CraftDefaultPermissions.java -@@ -5,6 +5,7 @@ import org.bukkit.util.permissions.DefaultPermissions; - - public final class CraftDefaultPermissions { - private static final String ROOT = "minecraft"; -+ private static final String SUKI_ROOT = "suki"; // Suki - Suki permissions - - private CraftDefaultPermissions() {} - diff --git a/patches/server/0013-Options-of-warnings.patch b/patches/server/0013-Options-of-warnings.patch index e08cb43..8f177d2 100644 --- a/patches/server/0013-Options-of-warnings.patch +++ b/patches/server/0013-Options-of-warnings.patch @@ -31,7 +31,7 @@ index 8b9a2f06b0a61cfdd493eeddde512f0abd17f49e..98705c4206906404fed31c87fb03737f public static boolean onlyRefreshForPlayers = false; diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index bb4e33f0cbc33ffe2fed783fab411564338bd228..7f3d258bc52ba1b1dfc3dd630ef061365198d61f 100644 +index a9c4f1192f53fea55b2f5edc8a91b6911489e2d3..5420915b21bbd17eeaba2ba45e08399a3abe6952 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -185,7 +185,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -43,7 +43,7 @@ index bb4e33f0cbc33ffe2fed783fab411564338bd228..7f3d258bc52ba1b1dfc3dd630ef06136 DedicatedServer.LOGGER.warn("****************************"); DedicatedServer.LOGGER.warn("YOU ARE RUNNING THIS SERVER AS AN ADMINISTRATIVE OR ROOT USER. THIS IS NOT ADVISED."); DedicatedServer.LOGGER.warn("YOU ARE OPENING YOURSELF UP TO POTENTIAL RISKS WHEN DOING THIS."); -@@ -330,10 +330,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -326,10 +326,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface // CraftBukkit end if (!this.usesAuthentication()) { @@ -62,7 +62,7 @@ index bb4e33f0cbc33ffe2fed783fab411564338bd228..7f3d258bc52ba1b1dfc3dd630ef06136 DedicatedServer.LOGGER.warn("Whilst this makes it possible to use BungeeCord or Velocity, unless access to your server is properly restricted, it also opens up the ability for hackers to connect with any username they choose."); // Purpur DedicatedServer.LOGGER.warn("Please see http://www.spigotmc.org/wiki/firewall-guide/ for further information."); } else { -@@ -341,7 +346,6 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -337,7 +342,6 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface DedicatedServer.LOGGER.warn("You will not be offered any support as long as the server allows offline-mode players to join."); // Purpur } // Spigot end diff --git a/patches/server/0026-Revert-purpur-Remove-Timings.patch b/patches/server/0026-Revert-purpur-Remove-Timings.patch index 83cbf0d..7d9fff6 100644 --- a/patches/server/0026-Revert-purpur-Remove-Timings.patch +++ b/patches/server/0026-Revert-purpur-Remove-Timings.patch @@ -89,10 +89,10 @@ index e8efbbeece7e866c6c4d7489677d2d9e15fea4d0..8bc0cb9ad5bb4e76d962ff54305e2c08 PacketUtils.LOGGER.debug("Ignoring packet due to disconnection: {}", packet); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index a85170f6ff613b002d9471f18385d6fea7172e43..96748e184d953cb5838c1a90eb040acb90a4603f 100644 +index cb2fc1a77d8170772ec4595642d317b04652b293..04a8cc1ec44b474e1048ccb06b4a7c11a61ec29b 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -331,13 +331,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop registryreadops, Thread thread, LevelStorageSource.LevelStorageAccess convertable_conversionsession, PackRepository resourcepackrepository, WorldStem worldstem, Proxy proxy, DataFixer datafixer, Services services, ChunkProgressListenerFactory worldloadlistenerfactory) { super("Server"); SERVER = this; // Paper - better singleton @@ -112,7 +112,7 @@ index a85170f6ff613b002d9471f18385d6fea7172e43..96748e184d953cb5838c1a90eb040acb this.status = new ServerStatus(); this.random = RandomSource.create(); this.port = -1; -@@ -940,9 +940,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0 && this.tickCount % autosavePeriod == 0; try { this.isSaving = true; -@@ -1468,20 +1468,20 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Purpur net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = worldserver.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper @@ -312,7 +312,7 @@ index a85170f6ff613b002d9471f18385d6fea7172e43..96748e184d953cb5838c1a90eb040acb } catch (Throwable throwable) { // Spigot Start CrashReport crashreport; -@@ -1587,33 +1586,33 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { this.executeBlocking(() -> { this.saveDebugReport(path.resolve("server")); -@@ -2511,40 +2510,40 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop getEntities(@Nullable Entity except, AABB box, Predicate predicate) { @@ -1295,7 +1295,7 @@ index d882d52ff7aa2c3a33438ecb078c810160ef47d1..440b738b94112d4bdf5f113d567bb802 List list = Lists.newArrayList(); ((ServerLevel)this).getEntityLookup().getEntities(except, box, list, predicate); // Paper - optimise this call return list; -@@ -1215,7 +1215,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1207,7 +1207,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @Override public List getEntities(EntityTypeTest filter, AABB box, Predicate predicate) { @@ -1304,7 +1304,7 @@ index d882d52ff7aa2c3a33438ecb078c810160ef47d1..440b738b94112d4bdf5f113d567bb802 List list = Lists.newArrayList(); // Paper start - optimise this call -@@ -1546,7 +1546,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1538,7 +1538,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } public ProfilerFiller getProfiler() { diff --git a/patches/server/0027-Use-cached-pool-for-mob-spawning-executor.patch b/patches/server/0027-Use-cached-pool-for-mob-spawning-executor.patch index 140997b..93851f0 100644 --- a/patches/server/0027-Use-cached-pool-for-mob-spawning-executor.patch +++ b/patches/server/0027-Use-cached-pool-for-mob-spawning-executor.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Use cached pool for mob spawning executor diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 705fe5e4a8b25fb061263ac60e491aeff83bd930..cff2a34ba0bbd2af20d60eb7934c7c62cd121b22 100644 +index 04a8cc1ec44b474e1048ccb06b4a7c11a61ec29b..66843d7ca82c4be7f45b7b830f0d45d925a3d504 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -43,6 +43,7 @@ import java.util.Optional; @@ -16,7 +16,7 @@ index 705fe5e4a8b25fb061263ac60e491aeff83bd930..cff2a34ba0bbd2af20d60eb7934c7c62 import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.atomic.AtomicReference; import java.util.function.BooleanSupplier; -@@ -303,7 +304,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop S spin(Function serverFactory) { AtomicReference atomicreference = new AtomicReference(); diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index d6c3db7234fa9b52e945cb004d8ae843aabf1302..dbefb06e013efadd056a60b60f4a0f1c1044ab97 100644 +index 9a4c782b8be6a837a5c1a07e930b6bb8069b1c54..642c56b17d98b5f527dfa271ee45c5e831c13bf6 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -1,6 +1,7 @@ @@ -45,7 +45,7 @@ index d6c3db7234fa9b52e945cb004d8ae843aabf1302..dbefb06e013efadd056a60b60f4a0f1c import java.util.function.BooleanSupplier; import javax.annotation.Nullable; import net.minecraft.DefaultUncaughtExceptionHandler; -@@ -393,7 +395,13 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -389,7 +391,13 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface DedicatedServer.LOGGER.info("JMX monitoring enabled"); }