From 24437d3ae8a03ae3ce35b57e6131e54b9cfa543e Mon Sep 17 00:00:00 2001 From: Camotoy <20743703+Camotoy@users.noreply.github.com> Date: Sun, 17 Apr 2022 20:21:16 -0400 Subject: [PATCH] Support 1.18.30 --- pom.xml | 2 +- .../org/geysermc/connect/PacketHandler.java | 6 +- .../org/geysermc/connect/utils/Player.java | 7 +- .../org/geysermc/connect/utils/WebUtils.java | 89 ------------------- 4 files changed, 11 insertions(+), 93 deletions(-) delete mode 100644 src/main/java/org/geysermc/connect/utils/WebUtils.java 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(); - } -}