From 21f596b52e91b6d17dc6bd54bce0353ba599cd6a Mon Sep 17 00:00:00 2001 From: onebeastchris Date: Sun, 1 Oct 2023 16:29:45 +0200 Subject: [PATCH] Add ping() method to GeyserConnection in api --- .../geysermc/geyser/api/connection/GeyserConnection.java | 5 +++++ .../org/geysermc/geyser/command/defaults/PingCommand.java | 5 +---- .../java/org/geysermc/geyser/session/GeyserSession.java | 8 ++++++++ 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/api/src/main/java/org/geysermc/geyser/api/connection/GeyserConnection.java b/api/src/main/java/org/geysermc/geyser/api/connection/GeyserConnection.java index 7094812a0..e75e7dcab 100644 --- a/api/src/main/java/org/geysermc/geyser/api/connection/GeyserConnection.java +++ b/api/src/main/java/org/geysermc/geyser/api/connection/GeyserConnection.java @@ -95,4 +95,9 @@ public interface GeyserConnection extends Connection, CommandSource { */ @NonNull Set fogEffects(); + + /** + * Returns the current ping of the connection. + */ + int ping(); } diff --git a/core/src/main/java/org/geysermc/geyser/command/defaults/PingCommand.java b/core/src/main/java/org/geysermc/geyser/command/defaults/PingCommand.java index 11169fdf9..6cb6375ca 100644 --- a/core/src/main/java/org/geysermc/geyser/command/defaults/PingCommand.java +++ b/core/src/main/java/org/geysermc/geyser/command/defaults/PingCommand.java @@ -25,8 +25,6 @@ package org.geysermc.geyser.command.defaults; -import org.cloudburstmc.netty.channel.raknet.RakChildChannel; -import org.cloudburstmc.netty.handler.codec.raknet.common.RakSessionCodec; import org.geysermc.geyser.command.GeyserCommand; import org.geysermc.geyser.command.GeyserCommandSource; import org.geysermc.geyser.session.GeyserSession; @@ -40,8 +38,7 @@ public class PingCommand extends GeyserCommand { @Override public void execute(GeyserSession session, GeyserCommandSource sender, String[] args) { if (session == null) return; - RakSessionCodec rakSessionCodec = ((RakChildChannel) session.getUpstream().getSession().getPeer().getChannel()).rakPipeline().get(RakSessionCodec.class); - sender.sendMessage(GeyserLocale.getPlayerLocaleString("geyser.commands.ping.message", sender.locale(), (int) Math.floor(rakSessionCodec.getPing()))); + sender.sendMessage(GeyserLocale.getPlayerLocaleString("geyser.commands.ping.message", sender.locale(), session.ping())); } @Override diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java index f7d362e0d..6ba6b7c44 100644 --- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java +++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java @@ -85,6 +85,8 @@ import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.common.value.qual.IntRange; import org.cloudburstmc.math.vector.*; import org.cloudburstmc.nbt.NbtMap; +import org.cloudburstmc.netty.channel.raknet.RakChildChannel; +import org.cloudburstmc.netty.handler.codec.raknet.common.RakSessionCodec; import org.cloudburstmc.protocol.bedrock.BedrockDisconnectReasons; import org.cloudburstmc.protocol.bedrock.BedrockServerSession; import org.cloudburstmc.protocol.bedrock.data.*; @@ -2032,6 +2034,12 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource { return Set.copyOf(this.appliedFog); } + @Override + public int ping() { + RakSessionCodec rakSessionCodec = ((RakChildChannel) getUpstream().getSession().getPeer().getChannel()).rakPipeline().get(RakSessionCodec.class); + return (int) Math.floor(rakSessionCodec.getPing()); + } + public void addCommandEnum(String name, String enums) { softEnumPacket(name, SoftEnumUpdateType.ADD, enums); }