diff --git a/gateway/EaglercraftXBungee/EaglerXBungee-Latest.jar b/gateway/EaglercraftXBungee/EaglerXBungee-Latest.jar index 1be2107..87f27a6 100644 Binary files a/gateway/EaglercraftXBungee/EaglerXBungee-Latest.jar and b/gateway/EaglercraftXBungee/EaglerXBungee-Latest.jar differ diff --git a/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/server/EaglerInitialHandler.java b/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/server/EaglerInitialHandler.java index bbb6e3b..f97c5d0 100644 --- a/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/server/EaglerInitialHandler.java +++ b/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/server/EaglerInitialHandler.java @@ -61,6 +61,8 @@ public class EaglerInitialHandler extends InitialHandler { private final int gameProtocolVersion; private final String username; private final UUID playerUUID; + private final UUID playerUUIDOffline; + private final UUID playerUUIDRewrite; private LoginResult loginResult; private final InetSocketAddress eaglerAddress; private final InetSocketAddress virtualHost; @@ -79,12 +81,14 @@ public class EaglerInitialHandler extends InitialHandler { private static final Property[] NO_PROPERTIES = new Property[0]; public EaglerInitialHandler(BungeeCord bungee, EaglerListenerConfig listener, final ChannelWrapper ch, - int gameProtocolVersion, String username, UUID playerUUID, InetSocketAddress address, String host, - String origin, ClientCertificateHolder clientCertificate) { + int gameProtocolVersion, String username, UUID playerUUID, UUID offlineUUID, InetSocketAddress address, + String host, String origin, ClientCertificateHolder clientCertificate) { super(bungee, listener); this.gameProtocolVersion = gameProtocolVersion; this.username = username; this.playerUUID = playerUUID; + this.playerUUIDOffline = offlineUUID; + this.playerUUIDRewrite = bungee.config.isIpForward() ? playerUUID : offlineUUID; this.eaglerAddress = address; this.origin = origin; this.skinLookupRateLimiter = new SimpleRateLimiter(); @@ -127,6 +131,14 @@ public class EaglerInitialHandler extends InitialHandler { } } + public static UUID generateOfflineUUID(byte[] username) { + String offlinePlayerStr = "OfflinePlayer:"; + byte[] uuidHashGenerator = new byte[offlinePlayerStr.length() + username.length]; + System.arraycopy(offlinePlayerStr.getBytes(StandardCharsets.US_ASCII), 0, uuidHashGenerator, 0, offlinePlayerStr.length()); + System.arraycopy(username, 0, uuidHashGenerator, offlinePlayerStr.length(), username.length); + return UUID.nameUUIDFromBytes(uuidHashGenerator); + } + void setLoginProfile(LoginResult obj) { this.loginResult = obj; try { @@ -231,12 +243,12 @@ public class EaglerInitialHandler extends InitialHandler { @Override public UUID getOfflineId() { - return playerUUID; + return playerUUIDOffline; } @Override public UUID getRewriteId() { - return playerUUID; + return playerUUIDRewrite; } @Override diff --git a/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/server/EaglerMinecraftByteBufEncoder.java b/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/server/EaglerMinecraftByteBufEncoder.java index 1c0d2bb..e113bb3 100644 --- a/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/server/EaglerMinecraftByteBufEncoder.java +++ b/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/server/EaglerMinecraftByteBufEncoder.java @@ -27,7 +27,7 @@ public class EaglerMinecraftByteBufEncoder extends MessageToMessageEncoder var3) throws Exception { - var3.add(new BinaryWebSocketFrame(Unpooled.copiedBuffer(var2))); + var3.add(new BinaryWebSocketFrame(var2.retain())); } } diff --git a/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/server/EaglerMinecraftDecoder.java b/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/server/EaglerMinecraftDecoder.java index f5ddadc..503748a 100644 --- a/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/server/EaglerMinecraftDecoder.java +++ b/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/server/EaglerMinecraftDecoder.java @@ -11,6 +11,7 @@ import io.netty.handler.codec.http.websocketx.BinaryWebSocketFrame; import io.netty.handler.codec.http.websocketx.PingWebSocketFrame; import io.netty.handler.codec.http.websocketx.PongWebSocketFrame; import io.netty.handler.codec.http.websocketx.WebSocketFrame; +import io.netty.util.ReferenceCountUtil; import net.lax1dude.eaglercraft.v1_8.plugin.gateway_bungeecord.EaglerXBungee; import net.lax1dude.eaglercraft.v1_8.plugin.gateway_bungeecord.server.bungeeprotocol.EaglerBungeeProtocol; import net.lax1dude.eaglercraft.v1_8.plugin.gateway_bungeecord.server.bungeeprotocol.EaglerProtocolAccessProxy; @@ -50,6 +51,7 @@ public class EaglerMinecraftDecoder extends MessageToMessageDecoder set = EaglerUpdateSvc.getCertList(); diff --git a/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/server/web/HttpMemoryCache.java b/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/server/web/HttpMemoryCache.java index e849a6f..6c91e95 100644 --- a/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/server/web/HttpMemoryCache.java +++ b/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/server/web/HttpMemoryCache.java @@ -65,7 +65,7 @@ public class HttpMemoryCache { } public DefaultFullHttpResponse createHTTPResponse(HttpResponseStatus code) { - DefaultFullHttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, code, Unpooled.copiedBuffer(fileData)); + DefaultFullHttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, code, Unpooled.wrappedBuffer(fileData.retain())); HttpHeaders responseHeaders = response.headers(); Date d = new Date(); responseHeaders.add(HttpHeaderNames.CONTENT_TYPE, contentType.httpHeader); diff --git a/gateway/EaglercraftXBungee/src/main/resources/plugin.yml b/gateway/EaglercraftXBungee/src/main/resources/plugin.yml index 5f1bd89..58632a5 100644 --- a/gateway/EaglercraftXBungee/src/main/resources/plugin.yml +++ b/gateway/EaglercraftXBungee/src/main/resources/plugin.yml @@ -1,5 +1,5 @@ name: EaglercraftXBungee main: net.lax1dude.eaglercraft.v1_8.plugin.gateway_bungeecord.EaglerXBungee -version: 1.2.0 +version: 1.2.1 description: Plugin to allow EaglercraftX 1.8 players to join your network, or allow EaglercraftX 1.8 players to use your network as a proxy to join other networks author: lax1dude \ No newline at end of file diff --git a/gateway_version b/gateway_version index 867e524..cb174d5 100644 --- a/gateway_version +++ b/gateway_version @@ -1 +1 @@ -1.2.0 \ No newline at end of file +1.2.1 \ No newline at end of file