From d8ce39636b68877574c3faa9f3242c3ecabb7e97 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Tue, 30 Nov 2021 11:33:56 -0500
Subject: [PATCH] Update to 1.18
---
pom.xml | 4 +-
.../org/geysermc/connect/MasterServer.java | 20 +++----
.../org/geysermc/connect/PacketHandler.java | 34 ++++++-----
.../connect/proxy/GeyserProxyBootstrap.java | 26 ++++----
.../proxy/GeyserProxyCommandManager.java | 8 +--
.../proxy/GeyserProxyConfiguration.java | 2 +-
.../connect/proxy/GeyserProxySession.java | 9 +--
.../ProxyConnectorServerEventHandler.java | 12 ++--
.../connect/storage/JsonStorageManager.java | 4 +-
.../connect/storage/MySQLStorageManager.java | 21 +++----
.../connect/storage/SQLiteStorageManager.java | 21 +++----
.../org/geysermc/connect/utils/Logger.java | 4 +-
.../geysermc/connect/utils/PaletteManger.java | 59 -------------------
.../org/geysermc/connect/utils/Player.java | 41 ++++++++-----
.../org/geysermc/connect/utils/WebUtils.java | 2 +-
15 files changed, 105 insertions(+), 162 deletions(-)
delete mode 100644 src/main/java/org/geysermc/connect/utils/PaletteManger.java
diff --git a/pom.xml b/pom.xml
index 3a98fd6..0bbd5af 100644
--- a/pom.xml
+++ b/pom.xml
@@ -67,8 +67,8 @@
org.geysermc
- connector
- 1.4.3-SNAPSHOT
+ core
+ 2.0.0-SNAPSHOT
com.nukkitx.network
diff --git a/src/main/java/org/geysermc/connect/MasterServer.java b/src/main/java/org/geysermc/connect/MasterServer.java
index 2d82041..9034134 100644
--- a/src/main/java/org/geysermc/connect/MasterServer.java
+++ b/src/main/java/org/geysermc/connect/MasterServer.java
@@ -30,16 +30,16 @@ import io.netty.channel.DefaultEventLoopGroup;
import io.netty.util.concurrent.DefaultThreadFactory;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import lombok.Getter;
-import org.geysermc.connect.storage.DisabledStorageManager;
-import org.geysermc.connect.utils.Server;
-import org.geysermc.connect.utils.ServerCategory;
-import org.geysermc.connector.GeyserConnector;
-import org.geysermc.connector.network.BedrockProtocol;
-import org.geysermc.connector.utils.FileUtils;
import org.geysermc.connect.proxy.GeyserProxyBootstrap;
import org.geysermc.connect.storage.AbstractStorageManager;
+import org.geysermc.connect.storage.DisabledStorageManager;
import org.geysermc.connect.utils.Logger;
import org.geysermc.connect.utils.Player;
+import org.geysermc.connect.utils.Server;
+import org.geysermc.connect.utils.ServerCategory;
+import org.geysermc.geyser.GeyserImpl;
+import org.geysermc.geyser.network.MinecraftProtocol;
+import org.geysermc.geyser.util.FileUtils;
import java.io.File;
import java.io.IOException;
@@ -142,7 +142,7 @@ public class MasterServer {
@Override
public BedrockPong onQuery(InetSocketAddress address) {
- int playerCount = players.size() + GeyserConnector.getInstance().getSessionManager().size();
+ int playerCount = players.size() + GeyserImpl.getInstance().getSessionManager().size();
String subMotd = geyserConnectConfig.getSubmotd();
if (subMotd == null || subMotd.isEmpty()) {
@@ -157,8 +157,8 @@ public class MasterServer {
bdPong.setMaximumPlayerCount(geyserConnectConfig.getMaxPlayers());
bdPong.setGameType("Survival");
bdPong.setIpv4Port(port);
- bdPong.setProtocolVersion(BedrockProtocol.DEFAULT_BEDROCK_CODEC.getProtocolVersion());
- bdPong.setVersion(BedrockProtocol.DEFAULT_BEDROCK_CODEC.getMinecraftVersion());
+ bdPong.setProtocolVersion(MinecraftProtocol.DEFAULT_BEDROCK_CODEC.getProtocolVersion());
+ bdPong.setVersion(MinecraftProtocol.DEFAULT_BEDROCK_CODEC.getMinecraftVersion());
return bdPong;
}
@@ -191,7 +191,7 @@ public class MasterServer {
public void createGeyserProxy() {
if (geyserProxy == null) {
// Make sure Geyser doesn't start the listener
- GeyserConnector.setShouldStartListener(false);
+ GeyserImpl.setShouldStartListener(false);
this.geyserProxy = new GeyserProxyBootstrap();
geyserProxy.onEnable();
diff --git a/src/main/java/org/geysermc/connect/PacketHandler.java b/src/main/java/org/geysermc/connect/PacketHandler.java
index 9202dda..989815c 100644
--- a/src/main/java/org/geysermc/connect/PacketHandler.java
+++ b/src/main/java/org/geysermc/connect/PacketHandler.java
@@ -42,20 +42,21 @@ import com.nukkitx.protocol.bedrock.data.ExperimentData;
import com.nukkitx.protocol.bedrock.handler.BedrockPacketHandler;
import com.nukkitx.protocol.bedrock.packet.*;
import com.nukkitx.protocol.bedrock.util.EncryptionUtils;
+import com.nukkitx.protocol.bedrock.v471.Bedrock_v471;
import org.geysermc.connect.ui.FormID;
import org.geysermc.connect.ui.UIHandler;
import org.geysermc.connect.utils.Player;
import org.geysermc.connect.utils.Server;
-import org.geysermc.connector.entity.attribute.GeyserAttributeType;
-import org.geysermc.connector.network.BedrockProtocol;
-import org.geysermc.connector.network.session.auth.AuthData;
-import org.geysermc.connector.network.session.auth.BedrockClientData;
-import org.geysermc.connector.registry.Registries;
-import org.geysermc.connector.utils.FileUtils;
import org.geysermc.cumulus.Form;
import org.geysermc.cumulus.response.CustomFormResponse;
import org.geysermc.cumulus.response.FormResponse;
import org.geysermc.cumulus.response.SimpleFormResponse;
+import org.geysermc.geyser.entity.attribute.GeyserAttributeType;
+import org.geysermc.geyser.network.MinecraftProtocol;
+import org.geysermc.geyser.registry.Registries;
+import org.geysermc.geyser.session.auth.AuthData;
+import org.geysermc.geyser.session.auth.BedrockClientData;
+import org.geysermc.geyser.util.FileUtils;
import java.io.File;
import java.io.IOException;
@@ -83,7 +84,7 @@ public class PacketHandler implements BedrockPacketHandler {
public void disconnect(DisconnectReason reason) {
if (player != null) {
- masterServer.getLogger().info(player.getAuthData().getName() + " has disconnected from the master server (" + reason + ")");
+ masterServer.getLogger().info(player.getAuthData().name() + " has disconnected from the master server (" + reason + ")");
masterServer.getStorageManager().saveServers(player);
masterServer.getPlayers().remove(player);
@@ -94,16 +95,16 @@ public class PacketHandler implements BedrockPacketHandler {
public boolean handle(LoginPacket packet) {
masterServer.getLogger().debug("Login: " + packet.toString());
- BedrockPacketCodec packetCodec = BedrockProtocol.getBedrockCodec(packet.getProtocolVersion());
+ BedrockPacketCodec packetCodec = MinecraftProtocol.getBedrockCodec(packet.getProtocolVersion());
if (packetCodec == null) {
- session.setPacketCodec(BedrockProtocol.DEFAULT_BEDROCK_CODEC);
+ session.setPacketCodec(MinecraftProtocol.DEFAULT_BEDROCK_CODEC);
String message = "disconnectionScreen.internalError.cantConnect";
PlayStatusPacket status = new PlayStatusPacket();
- if (packet.getProtocolVersion() > BedrockProtocol.DEFAULT_BEDROCK_CODEC.getProtocolVersion()) {
+ if (packet.getProtocolVersion() > MinecraftProtocol.DEFAULT_BEDROCK_CODEC.getProtocolVersion()) {
status.setStatus(PlayStatusPacket.Status.LOGIN_FAILED_SERVER_OLD);
message = "disconnectionScreen.outdatedServer";
- } else if (packet.getProtocolVersion() < BedrockProtocol.DEFAULT_BEDROCK_CODEC.getProtocolVersion()) {
+ } else if (packet.getProtocolVersion() < MinecraftProtocol.DEFAULT_BEDROCK_CODEC.getProtocolVersion()) {
status.setStatus(PlayStatusPacket.Status.LOGIN_FAILED_CLIENT_OLD);
message = "disconnectionScreen.outdatedClient";
}
@@ -207,7 +208,7 @@ public class PacketHandler implements BedrockPacketHandler {
public boolean handle(ResourcePackClientResponsePacket packet) {
switch (packet.getStatus()) {
case COMPLETED:
- masterServer.getLogger().info("Logged in " + player.getAuthData().getName() + " (" + player.getAuthData().getXboxUUID() + ", " + player.getAuthData().getUUID() + ")");
+ masterServer.getLogger().info("Logged in " + player.getAuthData().name() + " (" + player.getAuthData().xuid() + ", " + player.getAuthData().uuid() + ")");
player.sendStartGame();
break;
case HAVE_ALL_PACKS:
@@ -221,6 +222,11 @@ public class PacketHandler implements BedrockPacketHandler {
stack.getExperiments().add(new ExperimentData("data_driven_items", true));
}
+ if (session.getPacketCodec().getProtocolVersion() <= Bedrock_v471.V471_CODEC.getProtocolVersion()) {
+ // Allow extended world height in the overworld to work for pre-1.18 clients
+ stack.getExperiments().add(new ExperimentData("caves_and_cliffs", true));
+ }
+
session.sendPacket(stack);
break;
default:
@@ -233,7 +239,7 @@ public class PacketHandler implements BedrockPacketHandler {
@Override
public boolean handle(SetLocalPlayerAsInitializedPacket packet) {
- masterServer.getLogger().debug("Player initialized: " + player.getAuthData().getName());
+ masterServer.getLogger().debug("Player initialized: " + player.getAuthData().name());
// Handle the virtual host if specified
GeyserConnectConfig.VirtualHostSection vhost = MasterServer.getInstance().getGeyserConnectConfig().getVhost();
@@ -264,7 +270,7 @@ public class PacketHandler implements BedrockPacketHandler {
}
// Log the virtual host usage
- masterServer.getLogger().info(player.getAuthData().getName() + " is using virtualhost: " + address + ":" + port + (!online ? " (offline)" : ""));
+ masterServer.getLogger().info(player.getAuthData().name() + " is using virtualhost: " + address + ":" + port + (!online ? " (offline)" : ""));
// Send the player to the wanted server
player.sendToServer(new Server(address, port, online, false));
diff --git a/src/main/java/org/geysermc/connect/proxy/GeyserProxyBootstrap.java b/src/main/java/org/geysermc/connect/proxy/GeyserProxyBootstrap.java
index 8512b28..8c82d37 100644
--- a/src/main/java/org/geysermc/connect/proxy/GeyserProxyBootstrap.java
+++ b/src/main/java/org/geysermc/connect/proxy/GeyserProxyBootstrap.java
@@ -28,15 +28,15 @@ package org.geysermc.connect.proxy;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import org.geysermc.common.PlatformType;
-import org.geysermc.connector.GeyserConnector;
-import org.geysermc.connector.bootstrap.GeyserBootstrap;
-import org.geysermc.connector.command.CommandManager;
-import org.geysermc.connector.configuration.GeyserConfiguration;
-import org.geysermc.connector.dump.BootstrapDumpInfo;
-import org.geysermc.connector.ping.GeyserLegacyPingPassthrough;
-import org.geysermc.connector.ping.IGeyserPingPassthrough;
import org.geysermc.connect.GeyserConnectConfig;
import org.geysermc.connect.MasterServer;
+import org.geysermc.geyser.GeyserBootstrap;
+import org.geysermc.geyser.GeyserImpl;
+import org.geysermc.geyser.command.CommandManager;
+import org.geysermc.geyser.configuration.GeyserConfiguration;
+import org.geysermc.geyser.dump.BootstrapDumpInfo;
+import org.geysermc.geyser.ping.GeyserLegacyPingPassthrough;
+import org.geysermc.geyser.ping.IGeyserPingPassthrough;
import java.io.BufferedReader;
import java.io.IOException;
@@ -54,7 +54,7 @@ public class GeyserProxyBootstrap implements GeyserBootstrap {
private GeyserProxyLogger geyserLogger;
private IGeyserPingPassthrough geyserPingPassthrough;
- private GeyserConnector connector;
+ private GeyserImpl geyser;
@Override
public void onEnable() {
@@ -83,19 +83,19 @@ public class GeyserProxyBootstrap implements GeyserBootstrap {
GeyserConfiguration.checkGeyserConfiguration(geyserConfig, geyserLogger);
// Create the connector and command manager
- connector = GeyserConnector.start(PlatformType.STANDALONE, this);
- geyserCommandManager = new GeyserProxyCommandManager(connector);
+ geyser = GeyserImpl.start(PlatformType.STANDALONE, this);
+ geyserCommandManager = new GeyserProxyCommandManager(geyser);
// Start the ping passthrough thread, again don't think there is a point
- geyserPingPassthrough = GeyserLegacyPingPassthrough.init(connector);
+ geyserPingPassthrough = GeyserLegacyPingPassthrough.init(geyser);
// Swap the normal handler to our custom handler so we can change some
- connector.getBedrockServer().setHandler(new ProxyConnectorServerEventHandler(connector));
+ geyser.getBedrockServer().setHandler(new ProxyConnectorServerEventHandler(geyser));
}
@Override
public void onDisable() {
- connector.shutdown();
+ geyser.shutdown();
}
@Override
diff --git a/src/main/java/org/geysermc/connect/proxy/GeyserProxyCommandManager.java b/src/main/java/org/geysermc/connect/proxy/GeyserProxyCommandManager.java
index 8fef7a7..c3635b9 100644
--- a/src/main/java/org/geysermc/connect/proxy/GeyserProxyCommandManager.java
+++ b/src/main/java/org/geysermc/connect/proxy/GeyserProxyCommandManager.java
@@ -25,13 +25,13 @@
package org.geysermc.connect.proxy;
-import org.geysermc.connector.GeyserConnector;
-import org.geysermc.connector.command.CommandManager;
+import org.geysermc.geyser.GeyserImpl;
+import org.geysermc.geyser.command.CommandManager;
public class GeyserProxyCommandManager extends CommandManager {
- public GeyserProxyCommandManager(GeyserConnector connector) {
- super(connector);
+ public GeyserProxyCommandManager(GeyserImpl geyser) {
+ super(geyser);
}
@Override
diff --git a/src/main/java/org/geysermc/connect/proxy/GeyserProxyConfiguration.java b/src/main/java/org/geysermc/connect/proxy/GeyserProxyConfiguration.java
index c00877e..d7a93ae 100644
--- a/src/main/java/org/geysermc/connect/proxy/GeyserProxyConfiguration.java
+++ b/src/main/java/org/geysermc/connect/proxy/GeyserProxyConfiguration.java
@@ -27,7 +27,7 @@ package org.geysermc.connect.proxy;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Getter;
-import org.geysermc.connector.configuration.GeyserJacksonConfiguration;
+import org.geysermc.geyser.configuration.GeyserJacksonConfiguration;
import java.nio.file.Path;
import java.nio.file.Paths;
diff --git a/src/main/java/org/geysermc/connect/proxy/GeyserProxySession.java b/src/main/java/org/geysermc/connect/proxy/GeyserProxySession.java
index 580f48f..b842023 100644
--- a/src/main/java/org/geysermc/connect/proxy/GeyserProxySession.java
+++ b/src/main/java/org/geysermc/connect/proxy/GeyserProxySession.java
@@ -27,12 +27,13 @@ package org.geysermc.connect.proxy;
import com.nukkitx.protocol.bedrock.BedrockServerSession;
import io.netty.channel.EventLoop;
-import org.geysermc.connector.GeyserConnector;
-import org.geysermc.connector.network.session.GeyserSession;
+import org.geysermc.geyser.GeyserImpl;
+import org.geysermc.geyser.session.GeyserSession;
public class GeyserProxySession extends GeyserSession {
- public GeyserProxySession(GeyserConnector connector, BedrockServerSession bedrockServerSession, EventLoop eventLoop) {
- super(connector, bedrockServerSession, eventLoop);
+ public GeyserProxySession(GeyserImpl geyser, BedrockServerSession bedrockServerSession, EventLoop eventLoop) {
+ super(geyser, bedrockServerSession, eventLoop);
+ sentSpawnPacket = true;
}
@Override
diff --git a/src/main/java/org/geysermc/connect/proxy/ProxyConnectorServerEventHandler.java b/src/main/java/org/geysermc/connect/proxy/ProxyConnectorServerEventHandler.java
index 8551d51..c067813 100644
--- a/src/main/java/org/geysermc/connect/proxy/ProxyConnectorServerEventHandler.java
+++ b/src/main/java/org/geysermc/connect/proxy/ProxyConnectorServerEventHandler.java
@@ -26,17 +26,13 @@
package org.geysermc.connect.proxy;
import com.nukkitx.protocol.bedrock.BedrockServerSession;
-import org.geysermc.connector.GeyserConnector;
-import org.geysermc.connector.network.ConnectorServerEventHandler;
-import org.geysermc.connect.MasterServer;
-import org.geysermc.connect.utils.Player;
-
-import java.util.concurrent.TimeUnit;
+import org.geysermc.geyser.GeyserImpl;
+import org.geysermc.geyser.network.ConnectorServerEventHandler;
public class ProxyConnectorServerEventHandler extends ConnectorServerEventHandler {
- public ProxyConnectorServerEventHandler(GeyserConnector connector) {
- super(connector);
+ public ProxyConnectorServerEventHandler(GeyserImpl geyser) {
+ super(geyser);
}
@Override
diff --git a/src/main/java/org/geysermc/connect/storage/JsonStorageManager.java b/src/main/java/org/geysermc/connect/storage/JsonStorageManager.java
index 6f79913..cd07ed8 100644
--- a/src/main/java/org/geysermc/connect/storage/JsonStorageManager.java
+++ b/src/main/java/org/geysermc/connect/storage/JsonStorageManager.java
@@ -51,7 +51,7 @@ public class JsonStorageManager extends AbstractStorageManager {
@Override
public void saveServers(Player player) {
try {
- mapper.writeValue(dataFolder.resolve(player.getAuthData().getXboxUUID() + ".json").toFile(), player.getServers());
+ mapper.writeValue(dataFolder.resolve(player.getAuthData().xuid() + ".json").toFile(), player.getServers());
} catch (IOException ignored) { }
}
@@ -60,7 +60,7 @@ public class JsonStorageManager extends AbstractStorageManager {
List servers = new ArrayList<>();
try {
- List loadedServers = mapper.readValue(dataFolder.resolve(player.getAuthData().getXboxUUID() + ".json").toFile(), new TypeReference>(){});
+ List loadedServers = mapper.readValue(dataFolder.resolve(player.getAuthData().xuid() + ".json").toFile(), new TypeReference<>(){});
servers.addAll(loadedServers);
} catch (IOException ignored) { }
diff --git a/src/main/java/org/geysermc/connect/storage/MySQLStorageManager.java b/src/main/java/org/geysermc/connect/storage/MySQLStorageManager.java
index 16addc7..a9ae067 100644
--- a/src/main/java/org/geysermc/connect/storage/MySQLStorageManager.java
+++ b/src/main/java/org/geysermc/connect/storage/MySQLStorageManager.java
@@ -50,9 +50,9 @@ public class MySQLStorageManager extends AbstractStorageManager {
GeyserConnectConfig.MySQLConnectionSection connectionInformation = MasterServer.getInstance().getGeyserConnectConfig().getCustomServers().getMysql();
connection = DriverManager.getConnection("jdbc:mysql://" + connectionInformation.getHost() + ":" + connectionInformation.getPort() + "/" + connectionInformation.getDatabase(), connectionInformation.getUser(), connectionInformation.getPass());
- Statement createPlayersTable = connection.createStatement();
- createPlayersTable.executeUpdate("CREATE TABLE IF NOT EXISTS players (xuid VARCHAR(32), servers TEXT, PRIMARY KEY(xuid));");
- createPlayersTable.close();
+ try (Statement createPlayersTable = connection.createStatement()) {
+ createPlayersTable.executeUpdate("CREATE TABLE IF NOT EXISTS players (xuid VARCHAR(32), servers TEXT, PRIMARY KEY(xuid));");
+ }
} catch (ClassNotFoundException | SQLException e) {
MasterServer.getInstance().getLogger().severe("Unable to connect to MySQL database!", e);
}
@@ -67,10 +67,8 @@ public class MySQLStorageManager extends AbstractStorageManager {
@Override
public void saveServers(Player player) {
- try {
- Statement updatePlayersServers = connection.createStatement();
- updatePlayersServers.executeUpdate("REPLACE INTO players(xuid, servers) VALUES('" + player.getAuthData().getXboxUUID() + "', '" + mapper.writeValueAsString(player.getServers()) + "');");
- updatePlayersServers.close();
+ try (Statement updatePlayersServers = connection.createStatement()) {
+ updatePlayersServers.executeUpdate("REPLACE INTO players(xuid, servers) VALUES('" + player.getAuthData().xuid() + "', '" + mapper.writeValueAsString(player.getServers()) + "');");
} catch (IOException | SQLException ignored) { }
}
@@ -78,16 +76,13 @@ public class MySQLStorageManager extends AbstractStorageManager {
public List loadServers(Player player) {
List servers = new ArrayList<>();
- try {
- Statement getPlayersServers = connection.createStatement();
- ResultSet rs = getPlayersServers.executeQuery("SELECT servers FROM players WHERE xuid='" + player.getAuthData().getXboxUUID() + "';");
+ try (Statement getPlayersServers = connection.createStatement()) {
+ ResultSet rs = getPlayersServers.executeQuery("SELECT servers FROM players WHERE xuid='" + player.getAuthData().xuid() + "';");
while (rs.next()) {
- List loadedServers = mapper.readValue(rs.getString("servers"), new TypeReference>(){});
+ List loadedServers = mapper.readValue(rs.getString("servers"), new TypeReference<>(){});
servers.addAll(loadedServers);
}
-
- getPlayersServers.close();
} catch (IOException | SQLException ignored) { }
return servers;
diff --git a/src/main/java/org/geysermc/connect/storage/SQLiteStorageManager.java b/src/main/java/org/geysermc/connect/storage/SQLiteStorageManager.java
index 6a3dcfd..a9ec6c0 100644
--- a/src/main/java/org/geysermc/connect/storage/SQLiteStorageManager.java
+++ b/src/main/java/org/geysermc/connect/storage/SQLiteStorageManager.java
@@ -48,9 +48,9 @@ public class SQLiteStorageManager extends AbstractStorageManager {
Class.forName("org.sqlite.JDBC");
connection = DriverManager.getConnection("jdbc:sqlite:players.db");
- Statement createPlayersTable = connection.createStatement();
- createPlayersTable.executeUpdate("CREATE TABLE IF NOT EXISTS players (xuid TEXT, servers TEXT, PRIMARY KEY(xuid));");
- createPlayersTable.close();
+ try (Statement createPlayersTable = connection.createStatement()) {
+ createPlayersTable.executeUpdate("CREATE TABLE IF NOT EXISTS players (xuid TEXT, servers TEXT, PRIMARY KEY(xuid));");
+ }
} catch (ClassNotFoundException | SQLException e) {
MasterServer.getInstance().getLogger().severe("Unable to load sqlite database!", e);
}
@@ -65,10 +65,8 @@ public class SQLiteStorageManager extends AbstractStorageManager {
@Override
public void saveServers(Player player) {
- try {
- Statement updatePlayersServers = connection.createStatement();
- updatePlayersServers.executeUpdate("INSERT OR REPLACE INTO players(xuid, servers) VALUES('" + player.getAuthData().getXboxUUID() + "', '" + mapper.writeValueAsString(player.getServers()) + "');");
- updatePlayersServers.close();
+ try (Statement updatePlayersServers = connection.createStatement()) {
+ updatePlayersServers.executeUpdate("INSERT OR REPLACE INTO players(xuid, servers) VALUES('" + player.getAuthData().xuid() + "', '" + mapper.writeValueAsString(player.getServers()) + "');");
} catch (IOException | SQLException ignored) { }
}
@@ -76,16 +74,13 @@ public class SQLiteStorageManager extends AbstractStorageManager {
public List loadServers(Player player) {
List servers = new ArrayList<>();
- try {
- Statement getPlayersServers = connection.createStatement();
- ResultSet rs = getPlayersServers.executeQuery("SELECT servers FROM players WHERE xuid='" + player.getAuthData().getXboxUUID() + "';");
+ try (Statement getPlayersServers = connection.createStatement()) {
+ ResultSet rs = getPlayersServers.executeQuery("SELECT servers FROM players WHERE xuid='" + player.getAuthData().xuid() + "';");
while (rs.next()) {
- List loadedServers = mapper.readValue(rs.getString("servers"), new TypeReference>() {});
+ List loadedServers = mapper.readValue(rs.getString("servers"), new TypeReference<>() {});
servers.addAll(loadedServers);
}
-
- getPlayersServers.close();
} catch (IOException | SQLException ignored) { }
return servers;
diff --git a/src/main/java/org/geysermc/connect/utils/Logger.java b/src/main/java/org/geysermc/connect/utils/Logger.java
index d015c05..ef7c72b 100644
--- a/src/main/java/org/geysermc/connect/utils/Logger.java
+++ b/src/main/java/org/geysermc/connect/utils/Logger.java
@@ -29,8 +29,8 @@ import lombok.extern.log4j.Log4j2;
import net.minecrell.terminalconsole.SimpleTerminalConsole;
import org.apache.logging.log4j.core.config.Configurator;
import org.geysermc.connect.MasterServer;
-import org.geysermc.connector.GeyserLogger;
-import org.geysermc.connector.common.ChatColor;
+import org.geysermc.geyser.GeyserLogger;
+import org.geysermc.geyser.text.ChatColor;
@Log4j2
public class Logger extends SimpleTerminalConsole implements GeyserLogger {
diff --git a/src/main/java/org/geysermc/connect/utils/PaletteManger.java b/src/main/java/org/geysermc/connect/utils/PaletteManger.java
deleted file mode 100644
index e7b124a..0000000
--- a/src/main/java/org/geysermc/connect/utils/PaletteManger.java
+++ /dev/null
@@ -1,59 +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 com.nukkitx.nbt.*;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-
-/**
- * This class is mostly copied from core Geyser
- */
-public class PaletteManger {
-
- public static final byte[] EMPTY_LEVEL_CHUNK_DATA;
- private static final NbtMap EMPTY_TAG = NbtMap.EMPTY;
-
- static {
- /* Create empty chunk data */
- try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
- outputStream.write(new byte[258]); // Biomes + Border Size + Extra Data Size
-
- try (NBTOutputStream nbtOutputStream = NbtUtils.createNetworkWriter(outputStream)) {
- nbtOutputStream.writeTag(EMPTY_TAG);
- }
-
- EMPTY_LEVEL_CHUNK_DATA = outputStream.toByteArray();
- } catch (IOException e) {
- throw new AssertionError("Unable to generate empty level chunk data");
- }
- }
-
- public static void init() {
- // no-op
- }
-}
diff --git a/src/main/java/org/geysermc/connect/utils/Player.java b/src/main/java/org/geysermc/connect/utils/Player.java
index 4ec8a0d..af4e394 100644
--- a/src/main/java/org/geysermc/connect/utils/Player.java
+++ b/src/main/java/org/geysermc/connect/utils/Player.java
@@ -31,25 +31,26 @@ import com.nukkitx.math.vector.Vector3i;
import com.nukkitx.protocol.bedrock.BedrockServerSession;
import com.nukkitx.protocol.bedrock.data.*;
import com.nukkitx.protocol.bedrock.packet.*;
+import com.nukkitx.protocol.bedrock.v471.Bedrock_v471;
import it.unimi.dsi.fastutil.longs.Long2ObjectMap;
import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
import lombok.Getter;
import lombok.Setter;
-import org.geysermc.connect.GeyserConnect;
import org.geysermc.connect.MasterServer;
import org.geysermc.connect.proxy.GeyserProxySession;
import org.geysermc.connect.ui.FormID;
import org.geysermc.connect.ui.UIHandler;
-import org.geysermc.connector.GeyserConnector;
-import org.geysermc.connector.common.AuthType;
-import org.geysermc.connector.network.UpstreamPacketHandler;
-import org.geysermc.connector.network.session.auth.AuthData;
-import org.geysermc.connector.network.session.auth.BedrockClientData;
-import org.geysermc.connector.registry.BlockRegistries;
-import org.geysermc.connector.registry.Registries;
-import org.geysermc.connector.registry.type.ItemMappings;
-import org.geysermc.connector.utils.DimensionUtils;
import org.geysermc.cumulus.Form;
+import org.geysermc.geyser.GeyserImpl;
+import org.geysermc.geyser.network.UpstreamPacketHandler;
+import org.geysermc.geyser.registry.BlockRegistries;
+import org.geysermc.geyser.registry.Registries;
+import org.geysermc.geyser.registry.type.ItemMappings;
+import org.geysermc.geyser.session.auth.AuthData;
+import org.geysermc.geyser.session.auth.AuthType;
+import org.geysermc.geyser.session.auth.BedrockClientData;
+import org.geysermc.geyser.util.ChunkUtils;
+import org.geysermc.geyser.util.DimensionUtils;
import java.util.ArrayList;
import java.util.List;
@@ -146,7 +147,11 @@ public class Player {
settings.setRewindHistorySize(0);
settings.setServerAuthoritativeBlockBreaking(false);
startGamePacket.setPlayerMovementSettings(settings);
-
+
+ if (session.getPacketCodec().getProtocolVersion() <= Bedrock_v471.V471_CODEC.getProtocolVersion()) {
+ startGamePacket.getExperiments().add(new ExperimentData("caves_and_cliffs", true));
+ }
+
startGamePacket.setVanillaVersion("*");
session.sendPacket(startGamePacket);
@@ -161,7 +166,7 @@ public class Player {
data.setChunkX(0);
data.setChunkZ(0);
data.setSubChunksLength(0);
- data.setData(PaletteManger.EMPTY_LEVEL_CHUNK_DATA);
+ data.setData(ChunkUtils.EMPTY_CHUNK_DATA);
data.setCachingEnabled(false);
session.sendPacket(data);
@@ -171,7 +176,7 @@ public class Player {
session.sendPacket(biomeDefinitionListPacket);
AvailableEntityIdentifiersPacket entityPacket = new AvailableEntityIdentifiersPacket();
- entityPacket.setIdentifiers(Registries.ENTITY_IDENTIFIERS.get());
+ entityPacket.setIdentifiers(Registries.BEDROCK_ENTITY_IDENTIFIERS.get());
session.sendPacket(entityPacket);
// Send a CreativeContentPacket - required for 1.16.100
@@ -228,11 +233,11 @@ public class Player {
transferPacket.setPort(currentServer.getPort());
session.sendPacket(transferPacket);
} else {
- GeyserProxySession geyserSession = new GeyserProxySession(GeyserConnector.getInstance(), session, MasterServer.getInstance().getEventLoopGroup().next());
- session.setPacketHandler(new UpstreamPacketHandler(GeyserConnector.getInstance(), geyserSession));
+ GeyserProxySession geyserSession = new GeyserProxySession(GeyserImpl.getInstance(), session, MasterServer.getInstance().getEventLoopGroup().next());
+ session.setPacketHandler(new UpstreamPacketHandler(GeyserImpl.getInstance(), geyserSession));
// The player will be tracked from Geyser from here
MasterServer.getInstance().getPlayers().remove(this);
- GeyserConnector.getInstance().getSessionManager().addPendingSession(geyserSession);
+ GeyserImpl.getInstance().getSessionManager().addPendingSession(geyserSession);
geyserSession.getUpstream().getSession().setPacketCodec(session.getPacketCodec());
@@ -253,6 +258,10 @@ public class Player {
SetLocalPlayerAsInitializedPacket initializedPacket = new SetLocalPlayerAsInitializedPacket();
initializedPacket.setRuntimeEntityId(geyserSession.getPlayerEntity().getGeyserId());
session.getPacketHandler().handle(initializedPacket);
+
+ if (geyserSession.getRemoteAuthType() != AuthType.ONLINE) {
+ geyserSession.authenticate(geyserSession.getAuthData().name());
+ }
}
}
diff --git a/src/main/java/org/geysermc/connect/utils/WebUtils.java b/src/main/java/org/geysermc/connect/utils/WebUtils.java
index 98e4616..be7344e 100644
--- a/src/main/java/org/geysermc/connect/utils/WebUtils.java
+++ b/src/main/java/org/geysermc/connect/utils/WebUtils.java
@@ -34,7 +34,7 @@ import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
-public class WebUtils extends org.geysermc.connector.utils.WebUtils {
+public class WebUtils {
/**
* Makes a web request to the given URL and returns the body as a string
*