mirror of
https://github.com/YatopiaMC/Yatopia.git
synced 2024-10-01 08:38:00 +02:00
e2d915fabd
Upstream/An Sidestream has released updates that appears to apply and compile correctly This update has NOT been tested by YatopiaMC and as with ANY update, please do your own testing. Tuinity Changes: aaef5d7 Updated Upstream (Paper) 31e1268 Merge https://github.com/Spottedleaf/Tuinity into ver/1.16.4 957a2ef Fix chunk object leak Origami Changes: d41f0b3 Update Paper to 1.16.4 Purpur Changes: 519ac08 Updated Upstream (Paper) be5fcdd Fix book bug 21e0b98 Updated Upstream (Paper & Tuinity)
97 lines
5.8 KiB
Diff
97 lines
5.8 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Ivan Pekov <ivan@mrivanplays.com>
|
|
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 1d60def8fa7041b3383c287153cbb9c6cec3d0f9..4b7caf04981e811c937f44b27662a9c220ba62f5 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 {
|
|
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..2fa0f21cfa81670f6c3f18f76e7fa8d0bb541f11 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<com.mojang.authlib.properties.Property> properties;
|
|
+ if (networkManager.spoofedProfile != null) {
|
|
+ properties = new java.util.ArrayList<>(Arrays.asList(networkManager.spoofedProfile));
|
|
+ } else {
|
|
+ properties = new java.util.ArrayList<>();
|
|
+ }
|
|
+ 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 d346ecbd67f9ed48a343fdbc7e8b81b0e7dda3d9..837056fdd8b8125bcfe39a1d49fa6e1797bba708 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<Packet<?>> {
|
|
// 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;
|