From c79979e3e383f611a5035c1a031be3b0be424ff8 Mon Sep 17 00:00:00 2001 From: Tim203 Date: Tue, 16 Feb 2021 18:54:04 +0100 Subject: [PATCH] Added timestamp to BedrockData --- .../org/geysermc/floodgate/util/BedrockData.java | 16 +++++++++------- .../org/geysermc/floodgate/util/InputMode.java | 2 +- .../connector/skin/FloodgateSkinUploader.java | 3 +-- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/common/src/main/java/org/geysermc/floodgate/util/BedrockData.java b/common/src/main/java/org/geysermc/floodgate/util/BedrockData.java index 4ea5ee78e..cbf49e126 100644 --- a/common/src/main/java/org/geysermc/floodgate/util/BedrockData.java +++ b/common/src/main/java/org/geysermc/floodgate/util/BedrockData.java @@ -26,8 +26,8 @@ package org.geysermc.floodgate.util; import lombok.AccessLevel; -import lombok.AllArgsConstructor; import lombok.Getter; +import lombok.RequiredArgsConstructor; /** * This class contains the raw data send by Geyser to Floodgate or from Floodgate to Floodgate. This @@ -35,9 +35,9 @@ import lombok.Getter; * present in the API module of the Floodgate repo) */ @Getter -@AllArgsConstructor(access = AccessLevel.PRIVATE) +@RequiredArgsConstructor(access = AccessLevel.PRIVATE) public final class BedrockData implements Cloneable { - public static final int EXPECTED_LENGTH = 12; + public static final int EXPECTED_LENGTH = 13; private final String version; private final String username; @@ -53,6 +53,7 @@ public final class BedrockData implements Cloneable { private final int subscribeId; private final String verifyCode; + private final long timestamp; private final int dataLength; public static BedrockData of(String version, String username, String xuid, int deviceOs, @@ -60,7 +61,8 @@ public final class BedrockData implements Cloneable { LinkedPlayer linkedPlayer, boolean fromProxy, int subscribeId, String verifyCode) { return new BedrockData(version, username, xuid, deviceOs, languageCode, inputMode, - uiProfile, ip, linkedPlayer, fromProxy, subscribeId, verifyCode, EXPECTED_LENGTH); + uiProfile, ip, linkedPlayer, fromProxy, subscribeId, verifyCode, + System.currentTimeMillis(), EXPECTED_LENGTH); } public static BedrockData of(String version, String username, String xuid, int deviceOs, @@ -81,12 +83,12 @@ public final class BedrockData implements Cloneable { return new BedrockData( split[0], split[1], split[2], Integer.parseInt(split[3]), split[4], Integer.parseInt(split[5]), Integer.parseInt(split[6]), split[7], linkedPlayer, - "1".equals(split[9]), Integer.parseInt(split[10]), split[11], split.length + "1".equals(split[9]), Integer.parseInt(split[10]), split[11], Long.parseLong(split[12]), split.length ); } private static BedrockData emptyData(int dataLength) { - return new BedrockData(null, null, null, -1, null, -1, -1, null, null, false, -1, null, + return new BedrockData(null, null, null, -1, null, -1, -1, null, null, false, -1, null, -1, dataLength); } @@ -101,7 +103,7 @@ public final class BedrockData implements Cloneable { languageCode + '\0' + uiProfile + '\0' + inputMode + '\0' + ip + '\0' + (fromProxy ? 1 : 0) + '\0' + (linkedPlayer != null ? linkedPlayer.toString() : "null") + '\0' + - subscribeId + '\0' + verifyCode; + subscribeId + '\0' + verifyCode + '\0' + timestamp; } @Override diff --git a/common/src/main/java/org/geysermc/floodgate/util/InputMode.java b/common/src/main/java/org/geysermc/floodgate/util/InputMode.java index 9664e18ae..d49d2ea84 100644 --- a/common/src/main/java/org/geysermc/floodgate/util/InputMode.java +++ b/common/src/main/java/org/geysermc/floodgate/util/InputMode.java @@ -29,7 +29,7 @@ package org.geysermc.floodgate.util; public enum InputMode { UNKNOWN, KEYBOARD_MOUSE, - TOUCH, // I guess Touch? + TOUCH, CONTROLLER, VR; diff --git a/connector/src/main/java/org/geysermc/connector/skin/FloodgateSkinUploader.java b/connector/src/main/java/org/geysermc/connector/skin/FloodgateSkinUploader.java index e710a3591..991db08bc 100644 --- a/connector/src/main/java/org/geysermc/connector/skin/FloodgateSkinUploader.java +++ b/connector/src/main/java/org/geysermc/connector/skin/FloodgateSkinUploader.java @@ -74,7 +74,6 @@ public final class FloodgateSkinUploader { @Override public void onMessage(String message) { - System.out.println(message); // The reason why I don't like Jackson try { JsonNode node = JACKSON.readTree(message); @@ -109,7 +108,6 @@ public final class FloodgateSkinUploader { String xuid = node.get("xuid").asText(); String value = node.get("value").asText(); String signature = node.get("signature").asText(); - ; GeyserSession session = connector.getPlayerByXuid(xuid); if (session != null) { @@ -182,6 +180,7 @@ public final class FloodgateSkinUploader { } private void reconnectLater(GeyserConnector connector) { + //todo doesn't work long additionalTime = ThreadLocalRandom.current().nextInt(7); connector.getGeneralThreadPool().schedule(() -> { try {