diff --git a/pom.xml b/pom.xml
index ed4f712..8a964bb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -68,7 +68,7 @@
org.geysermc
core
- 2.0.2-SNAPSHOT
+ 2.0.3-SNAPSHOT
net.minecrell
diff --git a/src/main/java/org/geysermc/connect/PacketHandler.java b/src/main/java/org/geysermc/connect/PacketHandler.java
index 597e381..53b05b2 100644
--- a/src/main/java/org/geysermc/connect/PacketHandler.java
+++ b/src/main/java/org/geysermc/connect/PacketHandler.java
@@ -178,16 +178,18 @@ public class PacketHandler implements BedrockPacketHandler {
AuthData authData = new AuthData(
extraData.get("displayName").asText(),
UUID.fromString(extraData.get("identity").asText()),
- extraData.get("XUID").asText(),
- chainData, packet.getSkinData().toString()
+ extraData.get("XUID").asText()
);
// Create a new player and add it to the players list
player = new Player(authData, session);
masterServer.getPlayers().add(player);
+ player.setChainData(chainData);
+
// Store the full client data
player.setClientData(OBJECT_MAPPER.convertValue(OBJECT_MAPPER.readTree(skinData.getPayload().toBytes()), BedrockClientData.class));
+ player.getClientData().setOriginalString(packet.getSkinData().toString());
// Tell the client we have logged in successfully
PlayStatusPacket playStatusPacket = new PlayStatusPacket();
diff --git a/src/main/java/org/geysermc/connect/utils/Player.java b/src/main/java/org/geysermc/connect/utils/Player.java
index 8c8bea6..0744b3c 100644
--- a/src/main/java/org/geysermc/connect/utils/Player.java
+++ b/src/main/java/org/geysermc/connect/utils/Player.java
@@ -25,6 +25,7 @@
package org.geysermc.connect.utils;
+import com.fasterxml.jackson.databind.JsonNode;
import com.nukkitx.math.vector.Vector2f;
import com.nukkitx.math.vector.Vector3f;
import com.nukkitx.math.vector.Vector3i;
@@ -41,6 +42,7 @@ import org.geysermc.connect.proxy.GeyserProxySession;
import org.geysermc.connect.ui.FormID;
import org.geysermc.cumulus.Form;
import org.geysermc.geyser.GeyserImpl;
+import org.geysermc.geyser.level.BedrockDimension;
import org.geysermc.geyser.network.UpstreamPacketHandler;
import org.geysermc.geyser.registry.BlockRegistries;
import org.geysermc.geyser.registry.Registries;
@@ -58,6 +60,8 @@ import java.util.List;
public class Player {
private final AuthData authData;
+ @Setter
+ private JsonNode chainData;
private final BedrockServerSession session;
@@ -100,7 +104,7 @@ public class Player {
startGamePacket.setPlayerPosition(Vector3f.from(0, 64 + 2, 0));
startGamePacket.setRotation(Vector2f.ONE);
- startGamePacket.setSeed(-1);
+ startGamePacket.setSeed(-1L);
startGamePacket.setDimensionId(2);
startGamePacket.setGeneratorId(1);
startGamePacket.setLevelGameType(GameType.CREATIVE);
@@ -266,6 +270,7 @@ public class Player {
geyserSession.setItemMappings(Registries.ITEMS.forVersion(session.getPacketCodec().getProtocolVersion()));
geyserSession.setAuthData(authData);
+ geyserSession.setCertChainData(chainData);
geyserSession.setClientData(clientData);
return geyserSession;
diff --git a/src/main/java/org/geysermc/connect/utils/WebUtils.java b/src/main/java/org/geysermc/connect/utils/WebUtils.java
deleted file mode 100644
index be7344e..0000000
--- a/src/main/java/org/geysermc/connect/utils/WebUtils.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * @author GeyserMC
- * @link https://github.com/GeyserMC/GeyserConnect
- */
-
-package org.geysermc.connect.utils;
-
-import org.geysermc.connector.GeyserConnector;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.net.HttpURLConnection;
-import java.net.URL;
-
-public class WebUtils {
- /**
- * Makes a web request to the given URL and returns the body as a string
- *
- * @param reqURL URL to fetch
- * @return Body contents or error message if the request fails
- */
- public static String getBody(String reqURL) {
- URL url;
- try {
- url = new URL(reqURL);
- HttpURLConnection con = (HttpURLConnection) url.openConnection();
- con.setRequestMethod("GET");
- con.setRequestProperty("User-Agent", "Geyser-Connect/" + GeyserConnector.VERSION); // Otherwise Java 8 fails on checking updates
-
- return connectionToString(con);
- } catch (Exception e) {
- return e.getMessage();
- }
- }
-
- /**
- * Get the string output from the passed {@link HttpURLConnection}
- *
- * @param con The connection to get the string from
- * @return The body of the returned page
- * @throws IOException If the request fails
- */
- private static String connectionToString(HttpURLConnection con) throws IOException {
- // Send the request (we dont use this but its required for getErrorStream() to work)
- int code = con.getResponseCode();
-
- // Read the error message if there is one if not just read normally
- InputStream inputStream = con.getErrorStream();
- if (inputStream == null) {
- inputStream = con.getInputStream();
- }
-
- BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
- String inputLine;
- StringBuilder content = new StringBuilder();
-
- while ((inputLine = in.readLine()) != null) {
- content.append(inputLine);
- content.append("\n");
- }
-
- in.close();
- con.disconnect();
-
- return content.toString();
- }
-}