From f4907199b8c8230cae7ae69359d0151f9e355eff Mon Sep 17 00:00:00 2001 From: bundabrg Date: Fri, 28 Aug 2020 11:08:39 +0800 Subject: [PATCH] Make use of new Reversion Library Squashed commit of the following: commit fd8415198a1786ab7c8ed370c7295536ac30f2bb Author: bundabrg Date: Fri Aug 28 11:07:28 2020 +0800 Update Documents commit 24f6f33148182ba1db0fabfb02ce5289bee51f82 Author: bundabrg Date: Fri Aug 28 10:11:07 2020 +0800 Bump to 1.0.6 commit 37c657924b115e00c004741ea9dfbbca079e9dc4 Author: bundabrg Date: Thu Aug 27 18:39:04 2020 +0800 Bump to 1.0.5 commit f9597241578d1e3fd391b8364d40e6bdd6d42be5 Author: bundabrg Date: Thu Aug 27 17:41:25 2020 +0800 Initial v412 commit 05210fe8caa889b243235a2eb31e11c9c7ead71d Author: bundabrg Date: Thu Aug 27 10:38:09 2020 +0800 Add back education support commit 206016937cfc038e6c93baffcc2deebc811f7a4c Author: bundabrg Date: Wed Aug 26 19:29:03 2020 +0800 Use new Reversion --- README.md | 1 + docs/index.md | 1 + geyser-reversion/pom.xml | 76 ++++++++++++++++--- .../reversion/GeyserReversionPlugin.java | 53 +++++++------ .../grieve/geyser/reversion/api/Edition.java | 3 +- .../editions/bedrock/BedrockEdition.java | 2 +- .../handlers/BedrockServerEventHandler.java | 4 +- .../BedrockUpstreamPacketHandler.java | 11 +-- .../editions/education/EducationEdition.java | 2 +- pom.xml | 4 +- 10 files changed, 107 insertions(+), 50 deletions(-) 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 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 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