mirror of https://github.com/GeyserMC/Geyser.git
Compare commits
3 Commits
3e20cd8e73
...
05e668894d
Author | SHA1 | Date |
---|---|---|
chris | 05e668894d | |
RK_01 | 42a9ba617b | |
onebeastchris | f16084fc2e |
|
@ -46,13 +46,35 @@ public final class ConnectionRequestEvent implements Event, Cancellable {
|
||||||
this.proxyIp = proxyIp;
|
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
|
* The IP address of the client attempting to connect
|
||||||
*
|
*
|
||||||
* @return the IP address of the client attempting to connect
|
* @return the IP address of the client attempting to connect
|
||||||
*/
|
*/
|
||||||
@NonNull
|
@NonNull
|
||||||
public InetSocketAddress getInetSocketAddress() {
|
public InetSocketAddress inetSocketAddress() {
|
||||||
return ip;
|
return ip;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,7 +84,7 @@ public final class ConnectionRequestEvent implements Event, Cancellable {
|
||||||
* @return the IP address of the proxy handling the connection
|
* @return the IP address of the proxy handling the connection
|
||||||
*/
|
*/
|
||||||
@Nullable
|
@Nullable
|
||||||
public InetSocketAddress getProxyIp() {
|
public InetSocketAddress proxyIp() {
|
||||||
return proxyIp;
|
return proxyIp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ package org.geysermc.geyser.platform.viaproxy;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
import net.raphimc.vialegacy.api.LegacyProtocolVersion;
|
import net.raphimc.vialegacy.api.LegacyProtocolVersion;
|
||||||
import net.raphimc.viaproxy.cli.options.Options;
|
import net.raphimc.viaproxy.ViaProxy;
|
||||||
import org.geysermc.geyser.configuration.GeyserJacksonConfiguration;
|
import org.geysermc.geyser.configuration.GeyserJacksonConfiguration;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
@ -43,7 +43,7 @@ public class GeyserViaProxyConfiguration extends GeyserJacksonConfiguration {
|
||||||
@Override
|
@Override
|
||||||
public int getPingPassthroughInterval() {
|
public int getPingPassthroughInterval() {
|
||||||
int interval = super.getPingPassthroughInterval();
|
int interval = super.getPingPassthroughInterval();
|
||||||
if (interval < 15 && Options.PROTOCOL_VERSION != null && Options.PROTOCOL_VERSION.olderThanOrEqualTo(LegacyProtocolVersion.r1_6_4)) {
|
if (interval < 15 && ViaProxy.getConfig().getTargetVersion() != null && ViaProxy.getConfig().getTargetVersion().olderThanOrEqualTo(LegacyProtocolVersion.r1_6_4)) {
|
||||||
// <= 1.6.4 servers sometimes block incoming connections from an IP address if too many connections are made
|
// <= 1.6.4 servers sometimes block incoming connections from an IP address if too many connections are made
|
||||||
interval = 15;
|
interval = 15;
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,6 @@ package org.geysermc.geyser.platform.viaproxy;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.raphimc.viaproxy.ViaProxy;
|
import net.raphimc.viaproxy.ViaProxy;
|
||||||
import net.raphimc.viaproxy.cli.options.Options;
|
|
||||||
import net.raphimc.viaproxy.plugins.ViaProxyPlugin;
|
import net.raphimc.viaproxy.plugins.ViaProxyPlugin;
|
||||||
import org.geysermc.geyser.dump.BootstrapDumpInfo;
|
import org.geysermc.geyser.dump.BootstrapDumpInfo;
|
||||||
import org.geysermc.geyser.text.AsteriskSerializer;
|
import org.geysermc.geyser.text.AsteriskSerializer;
|
||||||
|
@ -49,8 +48,8 @@ public class GeyserViaProxyDumpInfo extends BootstrapDumpInfo {
|
||||||
|
|
||||||
public GeyserViaProxyDumpInfo() {
|
public GeyserViaProxyDumpInfo() {
|
||||||
this.platformVersion = ViaProxy.VERSION;
|
this.platformVersion = ViaProxy.VERSION;
|
||||||
this.onlineMode = Options.ONLINE_MODE;
|
this.onlineMode = ViaProxy.getConfig().isProxyOnlineMode();
|
||||||
if (Options.BIND_ADDRESS instanceof InetSocketAddress inetSocketAddress) {
|
if (ViaProxy.getConfig().getBindAddress() instanceof InetSocketAddress inetSocketAddress) {
|
||||||
this.serverIP = inetSocketAddress.getHostString();
|
this.serverIP = inetSocketAddress.getHostString();
|
||||||
this.serverPort = inetSocketAddress.getPort();
|
this.serverPort = inetSocketAddress.getPort();
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -25,7 +25,6 @@
|
||||||
|
|
||||||
package org.geysermc.geyser.platform.viaproxy;
|
package org.geysermc.geyser.platform.viaproxy;
|
||||||
|
|
||||||
import net.raphimc.viaproxy.plugins.PluginManager;
|
|
||||||
import org.geysermc.geyser.GeyserMain;
|
import org.geysermc.geyser.GeyserMain;
|
||||||
|
|
||||||
public class GeyserViaProxyMain extends GeyserMain {
|
public class GeyserViaProxyMain extends GeyserMain {
|
||||||
|
@ -39,7 +38,7 @@ public class GeyserViaProxyMain extends GeyserMain {
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getPluginFolder() {
|
public String getPluginFolder() {
|
||||||
return PluginManager.PLUGINS_DIR.getName();
|
return "plugins";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,6 @@ package org.geysermc.geyser.platform.viaproxy;
|
||||||
import net.lenni0451.lambdaevents.EventHandler;
|
import net.lenni0451.lambdaevents.EventHandler;
|
||||||
import net.raphimc.vialegacy.api.LegacyProtocolVersion;
|
import net.raphimc.vialegacy.api.LegacyProtocolVersion;
|
||||||
import net.raphimc.viaproxy.ViaProxy;
|
import net.raphimc.viaproxy.ViaProxy;
|
||||||
import net.raphimc.viaproxy.cli.options.Options;
|
|
||||||
import net.raphimc.viaproxy.plugins.PluginManager;
|
import net.raphimc.viaproxy.plugins.PluginManager;
|
||||||
import net.raphimc.viaproxy.plugins.ViaProxyPlugin;
|
import net.raphimc.viaproxy.plugins.ViaProxyPlugin;
|
||||||
import net.raphimc.viaproxy.plugins.events.ConsoleCommandEvent;
|
import net.raphimc.viaproxy.plugins.events.ConsoleCommandEvent;
|
||||||
|
@ -137,7 +136,7 @@ public class GeyserViaProxyPlugin extends ViaProxyPlugin implements GeyserBootst
|
||||||
|
|
||||||
GeyserImpl.start();
|
GeyserImpl.start();
|
||||||
|
|
||||||
if (Options.PROTOCOL_VERSION != null && Options.PROTOCOL_VERSION.newerThanOrEqualTo(LegacyProtocolVersion.b1_8tob1_8_1)) {
|
if (ViaProxy.getConfig().getTargetVersion() != null && ViaProxy.getConfig().getTargetVersion().newerThanOrEqualTo(LegacyProtocolVersion.b1_8tob1_8_1)) {
|
||||||
// Only initialize the ping passthrough if the protocol version is above beta 1.7.3, as that's when the status protocol was added
|
// Only initialize the ping passthrough if the protocol version is above beta 1.7.3, as that's when the status protocol was added
|
||||||
this.pingPassthrough = GeyserLegacyPingPassthrough.init(this.geyser);
|
this.pingPassthrough = GeyserLegacyPingPassthrough.init(this.geyser);
|
||||||
}
|
}
|
||||||
|
@ -186,19 +185,19 @@ public class GeyserViaProxyPlugin extends ViaProxyPlugin implements GeyserBootst
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public String getServerBindAddress() {
|
public String getServerBindAddress() {
|
||||||
if (Options.BIND_ADDRESS instanceof InetSocketAddress socketAddress) {
|
if (ViaProxy.getConfig().getBindAddress() instanceof InetSocketAddress socketAddress) {
|
||||||
return socketAddress.getHostString();
|
return socketAddress.getHostString();
|
||||||
} else {
|
} else {
|
||||||
throw new IllegalStateException("Unsupported bind address type: " + Options.BIND_ADDRESS.getClass().getName());
|
throw new IllegalStateException("Unsupported bind address type: " + ViaProxy.getConfig().getBindAddress().getClass().getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getServerPort() {
|
public int getServerPort() {
|
||||||
if (Options.BIND_ADDRESS instanceof InetSocketAddress socketAddress) {
|
if (ViaProxy.getConfig().getBindAddress() instanceof InetSocketAddress socketAddress) {
|
||||||
return socketAddress.getPort();
|
return socketAddress.getPort();
|
||||||
} else {
|
} else {
|
||||||
throw new IllegalStateException("Unsupported bind address type: " + Options.BIND_ADDRESS.getClass().getName());
|
throw new IllegalStateException("Unsupported bind address type: " + ViaProxy.getConfig().getBindAddress().getClass().getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,4 +2,4 @@ name: "${name}-ViaProxy"
|
||||||
version: "${version}"
|
version: "${version}"
|
||||||
author: "${author}"
|
author: "${author}"
|
||||||
main: "org.geysermc.geyser.platform.viaproxy.GeyserViaProxyPlugin"
|
main: "org.geysermc.geyser.platform.viaproxy.GeyserViaProxyPlugin"
|
||||||
min-version: "3.2.0"
|
min-version: "3.2.1"
|
||||||
|
|
|
@ -25,11 +25,8 @@
|
||||||
|
|
||||||
package org.geysermc.geyser.network;
|
package org.geysermc.geyser.network;
|
||||||
|
|
||||||
import io.netty.buffer.ByteBuf;
|
|
||||||
import io.netty.channel.Channel;
|
import io.netty.channel.Channel;
|
||||||
import io.netty.channel.ChannelHandlerContext;
|
|
||||||
import io.netty.channel.DefaultEventLoopGroup;
|
import io.netty.channel.DefaultEventLoopGroup;
|
||||||
import io.netty.channel.SimpleChannelInboundHandler;
|
|
||||||
import io.netty.util.concurrent.DefaultThreadFactory;
|
import io.netty.util.concurrent.DefaultThreadFactory;
|
||||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||||
import org.cloudburstmc.protocol.bedrock.BedrockPeer;
|
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.codec.packet.BedrockPacketCodec;
|
||||||
import org.cloudburstmc.protocol.bedrock.netty.initializer.BedrockServerInitializer;
|
import org.cloudburstmc.protocol.bedrock.netty.initializer.BedrockServerInitializer;
|
||||||
import org.geysermc.geyser.GeyserImpl;
|
import org.geysermc.geyser.GeyserImpl;
|
||||||
import org.geysermc.geyser.api.event.bedrock.SessionInitializeEvent;
|
|
||||||
import org.geysermc.geyser.session.GeyserSession;
|
import org.geysermc.geyser.session.GeyserSession;
|
||||||
|
|
||||||
import java.net.InetSocketAddress;
|
import java.net.InetSocketAddress;
|
||||||
|
@ -72,7 +68,6 @@ public class GeyserServerInitializer extends BedrockServerInitializer {
|
||||||
channel.pipeline().addAfter(BedrockPacketCodec.NAME, InvalidPacketHandler.NAME, new InvalidPacketHandler(session));
|
channel.pipeline().addAfter(BedrockPacketCodec.NAME, InvalidPacketHandler.NAME, new InvalidPacketHandler(session));
|
||||||
|
|
||||||
bedrockServerSession.setPacketHandler(new UpstreamPacketHandler(this.geyser, session));
|
bedrockServerSession.setPacketHandler(new UpstreamPacketHandler(this.geyser, session));
|
||||||
this.geyser.eventBus().fire(new SessionInitializeEvent(session));
|
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
// Error must be caught or it will be swallowed
|
// Error must be caught or it will be swallowed
|
||||||
this.geyser.getLogger().error("Error occurred while initializing player!", e);
|
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 io.netty.channel.EventLoop;
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
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.Object2IntMap;
|
||||||
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
|
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
|
||||||
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
|
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
|
||||||
|
@ -1100,9 +1098,11 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
|
||||||
if (!closed) {
|
if (!closed) {
|
||||||
loggedIn = false;
|
loggedIn = false;
|
||||||
|
|
||||||
// Fire SessionDisconnectEvent
|
|
||||||
SessionDisconnectEvent disconnectEvent = new SessionDisconnectEvent(this, reason);
|
SessionDisconnectEvent disconnectEvent = new SessionDisconnectEvent(this, reason);
|
||||||
|
if (authData != null && clientData != null) {
|
||||||
|
// Fire SessionDisconnectEvent
|
||||||
geyser.getEventBus().fire(disconnectEvent);
|
geyser.getEventBus().fire(disconnectEvent);
|
||||||
|
}
|
||||||
|
|
||||||
// Disconnect downstream if necessary
|
// Disconnect downstream if necessary
|
||||||
if (downstream != null) {
|
if (downstream != null) {
|
||||||
|
@ -1427,7 +1427,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String name() {
|
public String name() {
|
||||||
return null;
|
return this.isLoggedIn() ? this.javaUsername() : this.bedrockUsername();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1953,12 +1953,12 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @MonotonicNonNull String javaUsername() {
|
public @MonotonicNonNull String javaUsername() {
|
||||||
return playerEntity.getUsername();
|
return playerEntity != null ? playerEntity.getUsername() : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UUID javaUuid() {
|
public UUID javaUuid() {
|
||||||
return playerEntity.getUuid();
|
return playerEntity != null ? playerEntity.getUuid() : null ;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -40,6 +40,7 @@ import org.geysermc.cumulus.response.SimpleFormResponse;
|
||||||
import org.geysermc.cumulus.response.result.FormResponseResult;
|
import org.geysermc.cumulus.response.result.FormResponseResult;
|
||||||
import org.geysermc.cumulus.response.result.ValidFormResponseResult;
|
import org.geysermc.cumulus.response.result.ValidFormResponseResult;
|
||||||
import org.geysermc.geyser.GeyserImpl;
|
import org.geysermc.geyser.GeyserImpl;
|
||||||
|
import org.geysermc.geyser.api.event.bedrock.SessionInitializeEvent;
|
||||||
import org.geysermc.geyser.session.GeyserSession;
|
import org.geysermc.geyser.session.GeyserSession;
|
||||||
import org.geysermc.geyser.session.auth.AuthData;
|
import org.geysermc.geyser.session.auth.AuthData;
|
||||||
import org.geysermc.geyser.session.auth.BedrockClientData;
|
import org.geysermc.geyser.session.auth.BedrockClientData;
|
||||||
|
@ -100,6 +101,9 @@ public class LoginEncryptionUtils {
|
||||||
|
|
||||||
sendEncryptionFailedMessage(geyser);
|
sendEncryptionFailedMessage(geyser);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Fire SessionInitializeEvent here as we now know the client data etc
|
||||||
|
geyser.eventBus().fire(new SessionInitializeEvent(session));
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
session.disconnect("disconnectionScreen.internalError.cantConnect");
|
session.disconnect("disconnectionScreen.internalError.cantConnect");
|
||||||
throw new RuntimeException("Unable to complete login", ex);
|
throw new RuntimeException("Unable to complete login", ex);
|
||||||
|
|
|
@ -29,7 +29,7 @@ adapters = "1.11-SNAPSHOT"
|
||||||
commodore = "2.2"
|
commodore = "2.2"
|
||||||
bungeecord = "a7c6ede"
|
bungeecord = "a7c6ede"
|
||||||
velocity = "3.1.1"
|
velocity = "3.1.1"
|
||||||
viaproxy = "3.2.0-SNAPSHOT"
|
viaproxy = "3.2.1"
|
||||||
fabric-minecraft = "1.20.4"
|
fabric-minecraft = "1.20.4"
|
||||||
fabric-loader = "0.15.2"
|
fabric-loader = "0.15.2"
|
||||||
fabric-api = "0.91.2+1.20.4"
|
fabric-api = "0.91.2+1.20.4"
|
||||||
|
|
Loading…
Reference in New Issue