diff --git a/README.md b/README.md
index 5700494..c82f201 100644
--- a/README.md
+++ b/README.md
@@ -36,6 +36,7 @@ allow any supported version to connect to any supported Geyser.
* Minecraft Bedrock v1.16.2
* Minecraft Bedrock v1.16.100.50 (beta)
* Minecraft Bedrock v1.16.100.52 (beta)
+* Minecraft Bedrock v1.16.100.53 (beta)
### Minecraft Education
* Minecraft Education v1.14.31
diff --git a/docs/index.md b/docs/index.md
index d723ecc..bbf58ae 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -14,6 +14,7 @@ allow any supported version to connect to any supported Geyser.
* Minecraft Bedrock v1.16.2
* Minecraft Bedrock v1.16.100.50 (beta)
* Minecraft Bedrock v1.16.100.52 (beta)
+* Minecraft Bedrock v1.16.100.53 (beta)
### Minecraft Education
* Minecraft Education v1.14.31
diff --git a/geyser-reversion/pom.xml b/geyser-reversion/pom.xml
index bb89ed7..4455d23 100644
--- a/geyser-reversion/pom.xml
+++ b/geyser-reversion/pom.xml
@@ -56,6 +56,12 @@
${reversion.version}
compile
+
+ au.com.grieve.reversion
+ translator-v412be_to_v411be
+ ${reversion.version}
+ compile
+
au.com.grieve.reversion
common
@@ -74,6 +80,32 @@
${reversion.version}
compile
+
+
+
+ com.nukkitx.protocol
+ education-v390
+ 3.0.0-SNAPSHOT
+ compile
+
+
+ com.nukkitx.protocol
+ bedrock-v409
+ 3.0.0-SNAPSHOT
+ compile
+
+
+ com.nukkitx.protocol
+ bedrock-v411
+ 3.0.0-SNAPSHOT
+ compile
+
+
+ com.nukkitx.protocol
+ bedrock-v412
+ 3.0.0-SNAPSHOT
+ compile
+
@@ -90,20 +122,42 @@
shade
+
+
+
+ au.com.grieve.reversion:*
+ com.nukkitx.protocol:education-v390
+ com.nukkitx.protocol:bedrock-v409
+ com.nukkitx.protocol:bedrock-v411
+ com.nukkitx.protocol:bedrock-v412
+
+
+
-
-
-
-
-
-
-
-
- it.unimi.dsi.fastutil:*
-
-
+
+
+ com.nukkitx.protocol.education.v390
+ ${project.groupId}.${project.artifactId}.nukkitx.protocol.education.v390
+
+
+
+ com.nukkitx.protocol.bedrock.v409
+ ${project.groupId}.${project.artifactId}.nukkitx.protocol.bedrock.v409
+
+
+
+ com.nukkitx.protocol.bedrock.v411
+ ${project.groupId}.${project.artifactId}.nukkitx.protocol.bedrock.v411
+
+
+
+ com.nukkitx.protocol.bedrock.v412
+ ${project.groupId}.${project.artifactId}.nukkitx.protocol.bedrock.v412
+
+
+
diff --git a/geyser-reversion/src/main/java/au/com/grieve/geyser/reversion/GeyserReversionPlugin.java b/geyser-reversion/src/main/java/au/com/grieve/geyser/reversion/GeyserReversionPlugin.java
index 59ee9c4..2cc72c7 100644
--- a/geyser-reversion/src/main/java/au/com/grieve/geyser/reversion/GeyserReversionPlugin.java
+++ b/geyser-reversion/src/main/java/au/com/grieve/geyser/reversion/GeyserReversionPlugin.java
@@ -22,12 +22,12 @@
import au.com.grieve.geyser.reversion.config.Configuration;
import au.com.grieve.geyser.reversion.editions.bedrock.BedrockEdition;
import au.com.grieve.geyser.reversion.editions.education.EducationEdition;
-import au.com.grieve.reversion.ReversionServer;
-import au.com.grieve.reversion.api.BaseTranslator;
-import au.com.grieve.reversion.api.TranslatorException;
-import au.com.grieve.reversion.translators.v390ee_to_v408be.Translator_v390ee_to_v408be;
-import au.com.grieve.reversion.translators.v409be_to_v408be.Translator_v409be_to_v408be;
-import au.com.grieve.reversion.translators.v411be_to_v409be.Translator_v411be_to_v409be;
+import au.com.grieve.reversion.api.RegisteredTranslator;
+import au.com.grieve.reversion.api.ReversionServer;
+import au.com.grieve.reversion.translators.v390ee_to_v408be.Register_v390ee_to_v408be;
+import au.com.grieve.reversion.translators.v409be_to_v408be.Register_v409be_to_v408be;
+import au.com.grieve.reversion.translators.v411be_to_v409be.Register_v411be_to_v409be;
+import au.com.grieve.reversion.translators.v412be_to_v411be.Register_v412be_to_v411be;
import lombok.Getter;
import org.geysermc.connector.GeyserConnector;
import org.geysermc.connector.event.annotations.GeyserEventHandler;
@@ -50,6 +50,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.TimeUnit;
@Plugin(
name = "GeyserReversion",
@@ -63,7 +64,7 @@ public class GeyserReversionPlugin extends GeyserPlugin {
private static GeyserReversionPlugin instance;
private final Map registeredEditions = new HashMap<>();
- private final List> registeredTranslators = new ArrayList<>();
+ private final List registeredTranslators = new ArrayList<>();
private Configuration config;
@@ -88,9 +89,10 @@ private void registerEditions() {
* Register built-in translators
*/
private void registerTranslators() {
- registerTranslator(Translator_v390ee_to_v408be.class);
- registerTranslator(Translator_v409be_to_v408be.class);
- registerTranslator(Translator_v411be_to_v409be.class);
+ registerTranslator(Register_v409be_to_v408be.TRANSLATOR);
+ registerTranslator(Register_v411be_to_v409be.TRANSLATOR);
+ registerTranslator(Register_v390ee_to_v408be.TRANSLATOR);
+ registerTranslator(Register_v412be_to_v411be.TRANSLATOR);
}
@@ -99,15 +101,13 @@ private void registerTranslators() {
*/
public void registerEdition(String name, Edition edition) {
registeredEditions.put(name, edition);
- getLogger().debug("Registered Edition: " + name);
}
/**
* Register a Translator
*/
- public void registerTranslator(Class extends BaseTranslator> translatorClass) {
- registeredTranslators.add(translatorClass);
- getLogger().debug("Registered Translator: " + translatorClass.getSimpleName());
+ public void registerTranslator(RegisteredTranslator translator) {
+ registeredTranslators.add(translator);
}
/**
@@ -151,13 +151,9 @@ public void onGeyserStart(GeyserStartEvent event) {
bedrockServer.setAccessible(true);
ReversionServer server = edition.createReversionServer(GeyserConnector.getInstance().getBedrockServer().getBindAddress());
- for (Class extends BaseTranslator> translatorClass : getRegisteredTranslators()) {
- try {
- server.registerTranslator(translatorClass);
- getLogger().debug("Registered Translator: " + translatorClass.getSimpleName());
- } catch (TranslatorException e) {
- getLogger().error(String.format("Unable to register Translator: %s", translatorClass.getName()), e);
- }
+ for (RegisteredTranslator translator : getRegisteredTranslators()) {
+ server.registerTranslator(translator);
+ getLogger().debug("Registered Translator: " + translator.getName());
}
GeyserConnector.getInstance().getBedrockServer().close();
@@ -167,11 +163,14 @@ public void onGeyserStart(GeyserStartEvent event) {
getLogger().error(String.format("Unable to set Edition '%s'. Plugin disabled.", config.getEdition()), e);
}
- GeyserConnector.getInstance().getBedrockServer().bind().whenComplete((avoid, throwable) -> {
- if (throwable != null) {
- getLogger().severe(LanguageUtils.getLocaleStringLog("geyser.core.fail", address.getAddress().toString(), address.getPort()));
- throwable.printStackTrace();
- }
- }).join();
+ // Give the old BedrockServer time to close down
+ GeyserConnector.getInstance().getGeneralThreadPool().schedule(() -> {
+ GeyserConnector.getInstance().getBedrockServer().bind().whenComplete((avoid, throwable) -> {
+ if (throwable != null) {
+ getLogger().severe(LanguageUtils.getLocaleStringLog("geyser.core.fail", address.getAddress().toString(), address.getPort()));
+ throwable.printStackTrace();
+ }
+ }).join();
+ }, 1, TimeUnit.SECONDS);
}
}
diff --git a/geyser-reversion/src/main/java/au/com/grieve/geyser/reversion/api/Edition.java b/geyser-reversion/src/main/java/au/com/grieve/geyser/reversion/api/Edition.java
index fad2546..f2a4777 100644
--- a/geyser-reversion/src/main/java/au/com/grieve/geyser/reversion/api/Edition.java
+++ b/geyser-reversion/src/main/java/au/com/grieve/geyser/reversion/api/Edition.java
@@ -18,7 +18,8 @@
package au.com.grieve.geyser.reversion.api;
-import au.com.grieve.reversion.ReversionServer;
+
+import au.com.grieve.reversion.api.ReversionServer;
import java.net.InetSocketAddress;
diff --git a/geyser-reversion/src/main/java/au/com/grieve/geyser/reversion/editions/bedrock/BedrockEdition.java b/geyser-reversion/src/main/java/au/com/grieve/geyser/reversion/editions/bedrock/BedrockEdition.java
index fe13f18..495314d 100644
--- a/geyser-reversion/src/main/java/au/com/grieve/geyser/reversion/editions/bedrock/BedrockEdition.java
+++ b/geyser-reversion/src/main/java/au/com/grieve/geyser/reversion/editions/bedrock/BedrockEdition.java
@@ -20,7 +20,7 @@
import au.com.grieve.geyser.reversion.api.Edition;
import au.com.grieve.geyser.reversion.editions.bedrock.handlers.BedrockServerEventHandler;
-import au.com.grieve.reversion.ReversionServer;
+import au.com.grieve.reversion.api.ReversionServer;
import au.com.grieve.reversion.editions.bedrock.BedrockReversionServer;
import lombok.RequiredArgsConstructor;
import org.geysermc.connector.GeyserConnector;
diff --git a/geyser-reversion/src/main/java/au/com/grieve/geyser/reversion/editions/bedrock/handlers/BedrockServerEventHandler.java b/geyser-reversion/src/main/java/au/com/grieve/geyser/reversion/editions/bedrock/handlers/BedrockServerEventHandler.java
index 77ec2eb..3bb938c 100644
--- a/geyser-reversion/src/main/java/au/com/grieve/geyser/reversion/editions/bedrock/handlers/BedrockServerEventHandler.java
+++ b/geyser-reversion/src/main/java/au/com/grieve/geyser/reversion/editions/bedrock/handlers/BedrockServerEventHandler.java
@@ -18,7 +18,7 @@
package au.com.grieve.geyser.reversion.editions.bedrock.handlers;
-import au.com.grieve.reversion.ReversionServerSession;
+import au.com.grieve.reversion.api.ReversionSession;
import com.nukkitx.protocol.bedrock.BedrockServerSession;
import lombok.Getter;
import org.geysermc.connector.GeyserConnector;
@@ -37,6 +37,6 @@ public BedrockServerEventHandler(GeyserConnector connector) {
@Override
public void onSessionCreation(BedrockServerSession bedrockServerSession) {
bedrockServerSession.setLogging(true);
- bedrockServerSession.setPacketHandler(new BedrockUpstreamPacketHandler((ReversionServerSession) bedrockServerSession, this.connector, new GeyserSession(this.connector, bedrockServerSession)));
+ bedrockServerSession.setPacketHandler(new BedrockUpstreamPacketHandler((ReversionSession) bedrockServerSession, this.connector, new GeyserSession(this.connector, bedrockServerSession)));
}
}
diff --git a/geyser-reversion/src/main/java/au/com/grieve/geyser/reversion/editions/bedrock/handlers/BedrockUpstreamPacketHandler.java b/geyser-reversion/src/main/java/au/com/grieve/geyser/reversion/editions/bedrock/handlers/BedrockUpstreamPacketHandler.java
index 18cd272..bd9b25f 100644
--- a/geyser-reversion/src/main/java/au/com/grieve/geyser/reversion/editions/bedrock/handlers/BedrockUpstreamPacketHandler.java
+++ b/geyser-reversion/src/main/java/au/com/grieve/geyser/reversion/editions/bedrock/handlers/BedrockUpstreamPacketHandler.java
@@ -18,8 +18,9 @@
package au.com.grieve.geyser.reversion.editions.bedrock.handlers;
-import au.com.grieve.reversion.LoginData;
-import au.com.grieve.reversion.ReversionServerSession;
+import au.com.grieve.reversion.api.LoginData;
+import au.com.grieve.reversion.api.ReversionSession;
+import au.com.grieve.reversion.exceptions.LoginException;
import com.fasterxml.jackson.databind.JsonNode;
import com.nukkitx.protocol.bedrock.BedrockPacketCodec;
import com.nukkitx.protocol.bedrock.packet.LoginPacket;
@@ -40,10 +41,10 @@
@Getter
public class BedrockUpstreamPacketHandler extends UpstreamPacketHandler {
- private final ReversionServerSession serverSession;
+ private final ReversionSession serverSession;
private final GeyserSession geyserSession;
- public BedrockUpstreamPacketHandler(ReversionServerSession serverSession, GeyserConnector connector, GeyserSession session) {
+ public BedrockUpstreamPacketHandler(ReversionSession serverSession, GeyserConnector connector, GeyserSession session) {
super(connector, session);
this.serverSession = serverSession;
this.geyserSession = session;
@@ -72,7 +73,7 @@ public boolean handle(LoginPacket loginPacket) {
ServerToClientHandshakePacket packet = new ServerToClientHandshakePacket();
packet.setJwt(serverSession.getLoginData().getHandshakeJwt().serialize());
session.sendUpstreamPacketImmediately(packet);
- } catch (LoginData.LoginException e) {
+ } catch (LoginException e) {
session.disconnect("disconnectionScreen.internalError.cantConnect");
session.getConnector().getLogger().error("Failed to encrypt connection", e);
}
diff --git a/geyser-reversion/src/main/java/au/com/grieve/geyser/reversion/editions/education/EducationEdition.java b/geyser-reversion/src/main/java/au/com/grieve/geyser/reversion/editions/education/EducationEdition.java
index 23b60c7..23e1971 100644
--- a/geyser-reversion/src/main/java/au/com/grieve/geyser/reversion/editions/education/EducationEdition.java
+++ b/geyser-reversion/src/main/java/au/com/grieve/geyser/reversion/editions/education/EducationEdition.java
@@ -21,7 +21,7 @@
import au.com.grieve.geyser.reversion.api.Edition;
import au.com.grieve.geyser.reversion.editions.bedrock.handlers.BedrockServerEventHandler;
import au.com.grieve.geyser.reversion.editions.education.commands.EducationCommand;
-import au.com.grieve.reversion.ReversionServer;
+import au.com.grieve.reversion.api.ReversionServer;
import au.com.grieve.reversion.editions.education.EducationReversionServer;
import au.com.grieve.reversion.editions.education.utils.TokenManager;
import lombok.Getter;
diff --git a/pom.xml b/pom.xml
index abbca06..7d05874 100644
--- a/pom.xml
+++ b/pom.xml
@@ -38,7 +38,7 @@
1.8
1.8
UTF-8
- 1.0.4
+ 1.0.6
@@ -50,7 +50,7 @@
3.7.0
-
+
1.8
1.8