From 39ad366e3b59adf382edd943ee597c77dff2b2b0 Mon Sep 17 00:00:00 2001 From: Zoe Date: Sat, 23 Jan 2021 22:30:54 -0600 Subject: [PATCH 1/3] Build For all PRs --- .github/workflows/build.yml | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 975aae38..45f5cb13 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,15 +17,7 @@ on: paths-ignore: - '*.md' - 'Jenkinsfile' - branches: - - ver/1.16.5 - - ver/1.16.4 - - ver/1.16.3 - - ver/1.16.1 - - ver/1.16.2 - - leaflight/ver/1.16.4 - - leaflight/ver/1.16.5 - + jobs: build: From 188fc31d79348fa24f5f77ca4e98b6c87e015aad Mon Sep 17 00:00:00 2001 From: Hugo Planque <12386279+HookWoods@users.noreply.github.com> Date: Sun, 24 Jan 2021 16:23:34 +0100 Subject: [PATCH 2/3] Fix network bug (#355) --- patches/server/0066-New-Network-System.patch | 62 +++-- patches/server/0068-Port-krypton.patch | 279 +------------------ 2 files changed, 38 insertions(+), 303 deletions(-) diff --git a/patches/server/0066-New-Network-System.patch b/patches/server/0066-New-Network-System.patch index 0c0613a5..936e1e53 100644 --- a/patches/server/0066-New-Network-System.patch +++ b/patches/server/0066-New-Network-System.patch @@ -41,7 +41,7 @@ index 87cf9cd88d1fb5ae70d19e5618ebfb67d281304a..a1c2bea7c93433434b4e4dfd0bb4b962 public boolean getPVP() { diff --git a/src/main/java/net/minecraft/server/ServerConnection.java b/src/main/java/net/minecraft/server/ServerConnection.java -index 0668d383db1f3a81d1053954d72678c7ac5aecec..f20be527bec58bad8e4a5bb7bb887949cb6d1d99 100644 +index 0668d383db1f3a81d1053954d72678c7ac5aecec..d22f0ee3f7f2daa8323d454aca1f94733b249333 100644 --- a/src/main/java/net/minecraft/server/ServerConnection.java +++ b/src/main/java/net/minecraft/server/ServerConnection.java @@ -11,6 +11,7 @@ import io.netty.channel.ChannelInitializer; @@ -52,7 +52,7 @@ index 0668d383db1f3a81d1053954d72678c7ac5aecec..f20be527bec58bad8e4a5bb7bb887949 import io.netty.channel.epoll.EpollEventLoopGroup; import io.netty.channel.epoll.EpollServerSocketChannel; import io.netty.channel.nio.NioEventLoopGroup; -@@ -26,16 +27,20 @@ import java.util.List; +@@ -26,6 +27,7 @@ import java.util.List; import javax.annotation.Nullable; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -60,20 +60,7 @@ index 0668d383db1f3a81d1053954d72678c7ac5aecec..f20be527bec58bad8e4a5bb7bb887949 public class ServerConnection { - private static final Logger LOGGER = LogManager.getLogger(); -+ /* // Yatopia Start - New network system - Remove unused fields - public static final LazyInitVar a = new LazyInitVar<>(() -> { - return new NioEventLoopGroup(0, (new ThreadFactoryBuilder()).setNameFormat("Netty Server IO #%d").setDaemon(true).build()); - }); - public static final LazyInitVar b = new LazyInitVar<>(() -> { - return new EpollEventLoopGroup(0, (new ThreadFactoryBuilder()).setNameFormat("Netty Epoll Server IO #%d").setDaemon(true).build()); - }); -+ */ -+ // Yatopia end - private final MinecraftServer e; - public volatile boolean c; - private final List listeningChannels = Collections.synchronizedList(Lists.newArrayList()); -@@ -52,15 +57,29 @@ public class ServerConnection { +@@ -52,15 +54,29 @@ public class ServerConnection { } // Paper end @@ -87,7 +74,7 @@ index 0668d383db1f3a81d1053954d72678c7ac5aecec..f20be527bec58bad8e4a5bb7bb887949 this.c = true; + + // Yatopia start - New network system -+ this.networkType = NetworkType.bestType(minecraftserver); ++ this.networkType = NetworkType.bestType(minecraftserver, LOGGER); + this.boss = networkType.createEventLoopGroup(NetworkType.LoopGroupType.BOSS); + this.worker = networkType.createEventLoopGroup(NetworkType.LoopGroupType.WORKER); + // Yatopia end @@ -103,7 +90,7 @@ index 0668d383db1f3a81d1053954d72678c7ac5aecec..f20be527bec58bad8e4a5bb7bb887949 Class oclass; LazyInitVar lazyinitvar; -@@ -73,16 +92,25 @@ public class ServerConnection { +@@ -73,16 +89,25 @@ public class ServerConnection { lazyinitvar = ServerConnection.a; ServerConnection.LOGGER.info("Using default channel type"); } @@ -130,7 +117,7 @@ index 0668d383db1f3a81d1053954d72678c7ac5aecec..f20be527bec58bad8e4a5bb7bb887949 } catch (ChannelException channelexception) { ; } -@@ -97,7 +125,8 @@ public class ServerConnection { +@@ -97,7 +122,8 @@ public class ServerConnection { channel.pipeline().addLast("packet_handler", (ChannelHandler) object); ((NetworkManager) object).setPacketListener(new HandshakeListener(ServerConnection.this.e, (NetworkManager) object)); } @@ -141,18 +128,24 @@ index 0668d383db1f3a81d1053954d72678c7ac5aecec..f20be527bec58bad8e4a5bb7bb887949 } diff --git a/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java b/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java -index 35f212c2ac43ebea6ce9c4a333738c7a869ebc18..c4d0dabd408c7a943dafd6ca89b598cb4afb440e 100644 +index 35f212c2ac43ebea6ce9c4a333738c7a869ebc18..6fb4fdaaba092cce04e3600122e534ce8dff073c 100644 --- a/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java +++ b/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java -@@ -303,4 +303,11 @@ public class YatopiaConfig { +@@ -303,4 +303,17 @@ public class YatopiaConfig { logPlayerLoginLoc = getBoolean("settings.log-player-login-location", logPlayerLoginLoc); } + public static boolean ioUringBeta = false; + public static boolean tcpFastOpen = false; ++ public static boolean debugNetwork = false; + private static void newNetworkSystem() { + ioUringBeta = getBoolean("network.io-uring", ioUringBeta); -+ tcpFastOpen = getBoolean("network.ftcp-fastopen", tcpFastOpen); ++ if (config.get("network.ftcp-fastopen") != null) { ++ config.set("network.tcp-fastopen", getBoolean("network.ftcp-fastopen", tcpFastOpen)); ++ config.set("network.ftcp-fastopen", null); ++ } ++ tcpFastOpen = getBoolean("network.tcp-fastopen", tcpFastOpen); ++ debugNetwork = getBoolean("network.debug", debugNetwork); + } + } @@ -191,10 +184,10 @@ index 0000000000000000000000000000000000000000..3e74e23f3cc44b7547d9f8575b411059 +} diff --git a/src/main/java/org/yatopiamc/yatopia/server/network/NetworkType.java b/src/main/java/org/yatopiamc/yatopia/server/network/NetworkType.java new file mode 100644 -index 0000000000000000000000000000000000000000..6b9d788dfef2c51111e9f2129a04fce7754c51ba +index 0000000000000000000000000000000000000000..6c387f29e4db7e1574a2bbb119465c48b8ed2f90 --- /dev/null +++ b/src/main/java/org/yatopiamc/yatopia/server/network/NetworkType.java -@@ -0,0 +1,110 @@ +@@ -0,0 +1,129 @@ +package org.yatopiamc.yatopia.server.network; + +import io.netty.channel.ChannelFactory; @@ -216,6 +209,8 @@ index 0000000000000000000000000000000000000000..6b9d788dfef2c51111e9f2129a04fce7 +import java.util.function.BiFunction; + +import net.minecraft.server.MinecraftServer; ++import org.apache.logging.log4j.Level; ++import org.apache.logging.log4j.Logger; +import org.spigotmc.SpigotConfig; +import org.yatopiamc.yatopia.server.YatopiaConfig; + @@ -264,7 +259,7 @@ index 0000000000000000000000000000000000000000..6b9d788dfef2c51111e9f2129a04fce7 + return new NettyThreadFactory(name, type.toString()); + } + -+ public static NetworkType bestType(MinecraftServer minecraftServer) { ++ public static NetworkType bestType(MinecraftServer minecraftServer, Logger logger) { + if (!minecraftServer.isUsingNativeTransport()) { + return NIO; + } @@ -275,20 +270,37 @@ index 0000000000000000000000000000000000000000..6b9d788dfef2c51111e9f2129a04fce7 + if (!SpigotConfig.bungee && YatopiaConfig.ioUringBeta && MinecraftServer.getServer().ax() < 0) { + if (IOUring.isAvailable()) { + return IOURING; ++ } else if (YatopiaConfig.debugNetwork) { ++ logger.log(Level.ERROR, "IOUring is not working: {}", exceptionMessage(IOUring.unavailabilityCause())); + } + } + + if (Epoll.isAvailable()) { + return EPOLL; ++ } else if (YatopiaConfig.debugNetwork) { ++ logger.log(Level.ERROR, "Epoll is not working: {}", exceptionMessage(Epoll.unavailabilityCause())); + } + + if (KQueue.isAvailable()) { + return KQUEUE; ++ } else if (YatopiaConfig.debugNetwork) { ++ logger.log(Level.ERROR, "KQueue is not working: {}", exceptionMessage(KQueue.unavailabilityCause())); + } + + return NIO; + } + ++ private static String exceptionMessage(Throwable throwable) { ++ StackTraceElement[] trace = throwable.getStackTrace(); ++ return getClassNameFromString(throwable.getClass().getName()) + " : " + throwable.getMessage() + ++ ((trace.length > 0) ? " @ " + throwable.getStackTrace()[0].getClassName() + ":" + throwable.getStackTrace()[0].getLineNumber() : ""); ++ } ++ ++ private static String getClassNameFromString(String className) { ++ int i = className.lastIndexOf('.'); ++ return i > 0 ? className.substring(i + 1) : className; ++ } ++ + public enum LoopGroupType { + BOSS("Boss"), + WORKER("Worker"); diff --git a/patches/server/0068-Port-krypton.patch b/patches/server/0068-Port-krypton.patch index aad5b848..bfda1a2d 100644 --- a/patches/server/0068-Port-krypton.patch +++ b/patches/server/0068-Port-krypton.patch @@ -59,232 +59,6 @@ index 0000000000000000000000000000000000000000..cdf5a3b1f7ec27171f3825f89cfb8d39 + } +} \ No newline at end of file -diff --git a/src/main/java/me/steinborn/krypton/mod/shared/network/compression/MinecraftCompressDecoder.java b/src/main/java/me/steinborn/krypton/mod/shared/network/compression/MinecraftCompressDecoder.java -new file mode 100644 -index 0000000000000000000000000000000000000000..e9a51c71e136be14ebe8a240c4b21205079fc71b ---- /dev/null -+++ b/src/main/java/me/steinborn/krypton/mod/shared/network/compression/MinecraftCompressDecoder.java -@@ -0,0 +1,68 @@ -+package me.steinborn.krypton.mod.shared.network.compression; -+ -+import com.velocitypowered.natives.compression.VelocityCompressor; -+import io.netty.buffer.ByteBuf; -+import io.netty.channel.ChannelHandlerContext; -+import io.netty.handler.codec.CorruptedFrameException; -+import io.netty.handler.codec.MessageToMessageDecoder; -+import net.minecraft.server.PacketDataSerializer; -+ -+import java.util.List; -+ -+import static com.velocitypowered.natives.util.MoreByteBufUtils.ensureCompatible; -+import static com.velocitypowered.natives.util.MoreByteBufUtils.preferredBuffer; -+ -+public class MinecraftCompressDecoder extends MessageToMessageDecoder { -+ -+ private static final int VANILLA_MAXIMUM_UNCOMPRESSED_SIZE = 2 * 1024 * 1024; // 2MiB -+ private static final int HARD_MAXIMUM_UNCOMPRESSED_SIZE = 16 * 1024 * 1024; // 16MiB -+ -+ private static final int UNCOMPRESSED_CAP = -+ Boolean.getBoolean("velocity.increased-compression-cap") -+ ? HARD_MAXIMUM_UNCOMPRESSED_SIZE : VANILLA_MAXIMUM_UNCOMPRESSED_SIZE; -+ -+ private final int threshold; -+ private final VelocityCompressor compressor; -+ -+ public MinecraftCompressDecoder(int threshold, VelocityCompressor compressor) { -+ this.threshold = threshold; -+ this.compressor = compressor; -+ } -+ -+ @Override -+ protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) throws Exception { -+ PacketDataSerializer wrappedBuf = new PacketDataSerializer(in); -+ int claimedUncompressedSize = wrappedBuf.readVarInt(); -+ if (claimedUncompressedSize == 0) { -+ // This message is not compressed. -+ out.add(in.retainedSlice()); -+ return; -+ } -+ -+ if (claimedUncompressedSize < threshold) { -+ throw new CorruptedFrameException("Uncompressed size " + claimedUncompressedSize + " is less than" -+ + " threshold " + threshold); -+ } -+ if (claimedUncompressedSize > UNCOMPRESSED_CAP) { -+ throw new CorruptedFrameException("Uncompressed size " + claimedUncompressedSize + " exceeds hard " + -+ "threshold of " + UNCOMPRESSED_CAP); -+ } -+ -+ ByteBuf compatibleIn = ensureCompatible(ctx.alloc(), compressor, in); -+ ByteBuf uncompressed = preferredBuffer(ctx.alloc(), compressor, claimedUncompressedSize); -+ try { -+ compressor.inflate(compatibleIn, uncompressed, claimedUncompressedSize); -+ out.add(uncompressed); -+ } catch (Exception e) { -+ uncompressed.release(); -+ throw e; -+ } finally { -+ compatibleIn.release(); -+ } -+ } -+ -+ @Override -+ public void handlerRemoved(ChannelHandlerContext ctx) throws Exception { -+ compressor.close(); -+ } -+} -\ No newline at end of file -diff --git a/src/main/java/me/steinborn/krypton/mod/shared/network/compression/MinecraftCompressEncoder.java b/src/main/java/me/steinborn/krypton/mod/shared/network/compression/MinecraftCompressEncoder.java -new file mode 100644 -index 0000000000000000000000000000000000000000..1114e1db59476353ad609a519b71479438db7b0c ---- /dev/null -+++ b/src/main/java/me/steinborn/krypton/mod/shared/network/compression/MinecraftCompressEncoder.java -@@ -0,0 +1,59 @@ -+package me.steinborn.krypton.mod.shared.network.compression; -+ -+ -+import com.velocitypowered.natives.compression.VelocityCompressor; -+import com.velocitypowered.natives.util.MoreByteBufUtils; -+import io.netty.buffer.ByteBuf; -+import io.netty.channel.ChannelHandlerContext; -+import io.netty.handler.codec.MessageToByteEncoder; -+import net.minecraft.server.PacketDataSerializer; -+ -+public class MinecraftCompressEncoder extends MessageToByteEncoder { -+ -+ private final int threshold; -+ private final VelocityCompressor compressor; -+ -+ public MinecraftCompressEncoder(int threshold, VelocityCompressor compressor) { -+ this.threshold = threshold; -+ this.compressor = compressor; -+ } -+ -+ @Override -+ protected void encode(ChannelHandlerContext ctx, ByteBuf msg, ByteBuf out) throws Exception { -+ PacketDataSerializer wrappedBuf = new PacketDataSerializer(out); -+ int uncompressed = msg.readableBytes(); -+ if (uncompressed < threshold) { -+ // Under the threshold, there is nothing to do. -+ wrappedBuf.writeVarInt(0); -+ out.writeBytes(msg); -+ } else { -+ wrappedBuf.writeVarInt(uncompressed); -+ ByteBuf compatibleIn = MoreByteBufUtils.ensureCompatible(ctx.alloc(), compressor, msg); -+ try { -+ compressor.deflate(compatibleIn, out); -+ } finally { -+ compatibleIn.release(); -+ } -+ } -+ } -+ -+ @Override -+ protected ByteBuf allocateBuffer(ChannelHandlerContext ctx, ByteBuf msg, boolean preferDirect) -+ throws Exception { -+ // We allocate bytes to be compressed plus 1 byte. This covers two cases: -+ // -+ // - Compression -+ // According to https://github.com/ebiggers/libdeflate/blob/master/libdeflate.h#L103, -+ // if the data compresses well (and we do not have some pathological case) then the maximum -+ // size the compressed size will ever be is the input size minus one. -+ // - Uncompressed -+ // This is fairly obvious - we will then have one more than the uncompressed size. -+ int initialBufferSize = msg.readableBytes() + 1; -+ return MoreByteBufUtils.preferredBuffer(ctx.alloc(), compressor, initialBufferSize); -+ } -+ -+ @Override -+ public void handlerRemoved(ChannelHandlerContext ctx) throws Exception { -+ compressor.close(); -+ } -+} -\ No newline at end of file -diff --git a/src/main/java/me/steinborn/krypton/mod/shared/network/pipeline/MinecraftCipherDecoder.java b/src/main/java/me/steinborn/krypton/mod/shared/network/pipeline/MinecraftCipherDecoder.java -new file mode 100644 -index 0000000000000000000000000000000000000000..2612c350446b172629b8030602ed812fa69f24a4 ---- /dev/null -+++ b/src/main/java/me/steinborn/krypton/mod/shared/network/pipeline/MinecraftCipherDecoder.java -@@ -0,0 +1,36 @@ -+package me.steinborn.krypton.mod.shared.network.pipeline; -+ -+import com.google.common.base.Preconditions; -+import com.velocitypowered.natives.encryption.VelocityCipher; -+import com.velocitypowered.natives.util.MoreByteBufUtils; -+import io.netty.buffer.ByteBuf; -+import io.netty.channel.ChannelHandlerContext; -+import io.netty.handler.codec.MessageToMessageDecoder; -+ -+import java.util.List; -+ -+public class MinecraftCipherDecoder extends MessageToMessageDecoder { -+ -+ private final VelocityCipher cipher; -+ -+ public MinecraftCipherDecoder(VelocityCipher cipher) { -+ this.cipher = Preconditions.checkNotNull(cipher, "cipher"); -+ } -+ -+ @Override -+ protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) throws Exception { -+ ByteBuf compatible = MoreByteBufUtils.ensureCompatible(ctx.alloc(), cipher, in).slice(); -+ try { -+ cipher.process(compatible); -+ out.add(compatible); -+ } catch (Exception e) { -+ compatible.release(); // compatible will never be used if we throw an exception -+ throw e; -+ } -+ } -+ -+ @Override -+ public void handlerRemoved(ChannelHandlerContext ctx) throws Exception { -+ cipher.close(); -+ } -+} -diff --git a/src/main/java/me/steinborn/krypton/mod/shared/network/pipeline/MinecraftCipherEncoder.java b/src/main/java/me/steinborn/krypton/mod/shared/network/pipeline/MinecraftCipherEncoder.java -new file mode 100644 -index 0000000000000000000000000000000000000000..068b0d51daf11045a5054cddd53897ecdd117a37 ---- /dev/null -+++ b/src/main/java/me/steinborn/krypton/mod/shared/network/pipeline/MinecraftCipherEncoder.java -@@ -0,0 +1,36 @@ -+package me.steinborn.krypton.mod.shared.network.pipeline; -+ -+import com.google.common.base.Preconditions; -+import com.velocitypowered.natives.encryption.VelocityCipher; -+import com.velocitypowered.natives.util.MoreByteBufUtils; -+import io.netty.buffer.ByteBuf; -+import io.netty.channel.ChannelHandlerContext; -+import io.netty.handler.codec.MessageToMessageEncoder; -+ -+import java.util.List; -+ -+public class MinecraftCipherEncoder extends MessageToMessageEncoder { -+ -+ private final VelocityCipher cipher; -+ -+ public MinecraftCipherEncoder(VelocityCipher cipher) { -+ this.cipher = Preconditions.checkNotNull(cipher, "cipher"); -+ } -+ -+ @Override -+ protected void encode(ChannelHandlerContext ctx, ByteBuf msg, List out) throws Exception { -+ ByteBuf compatible = MoreByteBufUtils.ensureCompatible(ctx.alloc(), cipher, msg); -+ try { -+ cipher.process(compatible); -+ out.add(compatible); -+ } catch (Exception e) { -+ compatible.release(); // compatible will never be used if we throw an exception -+ throw e; -+ } -+ } -+ -+ @Override -+ public void handlerRemoved(ChannelHandlerContext ctx) throws Exception { -+ cipher.close(); -+ } -+} -\ No newline at end of file diff --git a/src/main/java/net/minecraft/server/LegacyPingHandler.java b/src/main/java/net/minecraft/server/LegacyPingHandler.java index 4a49fe4cc600e2b70963302ddae0c4479849f3f5..3abc3869b8012f060e1997822ffdb321f4884929 100644 --- a/src/main/java/net/minecraft/server/LegacyPingHandler.java @@ -302,7 +76,7 @@ index 4a49fe4cc600e2b70963302ddae0c4479849f3f5..3abc3869b8012f060e1997822ffdb321 // Paper start - Make legacy ping handler more reliable diff --git a/src/main/java/net/minecraft/server/LoginListener.java b/src/main/java/net/minecraft/server/LoginListener.java -index 847122f76f6d951b24b22c86276140e02aaf37d6..174197f41bedab6a45e96323adff4f3f6238cef2 100644 +index 847122f76f6d951b24b22c86276140e02aaf37d6..fe15c450bc1f792dba74823e08fc70f0757ceac3 100644 --- a/src/main/java/net/minecraft/server/LoginListener.java +++ b/src/main/java/net/minecraft/server/LoginListener.java @@ -8,6 +8,7 @@ import java.math.BigInteger; @@ -313,57 +87,6 @@ index 847122f76f6d951b24b22c86276140e02aaf37d6..174197f41bedab6a45e96323adff4f3f import java.security.PrivateKey; import java.util.Arrays; import java.util.Random; -@@ -256,8 +257,8 @@ public class LoginListener implements PacketLoginInListener { - - s = (new BigInteger(MinecraftEncryption.a("", this.server.getKeyPair().getPublic(), this.loginKey))).toString(16); - this.g = LoginListener.EnumProtocolState.AUTHENTICATING; -- this.networkManager.a(this.loginKey); // Tuinity -- } catch (CryptographyException cryptographyexception) { -+ this.networkManager.setupEncryption(this.loginKey); // Tuinity // Yatopia - New network system -+ } catch (CryptographyException | GeneralSecurityException cryptographyexception) { // Yatopia - throw new IllegalStateException("Protocol error", cryptographyexception); - } - -diff --git a/src/main/java/net/minecraft/server/NetworkManager.java b/src/main/java/net/minecraft/server/NetworkManager.java -index 08227ab446d6332af76491a063653f7f13f43560..a6890caa3c78dea773a7f71e919d5f352db02e1b 100644 ---- a/src/main/java/net/minecraft/server/NetworkManager.java -+++ b/src/main/java/net/minecraft/server/NetworkManager.java -@@ -21,6 +21,17 @@ import java.net.SocketAddress; - import java.util.Queue; - import javax.annotation.Nullable; - import javax.crypto.Cipher; -+// Yatopia start -+import javax.crypto.SecretKey; -+import me.steinborn.krypton.mod.shared.network.compression.MinecraftCompressDecoder; -+import me.steinborn.krypton.mod.shared.network.compression.MinecraftCompressEncoder; -+import me.steinborn.krypton.mod.shared.network.pipeline.MinecraftCipherDecoder; -+import me.steinborn.krypton.mod.shared.network.pipeline.MinecraftCipherEncoder; -+import com.velocitypowered.natives.compression.VelocityCompressor; -+import com.velocitypowered.natives.encryption.VelocityCipher; -+import com.velocitypowered.natives.util.Natives; -+import java.security.GeneralSecurityException; -+// Yatopia end - import org.apache.commons.lang3.Validate; - import org.apache.logging.log4j.LogManager; - import org.apache.logging.log4j.Logger; -@@ -107,6 +118,17 @@ public class NetworkManager extends SimpleChannelInboundHandler> { - } - // Tuinity end - allow controlled flushing - -+ // Yatopia start -+ public void setupEncryption(SecretKey key) throws GeneralSecurityException { -+ VelocityCipher decryption = Natives.cipher.get().forDecryption(key); -+ VelocityCipher encryption = Natives.cipher.get().forEncryption(key); -+ -+ this.n = true; -+ this.channel.pipeline().addBefore("splitter", "decrypt", new MinecraftCipherDecoder(decryption)); -+ this.channel.pipeline().addBefore("prepender", "encrypt", new MinecraftCipherEncoder(encryption)); -+ } -+ // Yatopia end -+ - public NetworkManager(EnumProtocolDirection enumprotocoldirection) { - this.h = enumprotocoldirection; - } diff --git a/src/main/java/net/minecraft/server/PacketDataSerializer.java b/src/main/java/net/minecraft/server/PacketDataSerializer.java index f43193c1090238f2241b878120247d1b3d0d4e57..7dc31ee3211a895993c522a7155a0d8641fd442c 100644 --- a/src/main/java/net/minecraft/server/PacketDataSerializer.java From aebd71f72489de12054a6206b75518dd904e8ce1 Mon Sep 17 00:00:00 2001 From: ishland Date: Sun, 24 Jan 2021 23:52:19 +0800 Subject: [PATCH 3/3] Drop Unsafe UUID & Proxy Data Patches (#357) --- .gitignore | 1 + PATCHES.md | 68 ++++----- ...tch => 0006-PlayerAttackEntityEvent.patch} | 0 patches/api/0006-ProxyForwardDataEvent.patch | 137 ------------------ ...atch => 0007-Disable-reload-command.patch} | 0 ...hly-optimize-VillagePlace-filtering.patch} | 0 ...0028-Use-offline-uuids-if-we-need-to.patch | 105 -------------- ...tals.patch => 0029-Optimise-portals.patch} | 0 ...0030-Nuke-streams-off-BlockPosition.patch} | 0 ...31-Nuke-streams-off-SectionPosition.patch} | 0 ...p-wasting-resources-on-JsonList-get.patch} | 0 ...Fix-LightEngineThreaded-memory-leak.patch} | 0 .../server/0034-ProxyForwardDataEvent.patch | 96 ------------ ...espect-PlayerKickEvent-leaveMessage.patch} | 0 ...0035-Shutdown-Bootstrap-thread-pool.patch} | 0 ...rs.patch => 0036-Optimize-Villagers.patch} | 0 ...t-command-for-multiple-additions-re.patch} | 2 +- ...tch => 0038-PlayerAttackEntityEvent.patch} | 2 +- ...-Ensure-pools-create-daemon-threads.patch} | 2 +- ... => 0040-Add-IntelliJ-IDEA-runnable.patch} | 0 ...ndsException-when-sending-too-many-.patch} | 0 ...mand.patch => 0042-Add-nspt-command.patch} | 13 +- ... => 0043-Configurable-flight-checks.patch} | 8 +- ...e-recipe-lookups-in-CraftingManager.patch} | 0 ...ch => 0045-Improve-task-performance.patch} | 0 ...> 0046-Optimize-advancement-loading.patch} | 0 ...047-lithium-PerlinNoiseSamplerMixin.patch} | 0 ...lithium-VoronoiBiomeAccessTypeMixin.patch} | 0 ...49-lithium-NoiseChunkGeneratorMixin.patch} | 0 ... => 0050-lithium-reduce-allocations.patch} | 0 ... => 0051-Smarter-statistics-ticking.patch} | 6 +- ...052-Configurable-criterion-triggers.patch} | 4 +- ...0053-Configurable-BlockPhysicsEvent.patch} | 4 +- ...ws.patch => 0054-Infinity-No-Arrows.patch} | 2 +- ...patch => 0055-Custom-Locale-Support.patch} | 0 ...> 0056-Configurable-movement-checks.patch} | 4 +- ...-Configurable-enchanting-table-tick.patch} | 4 +- ...tance-map-when-animal-and-mob-spawn.patch} | 0 ...ame-connecting-with-no-texture-bein.patch} | 0 ... => 0060-Optimised-hallowen-checker.patch} | 0 ...case-for-floodgate-and-offline-uuids.patch | 29 ---- ...h => 0061-Smol-entity-optimisations.patch} | 0 ...d-config-for-logging-login-location.patch} | 4 +- ...em.patch => 0063-New-Network-System.patch} | 4 +- ...ydrogen.patch => 0064-Port-hydrogen.patch} | 0 ...-krypton.patch => 0065-Port-krypton.patch} | 2 +- 46 files changed, 63 insertions(+), 434 deletions(-) rename patches/api/{0007-PlayerAttackEntityEvent.patch => 0006-PlayerAttackEntityEvent.patch} (100%) delete mode 100644 patches/api/0006-ProxyForwardDataEvent.patch rename patches/api/{0008-Disable-reload-command.patch => 0007-Disable-reload-command.patch} (100%) rename patches/server/{0029-Highly-optimize-VillagePlace-filtering.patch => 0028-Highly-optimize-VillagePlace-filtering.patch} (100%) delete mode 100644 patches/server/0028-Use-offline-uuids-if-we-need-to.patch rename patches/server/{0030-Optimise-portals.patch => 0029-Optimise-portals.patch} (100%) rename patches/server/{0031-Nuke-streams-off-BlockPosition.patch => 0030-Nuke-streams-off-BlockPosition.patch} (100%) rename patches/server/{0032-Nuke-streams-off-SectionPosition.patch => 0031-Nuke-streams-off-SectionPosition.patch} (100%) rename patches/server/{0033-Stop-wasting-resources-on-JsonList-get.patch => 0032-Stop-wasting-resources-on-JsonList-get.patch} (100%) rename patches/server/{0035-Fix-LightEngineThreaded-memory-leak.patch => 0033-Fix-LightEngineThreaded-memory-leak.patch} (100%) delete mode 100644 patches/server/0034-ProxyForwardDataEvent.patch rename patches/server/{0036-Respect-PlayerKickEvent-leaveMessage.patch => 0034-Respect-PlayerKickEvent-leaveMessage.patch} (100%) rename patches/server/{0037-Shutdown-Bootstrap-thread-pool.patch => 0035-Shutdown-Bootstrap-thread-pool.patch} (100%) rename patches/server/{0038-Optimize-Villagers.patch => 0036-Optimize-Villagers.patch} (100%) rename patches/server/{0039-Optimize-whitelist-command-for-multiple-additions-re.patch => 0037-Optimize-whitelist-command-for-multiple-additions-re.patch} (99%) rename patches/server/{0040-PlayerAttackEntityEvent.patch => 0038-PlayerAttackEntityEvent.patch} (96%) rename patches/server/{0041-Ensure-pools-create-daemon-threads.patch => 0039-Ensure-pools-create-daemon-threads.patch} (96%) rename patches/server/{0042-Add-IntelliJ-IDEA-runnable.patch => 0040-Add-IntelliJ-IDEA-runnable.patch} (100%) rename patches/server/{0043-Fix-IndexOutOfBoundsException-when-sending-too-many-.patch => 0041-Fix-IndexOutOfBoundsException-when-sending-too-many-.patch} (100%) rename patches/server/{0044-Add-nspt-command.patch => 0042-Add-nspt-command.patch} (93%) rename patches/server/{0045-Configurable-flight-checks.patch => 0043-Configurable-flight-checks.patch} (89%) rename patches/server/{0046-Heavily-optimize-recipe-lookups-in-CraftingManager.patch => 0044-Heavily-optimize-recipe-lookups-in-CraftingManager.patch} (100%) rename patches/server/{0047-Improve-task-performance.patch => 0045-Improve-task-performance.patch} (100%) rename patches/server/{0048-Optimize-advancement-loading.patch => 0046-Optimize-advancement-loading.patch} (100%) rename patches/server/{0049-lithium-PerlinNoiseSamplerMixin.patch => 0047-lithium-PerlinNoiseSamplerMixin.patch} (100%) rename patches/server/{0050-lithium-VoronoiBiomeAccessTypeMixin.patch => 0048-lithium-VoronoiBiomeAccessTypeMixin.patch} (100%) rename patches/server/{0051-lithium-NoiseChunkGeneratorMixin.patch => 0049-lithium-NoiseChunkGeneratorMixin.patch} (100%) rename patches/server/{0052-lithium-reduce-allocations.patch => 0050-lithium-reduce-allocations.patch} (100%) rename patches/server/{0053-Smarter-statistics-ticking.patch => 0051-Smarter-statistics-ticking.patch} (91%) rename patches/server/{0054-Configurable-criterion-triggers.patch => 0052-Configurable-criterion-triggers.patch} (94%) rename patches/server/{0055-Configurable-BlockPhysicsEvent.patch => 0053-Configurable-BlockPhysicsEvent.patch} (94%) rename patches/server/{0056-Infinity-No-Arrows.patch => 0054-Infinity-No-Arrows.patch} (95%) rename patches/server/{0057-Custom-Locale-Support.patch => 0055-Custom-Locale-Support.patch} (100%) rename patches/server/{0058-Configurable-movement-checks.patch => 0056-Configurable-movement-checks.patch} (97%) rename patches/server/{0059-Configurable-enchanting-table-tick.patch => 0057-Configurable-enchanting-table-tick.patch} (94%) rename patches/server/{0060-Do-not-update-distance-map-when-animal-and-mob-spawn.patch => 0058-Do-not-update-distance-map-when-animal-and-mob-spawn.patch} (100%) rename patches/server/{0062-PaperPR-Fix-username-connecting-with-no-texture-bein.patch => 0059-PaperPR-Fix-username-connecting-with-no-texture-bein.patch} (100%) rename patches/server/{0063-Optimised-hallowen-checker.patch => 0060-Optimised-hallowen-checker.patch} (100%) delete mode 100644 patches/server/0061-Add-a-special-case-for-floodgate-and-offline-uuids.patch rename patches/server/{0064-Smol-entity-optimisations.patch => 0061-Smol-entity-optimisations.patch} (100%) rename patches/server/{0065-add-config-for-logging-login-location.patch => 0062-add-config-for-logging-login-location.patch} (93%) rename patches/server/{0066-New-Network-System.patch => 0063-New-Network-System.patch} (98%) rename patches/server/{0067-Port-hydrogen.patch => 0064-Port-hydrogen.patch} (100%) rename patches/server/{0068-Port-krypton.patch => 0065-Port-krypton.patch} (99%) diff --git a/.gitignore b/.gitignore index d50025d8..69edcfd6 100644 --- a/.gitignore +++ b/.gitignore @@ -60,3 +60,4 @@ yatopia-launcher.jar last-paper !upstreamConfig/* !upstreamCommits/* +testserver/ diff --git a/PATCHES.md b/PATCHES.md index 55dbb251..f2d23214 100644 --- a/PATCHES.md +++ b/PATCHES.md @@ -8,25 +8,24 @@ # Patches | Side | Patch | Author | CoAuthors | | ----- | ------------- |:-------------:| -----:| -| api | AFK API | William Blake Galbreath | | | server | AFK API | William Blake Galbreath | | +| api | AFK API | William Blake Galbreath | | | server | Ability to re-add farmland mechanics from Alpha | Yive | | | server | Actually unload POI data | Spottedleaf | | | server | Add /ping command | William Blake Galbreath | | | server | Add 5 second tps average in /tps | William Blake Galbreath | | | api | Add ChatColor.getById | Aikar | | -| api | Add EntityTeleportHinderedEvent | Mariell Hoversholm | | | server | Add EntityTeleportHinderedEvent | Mariell Hoversholm | | -| api | Add GameProfileLookupEvent | tr7zw | | +| api | Add EntityTeleportHinderedEvent | Mariell Hoversholm | | | server | Add GameProfileLookupEvent | tr7zw | | +| api | Add GameProfileLookupEvent | tr7zw | | | server | Add IntelliJ IDEA runnable | Zoe | | | server | Add JsonList save timings | Ivan Pekov | | -| api | Add NBT API as a first-class lib | tr7zw | | | server | Add NBT API as a first-class lib | tr7zw | | -| api | Add StructureGenerateEvent | Nahuel | Mariell Hoversholm | +| api | Add NBT API as a first-class lib | tr7zw | | | server | Add StructureGenerateEvent | Nahuel | Mariell Hoversholm | +| api | Add StructureGenerateEvent | Nahuel | Mariell Hoversholm | | server | Add Velocity natives for encryption and compression | Andrew Steinborn | | -| server | Add a special case for floodgate and offline uuids | Ivan Pekov | | | server | Add adjustable breeding cooldown to config | montlikadani | | | server | Add allow water in end world option | William Blake Galbreath | | | server | Add boat fall damage config | BillyGalbreath | | @@ -34,12 +33,12 @@ # Patches | server | Add component util | William Blake Galbreath | | | server | Add config for allowing Endermen to despawn even while | jmp | | | server | Add configurable snowball damage | BillyGalbreath | | -| api | Add critical hit check to EntityDamagedByEntityEvent | BillyGalbreath | | | server | Add critical hit check to EntityDamagedByEntityEvent | BillyGalbreath | | +| api | Add critical hit check to EntityDamagedByEntityEvent | BillyGalbreath | | | server | Add demo command | BillyGalbreath | | | server | Add enderman and creeper griefing controls | William Blake Galbreath | | -| api | Add last tick time API | Ivan Pekov | tr7zw | | server | Add last tick time API | Ivan Pekov | tr7zw | +| api | Add last tick time API | Ivan Pekov | tr7zw | | server | Add mobGriefing bypass to everything affected | Encode42 | | | server | Add no-tick block list | William Blake Galbreath | | | server | Add nspt command | Ivan Pekov | | @@ -49,16 +48,16 @@ # Patches | server | Add option to disable dolphin treasure searching | William Blake Galbreath | | | server | Add option to disable mushroom block updates | William Blake Galbreath | | | server | Add option to disable observer clocks | Phoenix616 | | -| api | Add option to disable zombie aggressiveness towards villagers | nitricspace | | | server | Add option to disable zombie aggressiveness towards villagers | nitricspace | | +| api | Add option to disable zombie aggressiveness towards villagers | nitricspace | | | server | Add option to set armorstand step height | William Blake Galbreath | | | server | Add option to teleport to spawn if outside world border | William Blake Galbreath | | | server | Add packet limiter config | Spottedleaf | | | server | Add permission for F3+N debug | William Blake Galbreath | | | server | Add phantom spawning options | William Blake Galbreath | | | server | Add player death exp control options | William Blake Galbreath | | -| api | Add predicate to recipe's ExactChoice ingredient | William Blake Galbreath | | | server | Add predicate to recipe's ExactChoice ingredient | William Blake Galbreath | | +| api | Add predicate to recipe's ExactChoice ingredient | William Blake Galbreath | | | server | Add soft async catcher | Spottedleaf | | | server | Add tablist suffix option for afk | montlikadani | | | server | Add timings for Behavior | Phoenix616 | | @@ -66,8 +65,8 @@ # Patches | server | Add twisting and weeping vines growth rates | BillyGalbreath | | | server | Add vindicator johnny spawn chance | William Blake Galbreath | | | server | Add wither skeleton takes wither damage option | William Blake Galbreath | | -| api | Advancement API | William Blake Galbreath | | | server | Advancement API | William Blake Galbreath | | +| api | Advancement API | William Blake Galbreath | | | server | AirplaneLite MC Dev Fixes | Paul Sauve | | | server | Allow Entities to be removed from a world while ticking | Spottedleaf | | | server | Allow anvil colors | William Blake Galbreath | | @@ -81,8 +80,8 @@ # Patches | server | Allow toggling special MobSpawners per world | jmp | | | api | Alphabetize in-game /plugins list | BillyGalbreath | | | server | Alternative Keepalive Handling | William Blake Galbreath | | -| api | Anvil API | William Blake Galbreath | | | server | Anvil API | William Blake Galbreath | | +| api | Anvil API | William Blake Galbreath | | | server | Apply display names from item forms of entities to entities | jmp | | | server | Arrows should not reset despawn counter | William Blake Galbreath | | | server | Attempt to recalculate regionfile header if it is corrupt | Spottedleaf | | @@ -91,8 +90,8 @@ # Patches | server | Brand changes | Spottedleaf | | | server | Brandings | YatopiaMC | | | server | Breedable Polar Bears | William Blake Galbreath | | -| api | Bring back server name | William Blake Galbreath | | | server | Bring back server name | William Blake Galbreath | | +| api | Bring back server name | William Blake Galbreath | | | server | Cat spawning options | William Blake Galbreath | | | server | Change writes to use NORMAL priority rather than LOW | Spottedleaf | | | server | Changeable Mob Left Handed Chance | Ben Kerllenevich | | @@ -149,12 +148,12 @@ # Patches | server | Don't trigger Lootable Refresh for non player interaction | Aikar | | | server | Don't wake up entities when damage event is cancelled | Phoenix616 | | | server | Dont send useless entity packets | William Blake Galbreath | | -| api | DragonEggPlaceEvent | William Blake Galbreath | | | server | DragonEggPlaceEvent | William Blake Galbreath | | +| api | DragonEggPlaceEvent | William Blake Galbreath | | | server | Duplicate paper's vanilla scoreboard colors patch to sync | William Blake Galbreath | | | server | EMC - Configurable disable give dropping | Aikar | | -| api | EMC - MonsterEggSpawnEvent | Aikar | | | server | EMC - MonsterEggSpawnEvent | Aikar | | +| api | EMC - MonsterEggSpawnEvent | Aikar | | | server | End gateway should check if entity can use portal | William Blake Galbreath | | | server | Ender dragon always drop egg | William Blake Galbreath | | | server | Ender dragon always drop full exp | William Blake Galbreath | | @@ -162,8 +161,8 @@ # Patches | server | Entities can use portals configuration | William Blake Galbreath | | | server | Entities pick up loot bypass mob-griefing gamerule | William Blake Galbreath | | | server | Entity lifespan | William Blake Galbreath | | -| api | EntityMoveEvent | William Blake Galbreath | | | server | EntityMoveEvent | William Blake Galbreath | | +| api | EntityMoveEvent | William Blake Galbreath | | | server | Execute chunk tasks mid-tick | Spottedleaf | | | api | ExecuteCommandEvent | William Blake Galbreath | | | server | Farmland trampling changes | Mariell Hoversholm | | @@ -181,8 +180,8 @@ # Patches | server | Fix swamp hut cat generation deadlock | Spottedleaf | | | server | Fix the dead lagging the server | William Blake Galbreath | | | server | Fix vanilla command permission handler | William Blake Galbreath | | -| api | Full netherite armor grants fire resistance | BillyGalbreath | | | server | Full netherite armor grants fire resistance | BillyGalbreath | | +| api | Full netherite armor grants fire resistance | BillyGalbreath | | | server | Giants AI settings | William Blake Galbreath | | | server | Global Eula file | tr7zw | | | server | Heavily optimize furnance fuel and recipe lookups | tr7zw | Mykyta Komarn | @@ -205,24 +204,24 @@ # Patches | server | Infinite fuel furnace | William Blake Galbreath | | | server | Infinity No Arrows | Zoe | | | server | Infinity bow settings | William Blake Galbreath | | -| api | Item entity immunities | William Blake Galbreath | | | server | Item entity immunities | William Blake Galbreath | | +| api | Item entity immunities | William Blake Galbreath | | | server | Item stuck sleep config | tr7zw | | -| api | ItemFactory#getMonsterEgg | William Blake Galbreath | | | server | ItemFactory#getMonsterEgg | William Blake Galbreath | | +| api | ItemFactory#getMonsterEgg | William Blake Galbreath | | | api | ItemStack convenience methods | William Blake Galbreath | | | server | Kelp weeping and twisting vines configurable max growth age | BillyGalbreath | | | server | Lag compensate block breaking | Spottedleaf | | -| api | Lagging threshold | William Blake Galbreath | | | server | Lagging threshold | William Blake Galbreath | | -| api | Left handed API | BillyGalbreath | | +| api | Lagging threshold | William Blake Galbreath | | | server | Left handed API | BillyGalbreath | | -| api | LivingEntity safeFallDistance | William Blake Galbreath | | +| api | Left handed API | BillyGalbreath | | | server | LivingEntity safeFallDistance | William Blake Galbreath | | -| api | LivingEntity#broadcastItemBreak | William Blake Galbreath | | +| api | LivingEntity safeFallDistance | William Blake Galbreath | | | server | LivingEntity#broadcastItemBreak | William Blake Galbreath | | -| api | Llama API | William Blake Galbreath | | +| api | LivingEntity#broadcastItemBreak | William Blake Galbreath | | | server | Llama API | William Blake Galbreath | | +| api | Llama API | William Blake Galbreath | | | server | Lobotomize stuck villagers | BillyGalbreath | | | server | Logger settings (suppressing pointless logs) | William Blake Galbreath | | | server | MC-147659 - Fix non black cats spawning in swamp huts | William Blake Galbreath | | @@ -235,8 +234,8 @@ # Patches | server | Make sure inlined getChunkAt has inlined logic for loaded | Spottedleaf | | | server | Manually inline methods in BlockPosition | Spottedleaf | | | server | Mending mends most damages equipment first | William Blake Galbreath | | -| api | Modify POM | YatopiaMC | | | server | Modify POM | YatopiaMC | | +| api | Modify POM | YatopiaMC | | | server | Modify default configs | tr7zw | | | server | Movement options for armour stands | Mariell Hoversholm | | | server | Multi-Threaded Server Ticking Vanilla | Spottedleaf | | @@ -277,18 +276,18 @@ # Patches | server | Per entity (type) collision settings | MrIvanPlays | tr7zw | | server | Persistent TileEntity Lore and DisplayName | jmp | | | server | Phantom flames on swoop | BillyGalbreath | | -| api | Phantoms attracted to crystals and crystals shoot phantoms | William Blake Galbreath | | | server | Phantoms attracted to crystals and crystals shoot phantoms | William Blake Galbreath | | +| api | Phantoms attracted to crystals and crystals shoot phantoms | William Blake Galbreath | | | server | Phantoms burn in light | draycia | | | server | Pigs give saddle back | William Blake Galbreath | | -| api | Player invulnerabilities | William Blake Galbreath | | | server | Player invulnerabilities | William Blake Galbreath | | -| api | PlayerAttackEntityEvent | Ivan Pekov | | +| api | Player invulnerabilities | William Blake Galbreath | | | server | PlayerAttackEntityEvent | Ivan Pekov | | -| api | PlayerBookTooLargeEvent | BillyGalbreath | | +| api | PlayerAttackEntityEvent | Ivan Pekov | | | server | PlayerBookTooLargeEvent | BillyGalbreath | | -| api | PlayerSetSpawnerTypeWithEggEvent | William Blake Galbreath | | +| api | PlayerBookTooLargeEvent | BillyGalbreath | | | server | PlayerSetSpawnerTypeWithEggEvent | William Blake Galbreath | | +| api | PlayerSetSpawnerTypeWithEggEvent | William Blake Galbreath | | | server | Players should not cram to death | William Blake Galbreath | | | server | Populator seed controls | Spottedleaf | | | server | Port hydrogen | JellySquid | | @@ -297,10 +296,8 @@ # Patches | server | Prevent long map entry creation in light engine | Spottedleaf | | | server | Prevent unload() calls removing tickets for sync loads | Spottedleaf | | | server | Properly handle cancellation of projectile hit event | Spottedleaf | | -| api | ProxyForwardDataEvent | Ivan Pekov | | -| server | ProxyForwardDataEvent | Ivan Pekov | | -| api | Purpur config files | William Blake Galbreath | | | server | Purpur config files | William Blake Galbreath | | +| api | Purpur config files | William Blake Galbreath | | | server | Queue lighting update only once | Paul Sauve | | | server | Rabbit naturally spawn toast and killer | William Blake Galbreath | | | api | Rabid Wolf API | Encode42 | | @@ -320,8 +317,8 @@ # Patches | server | Revert getChunkAt(Async) retaining chunks for long periods of | Spottedleaf | | | server | Rework PlayerChunk main thread checks | Spottedleaf | | | server | Rewrite the light engine | Spottedleaf | | -| api | Ridables | William Blake Galbreath | | | server | Ridables | William Blake Galbreath | | +| api | Ridables | William Blake Galbreath | | | server | Separate lookup locking from state access in UserCache | Spottedleaf | | | server | Set name visible when using a Name Tag on an Armor Stand | jmp | | | server | Short enderman height | William Blake Galbreath | | @@ -348,15 +345,14 @@ # Patches | server | Timings stuff | William Blake Galbreath | | | server | Toggle for Zombified Piglin death always counting as player | jmp | | | server | Totems work in inventory | draycia | | -| api | Tuinity POM Changes | Spottedleaf | | | server | Tuinity POM Changes | Spottedleaf | | +| api | Tuinity POM Changes | Spottedleaf | | | server | Tuinity Server Config | Spottedleaf | | | api | Tuinity config | Spottedleaf | | | server | Tulips change fox type | William Blake Galbreath | | | server | Update version fetcher repo | JRoy | | | server | Use configured height for nether surface builders | William Blake Galbreath | | | server | Use entity ticking chunk map for entity tracker | Spottedleaf | | -| server | Use offline uuids if we need to | Ivan Pekov | | | server | Use unmodifiableMap instead of making copy | Paul Sauve | | | server | Util patch | Spottedleaf | | | server | Utilities | YatopiaMC | Mykyta Komarnytskyy, Ivan Pekov | diff --git a/patches/api/0007-PlayerAttackEntityEvent.patch b/patches/api/0006-PlayerAttackEntityEvent.patch similarity index 100% rename from patches/api/0007-PlayerAttackEntityEvent.patch rename to patches/api/0006-PlayerAttackEntityEvent.patch diff --git a/patches/api/0006-ProxyForwardDataEvent.patch b/patches/api/0006-ProxyForwardDataEvent.patch deleted file mode 100644 index 835aa36b..00000000 --- a/patches/api/0006-ProxyForwardDataEvent.patch +++ /dev/null @@ -1,137 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Ivan Pekov -Date: Wed, 9 Sep 2020 16:14:00 +0300 -Subject: [PATCH] ProxyForwardDataEvent - - -diff --git a/src/main/java/net/yatopia/api/event/ProxyForwardDataEvent.java b/src/main/java/net/yatopia/api/event/ProxyForwardDataEvent.java -new file mode 100644 -index 0000000000000000000000000000000000000000..d3780d965bdd491425a92bf5e554f7def6e0ecf0 ---- /dev/null -+++ b/src/main/java/net/yatopia/api/event/ProxyForwardDataEvent.java -@@ -0,0 +1,125 @@ -+package net.yatopia.api.event; -+ -+import com.google.common.base.Preconditions; -+import com.google.common.collect.ImmutableList; -+import com.mojang.authlib.properties.Property; -+import java.util.List; -+import java.util.UUID; -+import org.bukkit.event.Event; -+import org.bukkit.event.HandlerList; -+import org.jetbrains.annotations.NotNull; -+import org.jetbrains.annotations.Nullable; -+ -+/** -+ * Called when a proxy such as BungeeCord or Velocity forwards player data to the server. -+ */ -+public class ProxyForwardDataEvent extends Event { -+ -+ private final UUID uuid; -+ private final String name; -+ private List properties; -+ -+ public ProxyForwardDataEvent(boolean async, @NotNull UUID uuid, @NotNull String name, @NotNull List properties) { -+ super(async); -+ this.uuid = uuid; -+ this.name = name; -+ this.properties = properties; -+ } -+ -+ /** -+ * Returns the unique id of the profile forwarded. -+ * -+ * @return unique id -+ */ -+ @NotNull -+ public UUID getUuid() { -+ return uuid; -+ } -+ -+ /** -+ * Returns the name of the profile forwarded. -+ * -+ * @return name -+ */ -+ @NotNull -+ public String getName() { -+ return name; -+ } -+ -+ /** -+ * Returns an immutable copy of the forwarded properties. -+ *

-+ * If there were no properties, it would return an empty list. -+ * -+ * @return properties -+ */ -+ @NotNull -+ public List getProperties() { -+ return ImmutableList.copyOf(properties); -+ } -+ -+ /** -+ * Adds a property to this game profile. If the property already exists, it overrides it. -+ * -+ * @param property property -+ */ -+ public void addProperty(@NotNull Property property) { -+ Preconditions.checkNotNull(property, "property"); -+ if (hasProperty(property.getName())) { -+ removeProperty(property.getName()); -+ } -+ properties.add(property); -+ } -+ -+ /** -+ * Returns the property with the specified name. -+ * -+ * @param property the property's name you want to get -+ * @return property if present -+ */ -+ @Nullable -+ public Property getProperty(@NotNull String property) { -+ Preconditions.checkNotNull(property, "property"); -+ for (Property prop : properties) { -+ if (prop.getName().equalsIgnoreCase(property)) { -+ return prop; -+ } -+ } -+ return null; -+ } -+ -+ /** -+ * Returns whether or not there's a property with the specified name. -+ * -+ * @param property the name of the property you want to check if exists -+ * @return boolean value -+ */ -+ public boolean hasProperty(@NotNull String property) { -+ return getProperty(property) != null; -+ } -+ -+ /** -+ * Removes the specified property if present -+ * -+ * @param property the property's name you want to remove -+ */ -+ public void removeProperty(@NotNull String property) { -+ properties.removeIf(prop -> prop.getName().equalsIgnoreCase(property)); -+ } -+ -+ /** -+ * Removes the specified property if present -+ * -+ * @param property the property you want to remove -+ */ -+ public void removeProperty(@NotNull Property property) { -+ Preconditions.checkNotNull(property, "property"); -+ properties.remove(property); -+ } -+ -+ // -+ private static final HandlerList handlers = new HandlerList(); -+ @NotNull @Override public HandlerList getHandlers() { return handlers; } -+ @NotNull public static HandlerList getHandlerList() { return handlers; } -+ // -+} diff --git a/patches/api/0008-Disable-reload-command.patch b/patches/api/0007-Disable-reload-command.patch similarity index 100% rename from patches/api/0008-Disable-reload-command.patch rename to patches/api/0007-Disable-reload-command.patch diff --git a/patches/server/0029-Highly-optimize-VillagePlace-filtering.patch b/patches/server/0028-Highly-optimize-VillagePlace-filtering.patch similarity index 100% rename from patches/server/0029-Highly-optimize-VillagePlace-filtering.patch rename to patches/server/0028-Highly-optimize-VillagePlace-filtering.patch diff --git a/patches/server/0028-Use-offline-uuids-if-we-need-to.patch b/patches/server/0028-Use-offline-uuids-if-we-need-to.patch deleted file mode 100644 index 98e63e7e..00000000 --- a/patches/server/0028-Use-offline-uuids-if-we-need-to.patch +++ /dev/null @@ -1,105 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Ivan Pekov -Date: Mon, 17 Aug 2020 19:16:39 +0300 -Subject: [PATCH] Use offline uuids if we need to - -By default, the user cache falls back to requests to mojang if it wasn't able to find a player. -This is completely fine if we're running an online mode server, however proxies require the -server to run in offline mode, which makes mojang's default commands to not work properly -( say if we want to ban a player which has never joined the server, he wouldn't get banned ) - -What our change does is make use of already existing options in paper.yml and spigot.yml to check -if the server is running behind a proxy and if the proxy is running online mode. If admins fail to -configure it properly, their mistake! - -Furthermore, my research on the issue shows that this behavior also can be seen if we're not running -behind a proxy at all! I try to whitelist any of my staff, and they get whitelisted with online mode -UUIDs, while they should get whitelisted with offline mode ones. - -Thanks to Gabriele C for pointing this issue to us, as he said paper doesn't -have any interest fixing this. - -diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java -index 91c2756a8708a2f4154905baec20b9ae484fea0d..a191693b754724f2a5a3cd2a39e5b2171bddb6a8 100644 ---- a/src/main/java/net/minecraft/server/EntityHuman.java -+++ b/src/main/java/net/minecraft/server/EntityHuman.java -@@ -1954,7 +1954,7 @@ public abstract class EntityHuman extends EntityLiving { - public static UUID a(GameProfile gameprofile) { - UUID uuid = gameprofile.getId(); - -- if (uuid == null) { -+ if (org.yatopiamc.yatopia.server.YatopiaConfig.shouldUseOfflineUUID() || uuid == null) { // Yatopia - uuid = getOfflineUUID(gameprofile.getName()); - } - -diff --git a/src/main/java/net/minecraft/server/UserCache.java b/src/main/java/net/minecraft/server/UserCache.java -index 1496c43fc9487caf6ddb3782a9d1c79ef6ca1e94..d3ffbd5247b3a9b2a046d6696c959e834dff7ef4 100644 ---- a/src/main/java/net/minecraft/server/UserCache.java -+++ b/src/main/java/net/minecraft/server/UserCache.java -@@ -82,6 +82,11 @@ public class UserCache { - - @Nullable - private static GameProfile a(GameProfileRepository gameprofilerepository, String s) { -+ // Yatopia start -+ if (org.yatopiamc.yatopia.server.YatopiaConfig.shouldUseOfflineUUID() && org.yatopiamc.yatopia.server.YatopiaConfig.isProxy()) { -+ return new GameProfile(EntityHuman.getOfflineUUID(s), s); -+ } -+ // Yatopia end - final AtomicReference atomicreference = new AtomicReference(); - ProfileLookupCallback profilelookupcallback = new ProfileLookupCallback() { - public void onProfileLookupSucceeded(GameProfile gameprofile) { -@@ -102,6 +107,15 @@ public class UserCache { - gameprofile = new GameProfile(uuid, s); - } - -+ // Yatopia start -+ if (org.yatopiamc.yatopia.server.YatopiaConfig.shouldUseOfflineUUID() && !org.yatopiamc.yatopia.server.YatopiaConfig.isProxy()) { -+ GameProfile newProfile = new GameProfile(EntityHuman.getOfflineUUID(s), s); -+ if (gameprofile == null || gameprofile.getProperties().isEmpty()) return newProfile; -+ newProfile.getProperties().putAll(gameprofile.getProperties()); -+ return newProfile; -+ } -+ // Yatopia end -+ - return gameprofile; - } - -diff --git a/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java b/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java -index 003a024da8ab877895244ff9e4e4ff62288622ff..eb5f7172829037862c20bb7527badaa589f50cc7 100644 ---- a/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java -+++ b/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java -@@ -10,6 +10,7 @@ import java.util.List; - import java.util.concurrent.TimeUnit; - import java.util.logging.Level; - import java.util.regex.Pattern; -+import net.minecraft.server.MinecraftServer; - import org.bukkit.Bukkit; - import org.bukkit.configuration.InvalidConfigurationException; - import org.bukkit.configuration.file.YamlConfiguration; -@@ -211,4 +212,26 @@ public class YatopiaConfig { - private static void fixFallDistance() { - fixFallDistance = getBoolean("settings.fixFallDistance", false); - } -+ -+ public static boolean shouldUseOfflineUUID() { -+ if (org.spigotmc.SpigotConfig.bungee && com.destroystokyo.paper.PaperConfig.bungeeOnlineMode) { -+ return false; -+ } -+ if (org.spigotmc.SpigotConfig.bungee) { -+ return true; -+ } -+ if (com.destroystokyo.paper.PaperConfig.velocitySupport && -+ com.destroystokyo.paper.PaperConfig.velocityOnlineMode) { -+ return false; -+ } -+ if (com.destroystokyo.paper.PaperConfig.velocitySupport) { -+ return true; -+ } -+ -+ return !MinecraftServer.getServer().getOnlineMode(); -+ } -+ -+ public static boolean isProxy() { -+ return org.spigotmc.SpigotConfig.bungee || com.destroystokyo.paper.PaperConfig.velocitySupport; -+ } - } diff --git a/patches/server/0030-Optimise-portals.patch b/patches/server/0029-Optimise-portals.patch similarity index 100% rename from patches/server/0030-Optimise-portals.patch rename to patches/server/0029-Optimise-portals.patch diff --git a/patches/server/0031-Nuke-streams-off-BlockPosition.patch b/patches/server/0030-Nuke-streams-off-BlockPosition.patch similarity index 100% rename from patches/server/0031-Nuke-streams-off-BlockPosition.patch rename to patches/server/0030-Nuke-streams-off-BlockPosition.patch diff --git a/patches/server/0032-Nuke-streams-off-SectionPosition.patch b/patches/server/0031-Nuke-streams-off-SectionPosition.patch similarity index 100% rename from patches/server/0032-Nuke-streams-off-SectionPosition.patch rename to patches/server/0031-Nuke-streams-off-SectionPosition.patch diff --git a/patches/server/0033-Stop-wasting-resources-on-JsonList-get.patch b/patches/server/0032-Stop-wasting-resources-on-JsonList-get.patch similarity index 100% rename from patches/server/0033-Stop-wasting-resources-on-JsonList-get.patch rename to patches/server/0032-Stop-wasting-resources-on-JsonList-get.patch diff --git a/patches/server/0035-Fix-LightEngineThreaded-memory-leak.patch b/patches/server/0033-Fix-LightEngineThreaded-memory-leak.patch similarity index 100% rename from patches/server/0035-Fix-LightEngineThreaded-memory-leak.patch rename to patches/server/0033-Fix-LightEngineThreaded-memory-leak.patch diff --git a/patches/server/0034-ProxyForwardDataEvent.patch b/patches/server/0034-ProxyForwardDataEvent.patch deleted file mode 100644 index c98ee024..00000000 --- a/patches/server/0034-ProxyForwardDataEvent.patch +++ /dev/null @@ -1,96 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Ivan Pekov -Date: Wed, 9 Sep 2020 16:15:22 +0300 -Subject: [PATCH] ProxyForwardDataEvent - - -diff --git a/src/main/java/net/minecraft/server/HandshakeListener.java b/src/main/java/net/minecraft/server/HandshakeListener.java -index 79f726ef43e70b8882890007146df199824d14e3..edb7a9de55718d9c860c82580aca78c3d254ad57 100644 ---- a/src/main/java/net/minecraft/server/HandshakeListener.java -+++ b/src/main/java/net/minecraft/server/HandshakeListener.java -@@ -92,6 +92,7 @@ public class HandshakeListener implements PacketHandshakingInListener { - if (event.getSocketAddressHostname() != null) this.getNetworkManager().socketAddress = new java.net.InetSocketAddress(event.getSocketAddressHostname(), ((java.net.InetSocketAddress) this.getNetworkManager().getSocketAddress()).getPort()); - this.getNetworkManager().spoofedUUID = event.getUniqueId(); - this.getNetworkManager().spoofedProfile = gson.fromJson(event.getPropertiesJson(), com.mojang.authlib.properties.Property[].class); -+ if (proxyLogicEnabled) c.proxyProfileSpoof = true; // Yatopia - handledByEvent = true; // Hooray, we did it! - } - } -@@ -105,6 +106,7 @@ public class HandshakeListener implements PacketHandshakingInListener { - packethandshakinginsetprotocol.hostname = split[0]; - c.socketAddress = new java.net.InetSocketAddress(split[1], ((java.net.InetSocketAddress) c.getSocketAddress()).getPort()); - c.spoofedUUID = com.mojang.util.UUIDTypeAdapter.fromString( split[2] ); -+ c.proxyProfileSpoof = true; // Yatopia - } else - { - ChatMessage chatmessage = new ChatMessage("If you wish to use IP forwarding, please enable it in your BungeeCord config as well!"); -diff --git a/src/main/java/net/minecraft/server/LoginListener.java b/src/main/java/net/minecraft/server/LoginListener.java -index d987483255195c0bde713a92676baced1eaff2b3..bb45fc83d81948c84bc721961474e5e806ab404a 100644 ---- a/src/main/java/net/minecraft/server/LoginListener.java -+++ b/src/main/java/net/minecraft/server/LoginListener.java -@@ -125,6 +125,23 @@ public class LoginListener implements PacketLoginInListener { - - this.i = new GameProfile( uuid, this.i.getName() ); - -+ // Yatopia start - situate this around an event -+ if (networkManager.proxyProfileSpoof) { -+ java.util.List properties; -+ if (networkManager.spoofedProfile != null) { -+ properties = new java.util.ArrayList<>(Arrays.asList(networkManager.spoofedProfile)); -+ } else { -+ properties = java.util.Collections.emptyList(); -+ } -+ net.yatopia.api.event.ProxyForwardDataEvent event = new net.yatopia.api.event.ProxyForwardDataEvent( -+ !org.bukkit.Bukkit.isPrimaryThread(), uuid, i.getName(), properties -+ ); -+ if (event.callEvent()) { -+ for (com.mojang.authlib.properties.Property property : event.getProperties()) { -+ i.getProperties().put(property.getName(), property); -+ } -+ } -+ } else { - if (networkManager.spoofedProfile != null) - { - for ( com.mojang.authlib.properties.Property property : networkManager.spoofedProfile ) -@@ -132,6 +149,7 @@ public class LoginListener implements PacketLoginInListener { - this.i.getProperties().put( property.getName(), property ); - } - } -+ } // Yatopia end - } - // Spigot end - -@@ -365,11 +383,20 @@ public class LoginListener implements PacketLoginInListener { - - this.networkManager.socketAddress = new java.net.InetSocketAddress(com.destroystokyo.paper.proxy.VelocityProxy.readAddress(buf), ((java.net.InetSocketAddress) this.networkManager.getSocketAddress()).getPort()); - -- this.setGameProfile(com.destroystokyo.paper.proxy.VelocityProxy.createProfile(buf)); -+ // Yatopia start - how about spoofed uuid and profile -+ //this.setGameProfile(com.destroystokyo.paper.proxy.VelocityProxy.createProfile(buf)); -+ com.mojang.authlib.GameProfile profile = com.destroystokyo.paper.proxy.VelocityProxy.createProfile(buf); -+ networkManager.spoofedUUID = profile.getId(); -+ if (!profile.getProperties().isEmpty()) { -+ networkManager.spoofedProfile = profile.getProperties().values().toArray(new com.mojang.authlib.properties.Property[0]); -+ } -+ networkManager.proxyProfileSpoof = true; -+ // Yatopia end - - // Proceed with login - authenticatorPool.execute(() -> { - try { -+ initUUID(); // Yatopia - new LoginHandler().fireEvents(); - } catch (Exception ex) { - disconnect("Failed to verify username!"); -diff --git a/src/main/java/net/minecraft/server/NetworkManager.java b/src/main/java/net/minecraft/server/NetworkManager.java -index 548c62a838848a9183e14f91b21a9dc309d8a3b2..08227ab446d6332af76491a063653f7f13f43560 100644 ---- a/src/main/java/net/minecraft/server/NetworkManager.java -+++ b/src/main/java/net/minecraft/server/NetworkManager.java -@@ -51,6 +51,7 @@ public class NetworkManager extends SimpleChannelInboundHandler> { - // Spigot Start - public java.util.UUID spoofedUUID; - public com.mojang.authlib.properties.Property[] spoofedProfile; -+ public boolean proxyProfileSpoof = false; // Yatopia - public boolean preparing = true; - // Spigot End - private PacketListener packetListener; diff --git a/patches/server/0036-Respect-PlayerKickEvent-leaveMessage.patch b/patches/server/0034-Respect-PlayerKickEvent-leaveMessage.patch similarity index 100% rename from patches/server/0036-Respect-PlayerKickEvent-leaveMessage.patch rename to patches/server/0034-Respect-PlayerKickEvent-leaveMessage.patch diff --git a/patches/server/0037-Shutdown-Bootstrap-thread-pool.patch b/patches/server/0035-Shutdown-Bootstrap-thread-pool.patch similarity index 100% rename from patches/server/0037-Shutdown-Bootstrap-thread-pool.patch rename to patches/server/0035-Shutdown-Bootstrap-thread-pool.patch diff --git a/patches/server/0038-Optimize-Villagers.patch b/patches/server/0036-Optimize-Villagers.patch similarity index 100% rename from patches/server/0038-Optimize-Villagers.patch rename to patches/server/0036-Optimize-Villagers.patch diff --git a/patches/server/0039-Optimize-whitelist-command-for-multiple-additions-re.patch b/patches/server/0037-Optimize-whitelist-command-for-multiple-additions-re.patch similarity index 99% rename from patches/server/0039-Optimize-whitelist-command-for-multiple-additions-re.patch rename to patches/server/0037-Optimize-whitelist-command-for-multiple-additions-re.patch index 9fe5331d..1d123a60 100644 --- a/patches/server/0039-Optimize-whitelist-command-for-multiple-additions-re.patch +++ b/patches/server/0037-Optimize-whitelist-command-for-multiple-additions-re.patch @@ -111,7 +111,7 @@ index 893d2c1c74ed28dcdb83b71762ccdcbfd50a8f9d..107091a4cae0e4eaba93f69ae91239ab private static int b(CommandListenerWrapper commandlistenerwrapper) throws CommandSyntaxException { diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java -index a191693b754724f2a5a3cd2a39e5b2171bddb6a8..434cfd0a224a8dc1f13809edcd4b98f0c7aa0899 100644 +index 91c2756a8708a2f4154905baec20b9ae484fea0d..7a6d5521e42a31723b4f006d0fcf618fd42050e4 100644 --- a/src/main/java/net/minecraft/server/EntityHuman.java +++ b/src/main/java/net/minecraft/server/EntityHuman.java @@ -78,6 +78,7 @@ public abstract class EntityHuman extends EntityLiving { diff --git a/patches/server/0040-PlayerAttackEntityEvent.patch b/patches/server/0038-PlayerAttackEntityEvent.patch similarity index 96% rename from patches/server/0040-PlayerAttackEntityEvent.patch rename to patches/server/0038-PlayerAttackEntityEvent.patch index 8c6ff79a..5b9b0900 100644 --- a/patches/server/0040-PlayerAttackEntityEvent.patch +++ b/patches/server/0038-PlayerAttackEntityEvent.patch @@ -6,7 +6,7 @@ Subject: [PATCH] PlayerAttackEntityEvent Added per request diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java -index 434cfd0a224a8dc1f13809edcd4b98f0c7aa0899..d2b3db34d69269a220185d203bc1232042a9e437 100644 +index 7a6d5521e42a31723b4f006d0fcf618fd42050e4..9689ebc0089f7586bad4ce4958cd792ddde50334 100644 --- a/src/main/java/net/minecraft/server/EntityHuman.java +++ b/src/main/java/net/minecraft/server/EntityHuman.java @@ -1071,12 +1071,50 @@ public abstract class EntityHuman extends EntityLiving { diff --git a/patches/server/0041-Ensure-pools-create-daemon-threads.patch b/patches/server/0039-Ensure-pools-create-daemon-threads.patch similarity index 96% rename from patches/server/0041-Ensure-pools-create-daemon-threads.patch rename to patches/server/0039-Ensure-pools-create-daemon-threads.patch index 41b678e8..69ad6d87 100644 --- a/patches/server/0041-Ensure-pools-create-daemon-threads.patch +++ b/patches/server/0039-Ensure-pools-create-daemon-threads.patch @@ -7,7 +7,7 @@ If only 1 non-daemon thread is left to run when the server is shutting down, the This patche ensures that executors make daemon threads. diff --git a/src/main/java/net/minecraft/server/LoginListener.java b/src/main/java/net/minecraft/server/LoginListener.java -index bb45fc83d81948c84bc721961474e5e806ab404a..847122f76f6d951b24b22c86276140e02aaf37d6 100644 +index d987483255195c0bde713a92676baced1eaff2b3..e081905af0abbad0cf9011075a6380ef652924a7 100644 --- a/src/main/java/net/minecraft/server/LoginListener.java +++ b/src/main/java/net/minecraft/server/LoginListener.java @@ -108,7 +108,11 @@ public class LoginListener implements PacketLoginInListener { diff --git a/patches/server/0042-Add-IntelliJ-IDEA-runnable.patch b/patches/server/0040-Add-IntelliJ-IDEA-runnable.patch similarity index 100% rename from patches/server/0042-Add-IntelliJ-IDEA-runnable.patch rename to patches/server/0040-Add-IntelliJ-IDEA-runnable.patch diff --git a/patches/server/0043-Fix-IndexOutOfBoundsException-when-sending-too-many-.patch b/patches/server/0041-Fix-IndexOutOfBoundsException-when-sending-too-many-.patch similarity index 100% rename from patches/server/0043-Fix-IndexOutOfBoundsException-when-sending-too-many-.patch rename to patches/server/0041-Fix-IndexOutOfBoundsException-when-sending-too-many-.patch diff --git a/patches/server/0044-Add-nspt-command.patch b/patches/server/0042-Add-nspt-command.patch similarity index 93% rename from patches/server/0044-Add-nspt-command.patch rename to patches/server/0042-Add-nspt-command.patch index dd0c0052..0438795e 100644 --- a/patches/server/0044-Add-nspt-command.patch +++ b/patches/server/0042-Add-nspt-command.patch @@ -94,10 +94,10 @@ index 0000000000000000000000000000000000000000..e6eaa07c57e04bbfba9e4aa8e0e939f8 + } +} diff --git a/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java b/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java -index eb5f7172829037862c20bb7527badaa589f50cc7..b358aacce7b8e1282d721ae1077b888239ec6b39 100644 +index 003a024da8ab877895244ff9e4e4ff62288622ff..f6a8f3c4e92455eff806978d503751b6723ea858 100644 --- a/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java +++ b/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java -@@ -6,12 +6,15 @@ import java.io.IOException; +@@ -6,11 +6,14 @@ import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; @@ -107,13 +107,12 @@ index eb5f7172829037862c20bb7527badaa589f50cc7..b358aacce7b8e1282d721ae1077b8882 import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.regex.Pattern; - import net.minecraft.server.MinecraftServer; import org.bukkit.Bukkit; +import org.bukkit.command.Command; import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.YamlConfiguration; -@@ -25,6 +28,7 @@ public class YatopiaConfig { +@@ -24,6 +27,7 @@ public class YatopiaConfig { public static YamlConfiguration config; public static int version; // since we're remapping sidestreams' configs we need this public public static boolean verbose; // since we're remapping sidestreams' configs we need this public @@ -121,7 +120,7 @@ index eb5f7172829037862c20bb7527badaa589f50cc7..b358aacce7b8e1282d721ae1077b8882 /*========================================================================*/ public static void init(File configFile) { -@@ -40,6 +44,8 @@ public class YatopiaConfig { +@@ -39,6 +43,8 @@ public class YatopiaConfig { config.options().header(HEADER); config.options().copyDefaults(true); verbose = getBoolean("verbose", false); @@ -130,13 +129,13 @@ index eb5f7172829037862c20bb7527badaa589f50cc7..b358aacce7b8e1282d721ae1077b8882 version = getInt("config-version", 1); set("config-version", 1); -@@ -47,6 +53,12 @@ public class YatopiaConfig { +@@ -46,6 +52,12 @@ public class YatopiaConfig { readConfig(YatopiaConfig.class, null); } + public static void registerCommands() { + for (Map.Entry entry : commands.entrySet()) { -+ MinecraftServer.getServer().server.getCommandMap().register(entry.getKey(), "Yatopia", entry.getValue()); ++ net.minecraft.server.MinecraftServer.getServer().server.getCommandMap().register(entry.getKey(), "Yatopia", entry.getValue()); + } + } + diff --git a/patches/server/0045-Configurable-flight-checks.patch b/patches/server/0043-Configurable-flight-checks.patch similarity index 89% rename from patches/server/0045-Configurable-flight-checks.patch rename to patches/server/0043-Configurable-flight-checks.patch index 4a0ce225..08188977 100644 --- a/patches/server/0045-Configurable-flight-checks.patch +++ b/patches/server/0043-Configurable-flight-checks.patch @@ -27,12 +27,12 @@ index 41f4528cbcf5e5f98b1fba1cd6bae0987405cc21..540d16cb01e70fe46bce3a3bb4cdfd18 this.disconnect(com.destroystokyo.paper.PaperConfig.flyingKickVehicleMessage); // Paper - use configurable kick message return; diff --git a/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java b/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java -index b358aacce7b8e1282d721ae1077b888239ec6b39..26bd1fc5b348cc16ca29f66eead2ca42bd4258a8 100644 +index f6a8f3c4e92455eff806978d503751b6723ea858..81ab5afa7bd397266d2afe77426d2e629529aa1a 100644 --- a/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java +++ b/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java -@@ -246,4 +246,11 @@ public class YatopiaConfig { - public static boolean isProxy() { - return org.spigotmc.SpigotConfig.bungee || com.destroystokyo.paper.PaperConfig.velocitySupport; +@@ -223,4 +223,11 @@ public class YatopiaConfig { + private static void fixFallDistance() { + fixFallDistance = getBoolean("settings.fixFallDistance", false); } + + public static boolean checkFlying = true; diff --git a/patches/server/0046-Heavily-optimize-recipe-lookups-in-CraftingManager.patch b/patches/server/0044-Heavily-optimize-recipe-lookups-in-CraftingManager.patch similarity index 100% rename from patches/server/0046-Heavily-optimize-recipe-lookups-in-CraftingManager.patch rename to patches/server/0044-Heavily-optimize-recipe-lookups-in-CraftingManager.patch diff --git a/patches/server/0047-Improve-task-performance.patch b/patches/server/0045-Improve-task-performance.patch similarity index 100% rename from patches/server/0047-Improve-task-performance.patch rename to patches/server/0045-Improve-task-performance.patch diff --git a/patches/server/0048-Optimize-advancement-loading.patch b/patches/server/0046-Optimize-advancement-loading.patch similarity index 100% rename from patches/server/0048-Optimize-advancement-loading.patch rename to patches/server/0046-Optimize-advancement-loading.patch diff --git a/patches/server/0049-lithium-PerlinNoiseSamplerMixin.patch b/patches/server/0047-lithium-PerlinNoiseSamplerMixin.patch similarity index 100% rename from patches/server/0049-lithium-PerlinNoiseSamplerMixin.patch rename to patches/server/0047-lithium-PerlinNoiseSamplerMixin.patch diff --git a/patches/server/0050-lithium-VoronoiBiomeAccessTypeMixin.patch b/patches/server/0048-lithium-VoronoiBiomeAccessTypeMixin.patch similarity index 100% rename from patches/server/0050-lithium-VoronoiBiomeAccessTypeMixin.patch rename to patches/server/0048-lithium-VoronoiBiomeAccessTypeMixin.patch diff --git a/patches/server/0051-lithium-NoiseChunkGeneratorMixin.patch b/patches/server/0049-lithium-NoiseChunkGeneratorMixin.patch similarity index 100% rename from patches/server/0051-lithium-NoiseChunkGeneratorMixin.patch rename to patches/server/0049-lithium-NoiseChunkGeneratorMixin.patch diff --git a/patches/server/0052-lithium-reduce-allocations.patch b/patches/server/0050-lithium-reduce-allocations.patch similarity index 100% rename from patches/server/0052-lithium-reduce-allocations.patch rename to patches/server/0050-lithium-reduce-allocations.patch diff --git a/patches/server/0053-Smarter-statistics-ticking.patch b/patches/server/0051-Smarter-statistics-ticking.patch similarity index 91% rename from patches/server/0053-Smarter-statistics-ticking.patch rename to patches/server/0051-Smarter-statistics-ticking.patch index c041716d..45a518cd 100644 --- a/patches/server/0053-Smarter-statistics-ticking.patch +++ b/patches/server/0051-Smarter-statistics-ticking.patch @@ -8,7 +8,7 @@ In vanilla, statistics that count time spent for an action (i.e. time played or With an interval of 20, this patch saves roughly 3ms per tick on a server w/ 80 players online. diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java -index d2b3db34d69269a220185d203bc1232042a9e437..c9f490e4e4e7a5a3a9ad99f864ff8fb2acc5b5b2 100644 +index 9689ebc0089f7586bad4ce4958cd792ddde50334..aa54fcc5ae3b33587278df2a3fa089af38b5552d 100644 --- a/src/main/java/net/minecraft/server/EntityHuman.java +++ b/src/main/java/net/minecraft/server/EntityHuman.java @@ -175,18 +175,23 @@ public abstract class EntityHuman extends EntityLiving { @@ -40,10 +40,10 @@ index d2b3db34d69269a220185d203bc1232042a9e437..c9f490e4e4e7a5a3a9ad99f864ff8fb2 int i = 29999999; diff --git a/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java b/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java -index 26bd1fc5b348cc16ca29f66eead2ca42bd4258a8..2e08558eef23d40b3a704250dfe12bb7f4b660f3 100644 +index 81ab5afa7bd397266d2afe77426d2e629529aa1a..045ace1444b4db8fa5fab09f970de7a696c56ab8 100644 --- a/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java +++ b/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java -@@ -253,4 +253,9 @@ public class YatopiaConfig { +@@ -230,4 +230,9 @@ public class YatopiaConfig { checkFlying = getBoolean("settings.checks.flight", checkFlying); checkVehicleFlying = getBoolean("settings.checks.vehicle-flight", checkVehicleFlying); } diff --git a/patches/server/0054-Configurable-criterion-triggers.patch b/patches/server/0052-Configurable-criterion-triggers.patch similarity index 94% rename from patches/server/0054-Configurable-criterion-triggers.patch rename to patches/server/0052-Configurable-criterion-triggers.patch index 93ce170a..4800353b 100644 --- a/patches/server/0054-Configurable-criterion-triggers.patch +++ b/patches/server/0052-Configurable-criterion-triggers.patch @@ -27,10 +27,10 @@ index 7596eaf605bf73dd44c06b66bcc0e5a36242fe7a..46813a0a65977233acdabb225552e8cf } diff --git a/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java b/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java -index 2e08558eef23d40b3a704250dfe12bb7f4b660f3..5578f5784a87019d3f091173b25b5ec1cc059fd6 100644 +index 045ace1444b4db8fa5fab09f970de7a696c56ab8..2100ac9c1f4d0df75347579cc5d58255b77ec252 100644 --- a/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java +++ b/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java -@@ -258,4 +258,14 @@ public class YatopiaConfig { +@@ -235,4 +235,14 @@ public class YatopiaConfig { private static void intervals() { playerTimeStatisticsInterval = Math.max(1, getInt("settings.intervals.player-time-statistics", 1)); } diff --git a/patches/server/0055-Configurable-BlockPhysicsEvent.patch b/patches/server/0053-Configurable-BlockPhysicsEvent.patch similarity index 94% rename from patches/server/0055-Configurable-BlockPhysicsEvent.patch rename to patches/server/0053-Configurable-BlockPhysicsEvent.patch index bff63dfa..33b5ca3f 100644 --- a/patches/server/0055-Configurable-BlockPhysicsEvent.patch +++ b/patches/server/0053-Configurable-BlockPhysicsEvent.patch @@ -21,10 +21,10 @@ index 9a6bb7b6cb4d4aabae6f7e7915f993e4ebd6f77f..954462353d35c06b0568c56669e31d0a worldserver.hasRidableMoveEvent = net.pl3x.purpur.event.entity.RidableMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Purpur TileEntityHopper.skipHopperEvents = worldserver.paperConfig.disableHopperMoveEvents || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper diff --git a/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java b/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java -index 5578f5784a87019d3f091173b25b5ec1cc059fd6..4f99aa4b578333795296da2424f38aae65a808a3 100644 +index 2100ac9c1f4d0df75347579cc5d58255b77ec252..4d6410401457afe91457ae72df14bf687e9c62fd 100644 --- a/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java +++ b/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java -@@ -268,4 +268,8 @@ public class YatopiaConfig { +@@ -245,4 +245,8 @@ public class YatopiaConfig { criterionTriggerTick = getBoolean("settings.criterion-triggers.tick", true); } diff --git a/patches/server/0056-Infinity-No-Arrows.patch b/patches/server/0054-Infinity-No-Arrows.patch similarity index 95% rename from patches/server/0056-Infinity-No-Arrows.patch rename to patches/server/0054-Infinity-No-Arrows.patch index 79267b52..698f1ec5 100644 --- a/patches/server/0056-Infinity-No-Arrows.patch +++ b/patches/server/0054-Infinity-No-Arrows.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Infinity No Arrows diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java -index c9f490e4e4e7a5a3a9ad99f864ff8fb2acc5b5b2..b3c76fcf65b028e4aa53699ee93a5c3ba59981f2 100644 +index aa54fcc5ae3b33587278df2a3fa089af38b5552d..81cb94e3a4fd26bba47d96bbd35be110765934c3 100644 --- a/src/main/java/net/minecraft/server/EntityHuman.java +++ b/src/main/java/net/minecraft/server/EntityHuman.java @@ -2179,7 +2179,7 @@ public abstract class EntityHuman extends EntityLiving { diff --git a/patches/server/0057-Custom-Locale-Support.patch b/patches/server/0055-Custom-Locale-Support.patch similarity index 100% rename from patches/server/0057-Custom-Locale-Support.patch rename to patches/server/0055-Custom-Locale-Support.patch diff --git a/patches/server/0058-Configurable-movement-checks.patch b/patches/server/0056-Configurable-movement-checks.patch similarity index 97% rename from patches/server/0058-Configurable-movement-checks.patch rename to patches/server/0056-Configurable-movement-checks.patch index 7aaad010..e6444dd5 100644 --- a/patches/server/0058-Configurable-movement-checks.patch +++ b/patches/server/0056-Configurable-movement-checks.patch @@ -45,10 +45,10 @@ index 540d16cb01e70fe46bce3a3bb4cdfd1841b3d155..4b0b4c2c9af4c0a43b30f84a87cb1539 PlayerConnection.LOGGER.warn("{} moved wrongly! ({})", this.player.getDisplayName().getString(), d11); // Purpur } diff --git a/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java b/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java -index 4f99aa4b578333795296da2424f38aae65a808a3..34b5a087d1d5d84b193adbd756add060a2d49354 100644 +index 4d6410401457afe91457ae72df14bf687e9c62fd..78decc9c7483f42acb65f342f12fc1d644440822 100644 --- a/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java +++ b/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java -@@ -272,4 +272,15 @@ public class YatopiaConfig { +@@ -249,4 +249,15 @@ public class YatopiaConfig { private static void fireBlockPhysicsEvent() { fireBlockPhysicsEvent = getBoolean("settings.fire-block-physics-event", true); } diff --git a/patches/server/0059-Configurable-enchanting-table-tick.patch b/patches/server/0057-Configurable-enchanting-table-tick.patch similarity index 94% rename from patches/server/0059-Configurable-enchanting-table-tick.patch rename to patches/server/0057-Configurable-enchanting-table-tick.patch index 65f1b9b1..3b488928 100644 --- a/patches/server/0059-Configurable-enchanting-table-tick.patch +++ b/patches/server/0057-Configurable-enchanting-table-tick.patch @@ -31,10 +31,10 @@ index 9b0c75332d9815657d96183e51e40cf14ee3ed75..e3de65b58a599b375b3be7470d918038 this.l = this.k; EntityHuman entityhuman = this.world.a((double) this.position.getX() + 0.5D, (double) this.position.getY() + 0.5D, (double) this.position.getZ() + 0.5D, 3.0D, false); diff --git a/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java b/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java -index 34b5a087d1d5d84b193adbd756add060a2d49354..2d4fb0a4664578f8d5c23db854eb8f2764724940 100644 +index 78decc9c7483f42acb65f342f12fc1d644440822..890247fadf69dabce6d1c23ba887f93ae5121e1e 100644 --- a/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java +++ b/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java -@@ -283,4 +283,9 @@ public class YatopiaConfig { +@@ -260,4 +260,9 @@ public class YatopiaConfig { checkVehicleMovedQuickly = getBoolean("settings.checks.vehicle-moved-quickly", checkVehicleMovedQuickly); checkVehicleMovedWrongly = getBoolean("settings.checks.vehicle-moved-wrongly", checkVehicleMovedWrongly); } diff --git a/patches/server/0060-Do-not-update-distance-map-when-animal-and-mob-spawn.patch b/patches/server/0058-Do-not-update-distance-map-when-animal-and-mob-spawn.patch similarity index 100% rename from patches/server/0060-Do-not-update-distance-map-when-animal-and-mob-spawn.patch rename to patches/server/0058-Do-not-update-distance-map-when-animal-and-mob-spawn.patch diff --git a/patches/server/0062-PaperPR-Fix-username-connecting-with-no-texture-bein.patch b/patches/server/0059-PaperPR-Fix-username-connecting-with-no-texture-bein.patch similarity index 100% rename from patches/server/0062-PaperPR-Fix-username-connecting-with-no-texture-bein.patch rename to patches/server/0059-PaperPR-Fix-username-connecting-with-no-texture-bein.patch diff --git a/patches/server/0063-Optimised-hallowen-checker.patch b/patches/server/0060-Optimised-hallowen-checker.patch similarity index 100% rename from patches/server/0063-Optimised-hallowen-checker.patch rename to patches/server/0060-Optimised-hallowen-checker.patch diff --git a/patches/server/0061-Add-a-special-case-for-floodgate-and-offline-uuids.patch b/patches/server/0061-Add-a-special-case-for-floodgate-and-offline-uuids.patch deleted file mode 100644 index 061d1dcf..00000000 --- a/patches/server/0061-Add-a-special-case-for-floodgate-and-offline-uuids.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Ivan Pekov -Date: Tue, 29 Dec 2020 08:47:43 +0200 -Subject: [PATCH] Add a special case for floodgate and offline uuids - -floodgate spoofs uuids, but plugins such as luckperms get the uuid that the server uses, causing problems -if this option is configured properly, such things won't happen - -diff --git a/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java b/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java -index 2d4fb0a4664578f8d5c23db854eb8f2764724940..00c600d74ba84cb564b9b22f53f279a93839d71f 100644 ---- a/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java -+++ b/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java -@@ -225,7 +225,16 @@ public class YatopiaConfig { - fixFallDistance = getBoolean("settings.fixFallDistance", false); - } - -+ public static boolean usingFloodgate = false; -+ private static void usingFloodgate() { -+ usingFloodgate = getBoolean("settings.using-floodgate", false); -+ } -+ - public static boolean shouldUseOfflineUUID() { -+ if (usingFloodgate) { -+ // never cuz floodgate spoofs an uuid -+ return false; -+ } - if (org.spigotmc.SpigotConfig.bungee && com.destroystokyo.paper.PaperConfig.bungeeOnlineMode) { - return false; - } diff --git a/patches/server/0064-Smol-entity-optimisations.patch b/patches/server/0061-Smol-entity-optimisations.patch similarity index 100% rename from patches/server/0064-Smol-entity-optimisations.patch rename to patches/server/0061-Smol-entity-optimisations.patch diff --git a/patches/server/0065-add-config-for-logging-login-location.patch b/patches/server/0062-add-config-for-logging-login-location.patch similarity index 93% rename from patches/server/0065-add-config-for-logging-login-location.patch rename to patches/server/0062-add-config-for-logging-login-location.patch index c5a2f6ae..49621ba1 100644 --- a/patches/server/0065-add-config-for-logging-login-location.patch +++ b/patches/server/0062-add-config-for-logging-login-location.patch @@ -24,10 +24,10 @@ index 7e42654873195d17c9a5a2a718216a943533e658..fd2fe2f5e53f34957f80223e1694a573 public void sendScoreboard(ScoreboardServer scoreboardserver, EntityPlayer entityplayer) { diff --git a/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java b/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java -index 00c600d74ba84cb564b9b22f53f279a93839d71f..35f212c2ac43ebea6ce9c4a333738c7a869ebc18 100644 +index 890247fadf69dabce6d1c23ba887f93ae5121e1e..c2dc5265552ebd429111253c70481003a4be29dd 100644 --- a/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java +++ b/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java -@@ -297,4 +297,10 @@ public class YatopiaConfig { +@@ -265,4 +265,10 @@ public class YatopiaConfig { private static void tickEnchantingTables() { shouldTickEnchantingTables = getBoolean("settings.tick.enchanting-tables", shouldTickEnchantingTables); } diff --git a/patches/server/0066-New-Network-System.patch b/patches/server/0063-New-Network-System.patch similarity index 98% rename from patches/server/0066-New-Network-System.patch rename to patches/server/0063-New-Network-System.patch index 936e1e53..cf9b78aa 100644 --- a/patches/server/0066-New-Network-System.patch +++ b/patches/server/0063-New-Network-System.patch @@ -128,10 +128,10 @@ index 0668d383db1f3a81d1053954d72678c7ac5aecec..d22f0ee3f7f2daa8323d454aca1f9473 } diff --git a/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java b/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java -index 35f212c2ac43ebea6ce9c4a333738c7a869ebc18..6fb4fdaaba092cce04e3600122e534ce8dff073c 100644 +index c2dc5265552ebd429111253c70481003a4be29dd..c67654e8701b9da6499d442048429149daae7150 100644 --- a/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java +++ b/src/main/java/org/yatopiamc/yatopia/server/YatopiaConfig.java -@@ -303,4 +303,17 @@ public class YatopiaConfig { +@@ -271,4 +271,17 @@ public class YatopiaConfig { logPlayerLoginLoc = getBoolean("settings.log-player-login-location", logPlayerLoginLoc); } diff --git a/patches/server/0067-Port-hydrogen.patch b/patches/server/0064-Port-hydrogen.patch similarity index 100% rename from patches/server/0067-Port-hydrogen.patch rename to patches/server/0064-Port-hydrogen.patch diff --git a/patches/server/0068-Port-krypton.patch b/patches/server/0065-Port-krypton.patch similarity index 99% rename from patches/server/0068-Port-krypton.patch rename to patches/server/0065-Port-krypton.patch index bfda1a2d..9f1752ed 100644 --- a/patches/server/0068-Port-krypton.patch +++ b/patches/server/0065-Port-krypton.patch @@ -76,7 +76,7 @@ index 4a49fe4cc600e2b70963302ddae0c4479849f3f5..3abc3869b8012f060e1997822ffdb321 // Paper start - Make legacy ping handler more reliable diff --git a/src/main/java/net/minecraft/server/LoginListener.java b/src/main/java/net/minecraft/server/LoginListener.java -index 847122f76f6d951b24b22c86276140e02aaf37d6..fe15c450bc1f792dba74823e08fc70f0757ceac3 100644 +index e081905af0abbad0cf9011075a6380ef652924a7..c3240607b23ccaa6743c013251e1e45a67072441 100644 --- a/src/main/java/net/minecraft/server/LoginListener.java +++ b/src/main/java/net/minecraft/server/LoginListener.java @@ -8,6 +8,7 @@ import java.math.BigInteger;