diff --git a/patches/server/0004-Leaves-Server-Config-And-Command.patch b/patches/server/0004-Leaves-Server-Config-And-Command.patch index 405962ee..6b505629 100644 --- a/patches/server/0004-Leaves-Server-Config-And-Command.patch +++ b/patches/server/0004-Leaves-Server-Config-And-Command.patch @@ -128,10 +128,10 @@ index 35d2da9d91dcdd89de7c0f4af028fd182376ea8d..d73482fb1e71fe2951e96ae0593de268 .withRequiredArg() diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java new file mode 100644 -index 0000000000000000000000000000000000000000..8a2b48542be4c40898464f79ac332f29e6880c3d +index 0000000000000000000000000000000000000000..955904dfd4d22b7b2aacf6c800c33419624d52f3 --- /dev/null +++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -0,0 +1,824 @@ +@@ -0,0 +1,826 @@ +package top.leavesmc.leaves; + +import com.destroystokyo.paper.util.SneakyThrow; @@ -621,9 +621,11 @@ index 0000000000000000000000000000000000000000..8a2b48542be4c40898464f79ac332f29 + } + + public static boolean extraYggdrasilService = false; ++ public static boolean extraYggdrasilLoginProtect = false; + public static List extraYggdrasilServiceList = List.of("https://url.with.authlib-injector-yggdrasil"); + private static void extraYggdrasilService() { + extraYggdrasilService = getBoolean("settings.misc.extra-yggdrasil-service.enable", extraYggdrasilService); ++ extraYggdrasilLoginProtect = getBoolean("settings.misc.extra-yggdrasil-service.login-protect", extraYggdrasilLoginProtect); + extraYggdrasilServiceList = getList("settings.misc.extra-yggdrasil-service.urls", extraYggdrasilServiceList); + if (extraYggdrasilService) { + } diff --git a/patches/server/0057-Leaves-Extra-Yggdrasil-Service.patch b/patches/server/0057-Leaves-Extra-Yggdrasil-Service.patch index d1dd4a52..62c0af7a 100644 --- a/patches/server/0057-Leaves-Extra-Yggdrasil-Service.patch +++ b/patches/server/0057-Leaves-Extra-Yggdrasil-Service.patch @@ -30,8 +30,21 @@ index dae36c6452ccd57a436dd918547b64d59957ab0a..973ecf723e4239307600b42f2d12c264 // CraftBukkit start String s = (String) Optional.ofNullable((String) optionset.valueOf("world")).orElse(dedicatedserversettings.getProperties().levelName); LevelStorageSource convertable = LevelStorageSource.createDefault(file.toPath()); +diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java +index c358f6de2947e16da54acdc7809c70ffae331944..54265a48aab8dc74c34903e177f9e578f459b35a 100644 +--- a/src/main/java/net/minecraft/server/MinecraftServer.java ++++ b/src/main/java/net/minecraft/server/MinecraftServer.java +@@ -264,7 +264,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop public + private long lastServerStatus; + public final Thread serverThread; + private long nextTickTime; diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index ffe31cf433c26264ab4d2e80bdbea166f79b614d..b5c0ad9065ab28b669ab602b8fe520b67f072c2c 100644 +index 59edfc922c5745e65469489cb319dbd0f1c812c9..e7bcaf347a28c805f68a805f460be33a44f84571 100644 --- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java +++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java @@ -12,6 +12,7 @@ import org.bukkit.configuration.ConfigurationSection; @@ -42,8 +55,8 @@ index ffe31cf433c26264ab4d2e80bdbea166f79b614d..b5c0ad9065ab28b669ab602b8fe520b6 import top.leavesmc.leaves.util.MathUtils; import java.io.File; -@@ -510,6 +511,9 @@ public final class LeavesConfig { - extraYggdrasilService = getBoolean("settings.misc.extra-yggdrasil-service.enable", extraYggdrasilService); +@@ -512,6 +513,9 @@ public final class LeavesConfig { + extraYggdrasilLoginProtect = getBoolean("settings.misc.extra-yggdrasil-service.login-protect", extraYggdrasilLoginProtect); extraYggdrasilServiceList = getList("settings.misc.extra-yggdrasil-service.urls", extraYggdrasilServiceList); if (extraYggdrasilService) { + LeavesLogger.LOGGER.warning("extra-yggdrasil-service is an unofficial support. Enabling it may cause data security problems!"); @@ -163,10 +176,10 @@ index 0000000000000000000000000000000000000000..ee10e314a7e1af28ea008123f75caee2 +} diff --git a/src/main/java/top/leavesmc/leaves/profile/LeavesMinecraftSessionService.java b/src/main/java/top/leavesmc/leaves/profile/LeavesMinecraftSessionService.java new file mode 100644 -index 0000000000000000000000000000000000000000..98ef48c9e47d2aff31bb326dd30a246cac94f55f +index 0000000000000000000000000000000000000000..fc39aa3c97118a3796f10951145f17ad696a79cb --- /dev/null +++ b/src/main/java/top/leavesmc/leaves/profile/LeavesMinecraftSessionService.java -@@ -0,0 +1,91 @@ +@@ -0,0 +1,101 @@ +package top.leavesmc.leaves.profile; + +import com.destroystokyo.paper.profile.PaperMinecraftSessionService; @@ -236,12 +249,22 @@ index 0000000000000000000000000000000000000000..98ef48c9e47d2aff31bb326dd30a246c + arguments.put("ip", address.getHostAddress()); + } + ++ GameProfile cache = null; ++ if (LeavesConfig.extraYggdrasilLoginProtect) { ++ cache = MinecraftServer.getServer().services.profileCache().getProfileIfCached(user.getName()); ++ } ++ + for (URL checkUrl : extraYggdrasilList) { + URL url = HttpAuthenticationService.concatenateURL(checkUrl, HttpAuthenticationService.buildQuery(arguments)); + + try { + HasJoinedMinecraftServerResponse response = this.getAuthenticationService().makeHasJoinResponse(url); + if (response != null && response.getId() != null) { ++ if (LeavesConfig.extraYggdrasilLoginProtect && cache != null) { ++ if (response.getId() != cache.getId()) { ++ continue; ++ } ++ } + result = new GameProfile(response.getId(), user.getName()); + if (response.getProperties() != null) { + result.getProperties().putAll(response.getProperties()); diff --git a/patches/server/0061-Syncmatica-Protocol.patch b/patches/server/0061-Syncmatica-Protocol.patch index f0044356..65097743 100644 --- a/patches/server/0061-Syncmatica-Protocol.patch +++ b/patches/server/0061-Syncmatica-Protocol.patch @@ -54,7 +54,7 @@ index 35295d8577acf11bd701ef2a7aa1bab3784c7274..16433351834ec562debcc1062ad1c0cf ServerGamePacketListenerImpl.LOGGER.error("Couldn\'t dispatch custom payload", ex); this.disconnect("Invalid custom payload!", org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PAYLOAD); diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index b5c0ad9065ab28b669ab602b8fe520b67f072c2c..12394d7ef3c2372fb8634a0b78d4da89912efe59 100644 +index e7bcaf347a28c805f68a805f460be33a44f84571..5db4a3687f05bdc1ab3da0e74536dc8f72c7c1b5 100644 --- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java +++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java @@ -13,6 +13,7 @@ import org.bukkit.configuration.file.YamlConfiguration; @@ -65,7 +65,7 @@ index b5c0ad9065ab28b669ab602b8fe520b67f072c2c..12394d7ef3c2372fb8634a0b78d4da89 import top.leavesmc.leaves.util.MathUtils; import java.io.File; -@@ -548,6 +549,7 @@ public final class LeavesConfig { +@@ -550,6 +551,7 @@ public final class LeavesConfig { syncmaticaQuota = getBoolean("settings.protocol.syncmatica.quota", syncmaticaQuota); syncmaticaQuotaLimit = getInt("settings.protocol.syncmatica.quota-limit", syncmaticaQuotaLimit); if (syncmaticaProtocol) { diff --git a/patches/server/0071-Creative-fly-no-clip.patch b/patches/server/0071-Creative-fly-no-clip.patch index 775c6e36..aee9b404 100644 --- a/patches/server/0071-Creative-fly-no-clip.patch +++ b/patches/server/0071-Creative-fly-no-clip.patch @@ -85,10 +85,10 @@ index d9baa85962236c42219cf09d4f3129be93ff069c..c1bd06fbc2c5683888f7264c35c25feb public boolean isSpawning() { diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -index c69a2efafd31b2367cc9f20652585a801eecea0c..9badc03ac95064824a8dc3e8fbc74b88d6939d2e 100644 +index 41ecc020ee1277dc6af126a3531901567ce8217b..6c425c2aa1c722bf66aed452aefa4bf5dc96c027 100644 --- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java +++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java -@@ -594,6 +594,7 @@ public final class LeavesConfig { +@@ -596,6 +596,7 @@ public final class LeavesConfig { } public static void registerCarpetRules() {