Update Geyser and fix builds

This commit is contained in:
rtm516 2021-08-30 21:02:22 +01:00
parent ae078db451
commit 8c386a7200
No known key found for this signature in database
GPG key ID: 331715B8B007C67A
6 changed files with 27 additions and 7 deletions

View file

@ -68,7 +68,7 @@
<dependency> <dependency>
<groupId>org.geysermc</groupId> <groupId>org.geysermc</groupId>
<artifactId>connector</artifactId> <artifactId>connector</artifactId>
<version>1.4.1-SNAPSHOT</version> <version>1.4.2-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.nukkitx.network</groupId> <groupId>com.nukkitx.network</groupId>

View file

@ -25,11 +25,9 @@
package org.geysermc.connect; package org.geysermc.connect;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter; import lombok.Getter;
import org.geysermc.connect.utils.WebUtils;
import org.geysermc.connect.storage.AbstractStorageManager; import org.geysermc.connect.storage.AbstractStorageManager;
import org.geysermc.connect.utils.Server; import org.geysermc.connect.utils.Server;

View file

@ -28,6 +28,8 @@ package org.geysermc.connect;
import com.google.common.cache.Cache; import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheBuilder;
import com.nukkitx.protocol.bedrock.*; import com.nukkitx.protocol.bedrock.*;
import io.netty.channel.DefaultEventLoopGroup;
import io.netty.util.concurrent.DefaultThreadFactory;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import org.geysermc.connect.storage.DisabledStorageManager; import org.geysermc.connect.storage.DisabledStorageManager;
@ -90,6 +92,9 @@ public class MasterServer {
@Getter @Getter
private long lastDisconnectTime = 0L; private long lastDisconnectTime = 0L;
@Getter
private final DefaultEventLoopGroup eventLoopGroup = new DefaultEventLoopGroup(new DefaultThreadFactory("Geyser player thread"));
public MasterServer() { public MasterServer() {
instance = this; instance = this;

View file

@ -25,12 +25,15 @@
package org.geysermc.connect; package org.geysermc.connect;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectReader;
import com.fasterxml.jackson.databind.node.JsonNodeType; import com.fasterxml.jackson.databind.node.JsonNodeType;
import com.nimbusds.jose.JWSObject; import com.nimbusds.jose.JWSObject;
import com.nimbusds.jose.crypto.factories.DefaultJWSVerifierFactory; import com.nimbusds.jose.crypto.factories.DefaultJWSVerifierFactory;
import com.nimbusds.jose.shaded.json.JSONArray;
import com.nukkitx.network.util.DisconnectReason; import com.nukkitx.network.util.DisconnectReason;
import com.nukkitx.protocol.bedrock.BedrockPacketCodec; import com.nukkitx.protocol.bedrock.BedrockPacketCodec;
import com.nukkitx.protocol.bedrock.BedrockServerSession; import com.nukkitx.protocol.bedrock.BedrockServerSession;
@ -131,6 +134,18 @@ public class PacketHandler implements BedrockPacketHandler {
} }
try { try {
// Convert the chainData to a JSONArray
ObjectReader reader = OBJECT_MAPPER.readerFor(new TypeReference<List<String>>() { });
JSONArray array = new JSONArray();
array.addAll(reader.readValue(chainData));
// Verify the chain data
if (!EncryptionUtils.verifyChain(array)) {
// Disconnect the client
session.disconnect("disconnectionScreen.internalError.cantConnect");
throw new AssertionError("Failed to login, due to invalid chain data!");
}
// Parse the signed jws object // Parse the signed jws object
JWSObject jwsObject; JWSObject jwsObject;
jwsObject = JWSObject.parse(chainData.get(chainData.size() - 1).asText()); jwsObject = JWSObject.parse(chainData.get(chainData.size() - 1).asText());

View file

@ -26,12 +26,13 @@
package org.geysermc.connect.proxy; package org.geysermc.connect.proxy;
import com.nukkitx.protocol.bedrock.BedrockServerSession; import com.nukkitx.protocol.bedrock.BedrockServerSession;
import io.netty.channel.EventLoop;
import org.geysermc.connector.GeyserConnector; import org.geysermc.connector.GeyserConnector;
import org.geysermc.connector.network.session.GeyserSession; import org.geysermc.connector.network.session.GeyserSession;
public class GeyserProxySession extends GeyserSession { public class GeyserProxySession extends GeyserSession {
public GeyserProxySession(GeyserConnector connector, BedrockServerSession bedrockServerSession) { public GeyserProxySession(GeyserConnector connector, BedrockServerSession bedrockServerSession, EventLoop eventLoop) {
super(connector, bedrockServerSession); super(connector, bedrockServerSession, eventLoop);
} }
@Override @Override

View file

@ -35,6 +35,7 @@ import it.unimi.dsi.fastutil.longs.Long2ObjectMap;
import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import org.geysermc.connect.GeyserConnect;
import org.geysermc.connect.MasterServer; import org.geysermc.connect.MasterServer;
import org.geysermc.connect.proxy.GeyserProxySession; import org.geysermc.connect.proxy.GeyserProxySession;
import org.geysermc.connect.ui.FormID; import org.geysermc.connect.ui.FormID;
@ -166,7 +167,7 @@ public class Player {
// Send the biomes // Send the biomes
BiomeDefinitionListPacket biomeDefinitionListPacket = new BiomeDefinitionListPacket(); BiomeDefinitionListPacket biomeDefinitionListPacket = new BiomeDefinitionListPacket();
biomeDefinitionListPacket.setDefinitions(Registries.BIOMES.get()); biomeDefinitionListPacket.setDefinitions(Registries.BIOMES_NBT.get());
session.sendPacket(biomeDefinitionListPacket); session.sendPacket(biomeDefinitionListPacket);
AvailableEntityIdentifiersPacket entityPacket = new AvailableEntityIdentifiersPacket(); AvailableEntityIdentifiersPacket entityPacket = new AvailableEntityIdentifiersPacket();
@ -227,7 +228,7 @@ public class Player {
transferPacket.setPort(currentServer.getPort()); transferPacket.setPort(currentServer.getPort());
session.sendPacket(transferPacket); session.sendPacket(transferPacket);
} else { } else {
GeyserProxySession geyserSession = new GeyserProxySession(GeyserConnector.getInstance(), session); GeyserProxySession geyserSession = new GeyserProxySession(GeyserConnector.getInstance(), session, MasterServer.getInstance().getEventLoopGroup().next());
session.setPacketHandler(new UpstreamPacketHandler(GeyserConnector.getInstance(), geyserSession)); session.setPacketHandler(new UpstreamPacketHandler(GeyserConnector.getInstance(), geyserSession));
geyserSession.getUpstream().getSession().setPacketCodec(session.getPacketCodec()); geyserSession.getUpstream().getSession().setPacketCodec(session.getPacketCodec());