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>
<groupId>org.geysermc</groupId>
<artifactId>connector</artifactId>
<version>1.4.1-SNAPSHOT</version>
<version>1.4.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.nukkitx.network</groupId>

View file

@ -25,11 +25,9 @@
package org.geysermc.connect;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import org.geysermc.connect.utils.WebUtils;
import org.geysermc.connect.storage.AbstractStorageManager;
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.CacheBuilder;
import com.nukkitx.protocol.bedrock.*;
import io.netty.channel.DefaultEventLoopGroup;
import io.netty.util.concurrent.DefaultThreadFactory;
import lombok.Getter;
import lombok.Setter;
import org.geysermc.connect.storage.DisabledStorageManager;
@ -90,6 +92,9 @@ public class MasterServer {
@Getter
private long lastDisconnectTime = 0L;
@Getter
private final DefaultEventLoopGroup eventLoopGroup = new DefaultEventLoopGroup(new DefaultThreadFactory("Geyser player thread"));
public MasterServer() {
instance = this;

View file

@ -25,12 +25,15 @@
package org.geysermc.connect;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectReader;
import com.fasterxml.jackson.databind.node.JsonNodeType;
import com.nimbusds.jose.JWSObject;
import com.nimbusds.jose.crypto.factories.DefaultJWSVerifierFactory;
import com.nimbusds.jose.shaded.json.JSONArray;
import com.nukkitx.network.util.DisconnectReason;
import com.nukkitx.protocol.bedrock.BedrockPacketCodec;
import com.nukkitx.protocol.bedrock.BedrockServerSession;
@ -131,6 +134,18 @@ public class PacketHandler implements BedrockPacketHandler {
}
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
JWSObject jwsObject;
jwsObject = JWSObject.parse(chainData.get(chainData.size() - 1).asText());

View file

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

View file

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