mirror of
https://github.com/GeyserMC/Geyser.git
synced 2024-08-14 23:57:35 +00:00
Feat: Make connection data exposed in api less prone to throw errors
This commit is contained in:
parent
2471de100b
commit
f16084fc2e
4 changed files with 35 additions and 14 deletions
|
@ -46,13 +46,35 @@ public final class ConnectionRequestEvent implements Event, Cancellable {
|
|||
this.proxyIp = proxyIp;
|
||||
}
|
||||
|
||||
/**
|
||||
* The IP address of the client attempting to connect
|
||||
*
|
||||
* @return the IP address of the client attempting to connect
|
||||
* @deprecated Use {@link #inetSocketAddress()} instead
|
||||
*/
|
||||
@NonNull @Deprecated
|
||||
public InetSocketAddress getInetSocketAddress() {
|
||||
return ip;
|
||||
}
|
||||
|
||||
/**
|
||||
* The IP address of the proxy handling the connection. It will return null if there is no proxy.
|
||||
*
|
||||
* @return the IP address of the proxy handling the connection
|
||||
* @deprecated Use {@link #proxyIp()} instead
|
||||
*/
|
||||
@Nullable @Deprecated
|
||||
public InetSocketAddress getProxyIp() {
|
||||
return proxyIp;
|
||||
}
|
||||
|
||||
/**
|
||||
* The IP address of the client attempting to connect
|
||||
*
|
||||
* @return the IP address of the client attempting to connect
|
||||
*/
|
||||
@NonNull
|
||||
public InetSocketAddress getInetSocketAddress() {
|
||||
public InetSocketAddress inetSocketAddress() {
|
||||
return ip;
|
||||
}
|
||||
|
||||
|
@ -62,7 +84,7 @@ public final class ConnectionRequestEvent implements Event, Cancellable {
|
|||
* @return the IP address of the proxy handling the connection
|
||||
*/
|
||||
@Nullable
|
||||
public InetSocketAddress getProxyIp() {
|
||||
public InetSocketAddress proxyIp() {
|
||||
return proxyIp;
|
||||
}
|
||||
|
||||
|
|
|
@ -25,11 +25,8 @@
|
|||
|
||||
package org.geysermc.geyser.network;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.channel.Channel;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import io.netty.channel.DefaultEventLoopGroup;
|
||||
import io.netty.channel.SimpleChannelInboundHandler;
|
||||
import io.netty.util.concurrent.DefaultThreadFactory;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
import org.cloudburstmc.protocol.bedrock.BedrockPeer;
|
||||
|
@ -37,7 +34,6 @@ import org.cloudburstmc.protocol.bedrock.BedrockServerSession;
|
|||
import org.cloudburstmc.protocol.bedrock.netty.codec.packet.BedrockPacketCodec;
|
||||
import org.cloudburstmc.protocol.bedrock.netty.initializer.BedrockServerInitializer;
|
||||
import org.geysermc.geyser.GeyserImpl;
|
||||
import org.geysermc.geyser.api.event.bedrock.SessionInitializeEvent;
|
||||
import org.geysermc.geyser.session.GeyserSession;
|
||||
|
||||
import java.net.InetSocketAddress;
|
||||
|
@ -72,7 +68,6 @@ public class GeyserServerInitializer extends BedrockServerInitializer {
|
|||
channel.pipeline().addAfter(BedrockPacketCodec.NAME, InvalidPacketHandler.NAME, new InvalidPacketHandler(session));
|
||||
|
||||
bedrockServerSession.setPacketHandler(new UpstreamPacketHandler(this.geyser, session));
|
||||
this.geyser.eventBus().fire(new SessionInitializeEvent(session));
|
||||
} catch (Throwable e) {
|
||||
// Error must be caught or it will be swallowed
|
||||
this.geyser.getLogger().error("Error occurred while initializing player!", e);
|
||||
|
|
|
@ -65,8 +65,6 @@ import io.netty.channel.Channel;
|
|||
import io.netty.channel.EventLoop;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
||||
import it.unimi.dsi.fastutil.longs.Long2ObjectMap;
|
||||
import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
|
||||
import it.unimi.dsi.fastutil.objects.Object2IntMap;
|
||||
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
|
||||
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
|
||||
|
@ -1100,9 +1098,11 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
|
|||
if (!closed) {
|
||||
loggedIn = false;
|
||||
|
||||
// Fire SessionDisconnectEvent
|
||||
SessionDisconnectEvent disconnectEvent = new SessionDisconnectEvent(this, reason);
|
||||
geyser.getEventBus().fire(disconnectEvent);
|
||||
if (authData != null && clientData != null) {
|
||||
// Fire SessionDisconnectEvent
|
||||
geyser.getEventBus().fire(disconnectEvent);
|
||||
}
|
||||
|
||||
// Disconnect downstream if necessary
|
||||
if (downstream != null) {
|
||||
|
@ -1427,7 +1427,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
|
|||
|
||||
@Override
|
||||
public String name() {
|
||||
return null;
|
||||
return this.isLoggedIn() ? this.javaUsername() : this.bedrockUsername();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1953,12 +1953,12 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
|
|||
|
||||
@Override
|
||||
public @MonotonicNonNull String javaUsername() {
|
||||
return playerEntity.getUsername();
|
||||
return playerEntity != null ? playerEntity.getUsername() : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public UUID javaUuid() {
|
||||
return playerEntity.getUuid();
|
||||
return playerEntity != null ? playerEntity.getUuid() : null ;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -40,6 +40,7 @@ import org.geysermc.cumulus.response.SimpleFormResponse;
|
|||
import org.geysermc.cumulus.response.result.FormResponseResult;
|
||||
import org.geysermc.cumulus.response.result.ValidFormResponseResult;
|
||||
import org.geysermc.geyser.GeyserImpl;
|
||||
import org.geysermc.geyser.api.event.bedrock.SessionInitializeEvent;
|
||||
import org.geysermc.geyser.session.GeyserSession;
|
||||
import org.geysermc.geyser.session.auth.AuthData;
|
||||
import org.geysermc.geyser.session.auth.BedrockClientData;
|
||||
|
@ -100,6 +101,9 @@ public class LoginEncryptionUtils {
|
|||
|
||||
sendEncryptionFailedMessage(geyser);
|
||||
}
|
||||
|
||||
// Fire SessionInitializeEvent here as we now know the client data etc
|
||||
geyser.eventBus().fire(new SessionInitializeEvent(session));
|
||||
} catch (Exception ex) {
|
||||
session.disconnect("disconnectionScreen.internalError.cantConnect");
|
||||
throw new RuntimeException("Unable to complete login", ex);
|
||||
|
|
Loading…
Reference in a new issue