mirror of
https://github.com/GeyserMC/Floodgate.git
synced 2026-01-04 15:31:48 +00:00
Remaining merge changes
This commit is contained in:
@@ -26,6 +26,7 @@
|
||||
package org.geysermc.floodgate.core;
|
||||
|
||||
import io.micronaut.context.ApplicationContext;
|
||||
import io.micronaut.context.Qualifier;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
import org.geysermc.api.Geyser;
|
||||
@@ -79,7 +80,7 @@ public abstract class FloodgatePlatform {
|
||||
|
||||
injector = context.getBean(PlatformInjector.class);
|
||||
|
||||
GeyserApiBase api = guice.getInstance(GeyserApiBase.class);
|
||||
GeyserApiBase api = context.getBean(GeyserApiBase.class);
|
||||
InstanceHolder.set(
|
||||
context.getBean(FloodgateApi.class),
|
||||
null, // todo context.getBean(PlayerLink.class),
|
||||
@@ -126,7 +127,10 @@ public abstract class FloodgatePlatform {
|
||||
|
||||
abstract protected boolean isProxy();
|
||||
|
||||
public <T> T getInstance(Class<T> clazz) {
|
||||
return guice.getInstance(clazz);
|
||||
public <T> T getBean(Class<T> clazz) {
|
||||
return context.getBean(clazz);
|
||||
}
|
||||
public <T> T getBean(Class<T> clazz, Qualifier<T> qualifier) {
|
||||
return context.getBean(clazz, qualifier);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,11 +35,11 @@ import java.util.Queue;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.geysermc.floodgate.api.handshake.HandshakeData;
|
||||
import org.geysermc.floodgate.core.config.FloodgateConfig;
|
||||
import org.geysermc.floodgate.core.crypto.FloodgateCipher;
|
||||
import org.geysermc.floodgate.core.player.FloodgateHandshakeHandler;
|
||||
import org.geysermc.floodgate.core.player.FloodgateHandshakeHandler.HandshakeResult;
|
||||
import org.geysermc.floodgate.core.player.HostnameSeparationResult;
|
||||
import org.geysermc.floodgate.core.util.Constants;
|
||||
import org.geysermc.floodgate.crypto.FloodgateCipher;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public abstract class CommonDataHandler extends ChannelInboundHandlerAdapter {
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
|
||||
package org.geysermc.floodgate.core.addon.data;
|
||||
|
||||
import com.google.inject.Singleton;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
||||
import jakarta.inject.Singleton;
|
||||
|
||||
@@ -28,8 +28,8 @@ package org.geysermc.floodgate.core.api;
|
||||
import jakarta.inject.Inject;
|
||||
import jakarta.inject.Singleton;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import org.geysermc.floodgate.core.crypto.FloodgateCipher;
|
||||
import org.geysermc.floodgate.core.scope.ProxyOnly;
|
||||
import org.geysermc.floodgate.crypto.FloodgateCipher;
|
||||
import org.geysermc.floodgate.util.BedrockData;
|
||||
|
||||
@ProxyOnly
|
||||
|
||||
@@ -31,7 +31,7 @@ import com.google.common.collect.ImmutableList;
|
||||
import io.micronaut.context.BeanProvider;
|
||||
import jakarta.inject.Inject;
|
||||
import jakarta.inject.Singleton;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
@@ -42,6 +42,7 @@ import org.geysermc.api.GeyserApiBase;
|
||||
import org.geysermc.api.connection.Connection;
|
||||
import org.geysermc.cumulus.form.Form;
|
||||
import org.geysermc.cumulus.form.util.FormBuilder;
|
||||
import org.geysermc.floodgate.api.InstanceHolder;
|
||||
import org.geysermc.floodgate.api.link.PlayerLink;
|
||||
import org.geysermc.floodgate.api.logger.FloodgateLogger;
|
||||
import org.geysermc.floodgate.core.config.FloodgateConfig;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2019-2022 GeyserMC. http://geysermc.org
|
||||
* Copyright (c) 2019-2023 GeyserMC. http://geysermc.org
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -23,8 +23,10 @@
|
||||
* @link https://github.com/GeyserMC/Floodgate
|
||||
*/
|
||||
|
||||
package org.geysermc.floodgate.api.legacy;
|
||||
package org.geysermc.floodgate.core.api.legacy;
|
||||
|
||||
import jakarta.inject.Inject;
|
||||
import jakarta.inject.Singleton;
|
||||
import java.util.Collection;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
@@ -35,17 +37,15 @@ import org.geysermc.cumulus.form.util.FormBuilder;
|
||||
import org.geysermc.floodgate.api.FloodgateApi;
|
||||
import org.geysermc.floodgate.api.player.FloodgatePlayer;
|
||||
import org.geysermc.floodgate.api.unsafe.Unsafe;
|
||||
import org.geysermc.floodgate.player.FloodgateConnection;
|
||||
import org.geysermc.floodgate.util.WebEndpoints;
|
||||
import org.geysermc.floodgate.core.http.xbox.GetGamertagResult;
|
||||
import org.geysermc.floodgate.core.http.xbox.GetXuidResult;
|
||||
import org.geysermc.floodgate.core.http.xbox.XboxClient;
|
||||
import org.geysermc.floodgate.core.player.FloodgateConnection;
|
||||
|
||||
@Singleton
|
||||
public final class LegacyApiWrapper implements FloodgateApi {
|
||||
private final GeyserApiBase apiBase;
|
||||
private final WebEndpoints webEndpoints;
|
||||
|
||||
public LegacyApiWrapper(GeyserApiBase apiBase, WebEndpoints webEndpoints) {
|
||||
this.apiBase = apiBase;
|
||||
this.webEndpoints = webEndpoints;
|
||||
}
|
||||
@Inject GeyserApiBase apiBase;
|
||||
@Inject XboxClient xboxClient;
|
||||
|
||||
@Override
|
||||
public String getPlayerPrefix() {
|
||||
@@ -116,12 +116,12 @@ public final class LegacyApiWrapper implements FloodgateApi {
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Long> getXuidFor(String gamertag) {
|
||||
return webEndpoints.getXuidFor(gamertag);
|
||||
return xboxClient.xuidByGamertag(gamertag).thenApply(GetXuidResult::xuid);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<String> getGamertagFor(long xuid) {
|
||||
return webEndpoints.getGamertagFor(xuid);
|
||||
return xboxClient.gamertagByXuid(xuid).thenApply(GetGamertagResult::gamertag);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2019-2022 GeyserMC. http://geysermc.org
|
||||
* Copyright (c) 2019-2023 GeyserMC. http://geysermc.org
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -23,13 +23,13 @@
|
||||
* @link https://github.com/GeyserMC/Floodgate
|
||||
*/
|
||||
|
||||
package org.geysermc.floodgate.api.legacy;
|
||||
package org.geysermc.floodgate.core.api.legacy;
|
||||
|
||||
import java.util.UUID;
|
||||
import org.geysermc.floodgate.api.FloodgateApi;
|
||||
import org.geysermc.floodgate.api.player.FloodgatePlayer;
|
||||
import org.geysermc.floodgate.api.player.PropertyKey;
|
||||
import org.geysermc.floodgate.player.FloodgateConnection;
|
||||
import org.geysermc.floodgate.core.player.FloodgateConnection;
|
||||
import org.geysermc.floodgate.util.DeviceOs;
|
||||
import org.geysermc.floodgate.util.InputMode;
|
||||
import org.geysermc.floodgate.util.LinkedPlayer;
|
||||
@@ -23,7 +23,7 @@
|
||||
* @link https://github.com/GeyserMC/Floodgate
|
||||
*/
|
||||
|
||||
package org.geysermc.floodgate.api.legacy;
|
||||
package org.geysermc.floodgate.core.api.legacy;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
@@ -35,9 +35,8 @@ import jakarta.inject.Inject;
|
||||
import jakarta.inject.Singleton;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import lombok.Getter;
|
||||
import org.geysermc.floodgate.api.FloodgateApi;
|
||||
import org.geysermc.floodgate.api.SimpleFloodgateApi;
|
||||
import org.geysermc.floodgate.api.logger.FloodgateLogger;
|
||||
import org.geysermc.floodgate.core.api.SimpleFloodgateApi;
|
||||
import org.geysermc.floodgate.core.command.util.Permission;
|
||||
import org.geysermc.floodgate.core.config.FloodgateConfig;
|
||||
import org.geysermc.floodgate.core.link.CommonPlayerLink;
|
||||
|
||||
@@ -30,7 +30,6 @@ import cloud.commandframework.CommandManager;
|
||||
import cloud.commandframework.context.CommandContext;
|
||||
import jakarta.inject.Singleton;
|
||||
import org.geysermc.api.Geyser;
|
||||
import org.geysermc.floodgate.api.FloodgateApi;
|
||||
import org.geysermc.floodgate.core.config.FloodgateConfig;
|
||||
import org.geysermc.floodgate.core.platform.command.FloodgateCommand;
|
||||
import org.geysermc.floodgate.core.player.UserAudience;
|
||||
|
||||
@@ -39,11 +39,11 @@ import lombok.Getter;
|
||||
import org.geysermc.configutils.ConfigUtilities;
|
||||
import org.geysermc.configutils.file.codec.PathFileCodec;
|
||||
import org.geysermc.configutils.updater.change.Changes;
|
||||
import org.geysermc.floodgate.core.crypto.FloodgateCipher;
|
||||
import org.geysermc.floodgate.core.crypto.KeyProducer;
|
||||
import org.geysermc.floodgate.core.scope.ProxyOnly;
|
||||
import org.geysermc.floodgate.core.scope.ServerOnly;
|
||||
import org.geysermc.floodgate.core.util.GlobalBeanCache;
|
||||
import org.geysermc.floodgate.crypto.FloodgateCipher;
|
||||
import org.geysermc.floodgate.crypto.KeyProducer;
|
||||
|
||||
@Factory
|
||||
@Getter
|
||||
|
||||
@@ -57,7 +57,11 @@ public interface FloodgateConfig extends GenericPostInitializeCallback<ConfigLoa
|
||||
|
||||
// don't assume that the key always exists with the existence of a config
|
||||
if (!Files.exists(keyPath)) {
|
||||
loader.generateKey(keyPath);
|
||||
// TODO improve message and also link to article about corrupted keys/WinSCP/FTP
|
||||
// Like, where is key.pem?
|
||||
// TODO don't be so noisy with error. It makes it hard to understand what the error is.
|
||||
return CallbackResult.failed("Floodgate requires a key file! " +
|
||||
"Copy your key file from Geyser (key.pem) and paste it into " + keyPath);
|
||||
}
|
||||
|
||||
try {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2019-2022 GeyserMC. http://geysermc.org
|
||||
* Copyright (c) 2019-2023 GeyserMC. http://geysermc.org
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -23,7 +23,7 @@
|
||||
* @link https://github.com/GeyserMC/Floodgate
|
||||
*/
|
||||
|
||||
package org.geysermc.floodgate.crypto;
|
||||
package org.geysermc.floodgate.core.crypto;
|
||||
|
||||
import java.nio.Buffer;
|
||||
import java.nio.ByteBuffer;
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2019-2022 GeyserMC. http://geysermc.org
|
||||
* Copyright (c) 2019-2023 GeyserMC. http://geysermc.org
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -23,7 +23,7 @@
|
||||
* @link https://github.com/GeyserMC/Floodgate
|
||||
*/
|
||||
|
||||
package org.geysermc.floodgate.crypto;
|
||||
package org.geysermc.floodgate.core.crypto;
|
||||
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.security.SecureRandom;
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2019-2022 GeyserMC. http://geysermc.org
|
||||
* Copyright (c) 2019-2023 GeyserMC. http://geysermc.org
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -20,10 +20,10 @@
|
||||
* THE SOFTWARE.
|
||||
*
|
||||
* @author GeyserMC
|
||||
* @link https://github.com/GeyserMC/Geyser
|
||||
* @link https://github.com/GeyserMC/Floodgate
|
||||
*/
|
||||
|
||||
package org.geysermc.floodgate.crypto;
|
||||
package org.geysermc.floodgate.core.crypto;
|
||||
|
||||
import java.util.Base64;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2019-2022 GeyserMC. http://geysermc.org
|
||||
* Copyright (c) 2019-2023 GeyserMC. http://geysermc.org
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -23,12 +23,12 @@
|
||||
* @link https://github.com/GeyserMC/Floodgate
|
||||
*/
|
||||
|
||||
package org.geysermc.floodgate.crypto;
|
||||
package org.geysermc.floodgate.core.crypto;
|
||||
|
||||
import static java.nio.charset.StandardCharsets.UTF_8;
|
||||
|
||||
import java.security.Key;
|
||||
import org.geysermc.floodgate.util.InvalidFormatException;
|
||||
import org.geysermc.floodgate.core.util.InvalidFormatException;
|
||||
|
||||
/**
|
||||
* Responsible for both encrypting and decrypting data
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2019-2022 GeyserMC. http://geysermc.org
|
||||
* Copyright (c) 2019-2023 GeyserMC. http://geysermc.org
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -20,10 +20,10 @@
|
||||
* THE SOFTWARE.
|
||||
*
|
||||
* @author GeyserMC
|
||||
* @link https://github.com/GeyserMC/Geyser
|
||||
* @link https://github.com/GeyserMC/Floodgate
|
||||
*/
|
||||
|
||||
package org.geysermc.floodgate.crypto;
|
||||
package org.geysermc.floodgate.core.crypto;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2019-2022 GeyserMC. http://geysermc.org
|
||||
* Copyright (c) 2019-2023 GeyserMC. http://geysermc.org
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -20,10 +20,10 @@
|
||||
* THE SOFTWARE.
|
||||
*
|
||||
* @author GeyserMC
|
||||
* @link https://github.com/GeyserMC/Geyser
|
||||
* @link https://github.com/GeyserMC/Floodgate
|
||||
*/
|
||||
|
||||
package org.geysermc.floodgate.crypto;
|
||||
package org.geysermc.floodgate.core.crypto;
|
||||
|
||||
public interface Topping {
|
||||
byte[] encode(byte[] data);
|
||||
@@ -32,7 +32,7 @@ import org.geysermc.api.connection.Connection;
|
||||
import org.geysermc.event.util.AbstractCancellable;
|
||||
import org.geysermc.floodgate.api.event.skin.SkinApplyEvent;
|
||||
import org.geysermc.floodgate.api.player.FloodgatePlayer;
|
||||
import org.geysermc.floodgate.player.FloodgateConnection;
|
||||
import org.geysermc.floodgate.core.player.FloodgateConnection;
|
||||
|
||||
public class SkinApplyEventImpl extends AbstractCancellable implements SkinApplyEvent {
|
||||
private final FloodgatePlayer player;
|
||||
|
||||
@@ -39,15 +39,15 @@ import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.SynchronousQueue;
|
||||
import java.util.concurrent.ThreadPoolExecutor;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import org.geysermc.api.connection.Connection;
|
||||
import org.geysermc.event.Listener;
|
||||
import org.geysermc.floodgate.api.player.FloodgatePlayer;
|
||||
import org.geysermc.floodgate.core.crypto.AesCipher;
|
||||
import org.geysermc.floodgate.core.crypto.AesKeyProducer;
|
||||
import org.geysermc.floodgate.core.crypto.Base64Topping;
|
||||
import org.geysermc.floodgate.core.crypto.FloodgateCipher;
|
||||
import org.geysermc.floodgate.core.crypto.KeyProducer;
|
||||
import org.geysermc.floodgate.core.util.Constants;
|
||||
import org.geysermc.floodgate.core.util.GlobalBeanCache;
|
||||
import org.geysermc.floodgate.crypto.AesCipher;
|
||||
import org.geysermc.floodgate.crypto.AesKeyProducer;
|
||||
import org.geysermc.floodgate.crypto.Base64Topping;
|
||||
import org.geysermc.floodgate.crypto.FloodgateCipher;
|
||||
import org.geysermc.floodgate.crypto.KeyProducer;
|
||||
|
||||
@Factory
|
||||
@BootstrapContextCompatible
|
||||
@@ -114,7 +114,7 @@ public class CommonModule {
|
||||
@Bean
|
||||
@Singleton
|
||||
@Named("playerAttribute")
|
||||
public AttributeKey<FloodgatePlayer> playerAttribute() {
|
||||
public AttributeKey<Connection> playerAttribute() {
|
||||
return AttributeKey.valueOf("floodgate-player");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,7 +38,6 @@ import lombok.RequiredArgsConstructor;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
import org.geysermc.api.GeyserApiBase;
|
||||
import org.geysermc.floodgate.api.FloodgateApi;
|
||||
import org.geysermc.floodgate.core.platform.util.PlayerType;
|
||||
import org.geysermc.floodgate.core.player.UserAudience;
|
||||
import org.geysermc.floodgate.core.player.audience.ProfileAudience;
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
* @link https://github.com/GeyserMC/Floodgate
|
||||
*/
|
||||
|
||||
package org.geysermc.floodgate.player;
|
||||
package org.geysermc.floodgate.core.player;
|
||||
|
||||
import java.net.InetSocketAddress;
|
||||
import java.util.UUID;
|
||||
@@ -40,11 +40,11 @@ import org.geysermc.api.util.UiProfile;
|
||||
import org.geysermc.cumulus.form.Form;
|
||||
import org.geysermc.cumulus.form.util.FormBuilder;
|
||||
import org.geysermc.floodgate.api.handshake.HandshakeData;
|
||||
import org.geysermc.floodgate.api.legacy.LegacyPlayerWrapper;
|
||||
import org.geysermc.floodgate.api.legacy.PropertyGlue;
|
||||
import org.geysermc.floodgate.core.api.legacy.LegacyPlayerWrapper;
|
||||
import org.geysermc.floodgate.core.api.legacy.PropertyGlue;
|
||||
import org.geysermc.floodgate.core.util.Utils;
|
||||
import org.geysermc.floodgate.util.BedrockData;
|
||||
import org.geysermc.floodgate.util.LinkedPlayer;
|
||||
import org.geysermc.floodgate.util.Utils;
|
||||
|
||||
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
public final class FloodgateConnection implements Connection {
|
||||
|
||||
@@ -50,14 +50,14 @@ import org.geysermc.floodgate.core.addon.data.HandshakeDataImpl;
|
||||
import org.geysermc.floodgate.core.addon.data.HandshakeHandlersImpl;
|
||||
import org.geysermc.floodgate.core.api.SimpleFloodgateApi;
|
||||
import org.geysermc.floodgate.core.config.FloodgateConfig;
|
||||
import org.geysermc.floodgate.core.crypto.FloodgateCipher;
|
||||
import org.geysermc.floodgate.core.link.CommonPlayerLink;
|
||||
import org.geysermc.floodgate.core.skin.SkinUploadManager;
|
||||
import org.geysermc.floodgate.core.util.Constants;
|
||||
import org.geysermc.floodgate.core.util.InvalidFormatException;
|
||||
import org.geysermc.floodgate.core.util.LanguageManager;
|
||||
import org.geysermc.floodgate.core.util.Utils;
|
||||
import org.geysermc.floodgate.crypto.FloodgateCipher;
|
||||
import org.geysermc.floodgate.util.BedrockData;
|
||||
import org.geysermc.floodgate.util.InvalidFormatException;
|
||||
import org.geysermc.floodgate.util.LinkedPlayer;
|
||||
|
||||
public final class FloodgateHandshakeHandler {
|
||||
@@ -284,7 +284,7 @@ public final class FloodgateHandshakeHandler {
|
||||
|
||||
public InetSocketAddress getNewIp(Channel channel) {
|
||||
if (floodgatePlayer != null) {
|
||||
return (InetSocketAddress) floodgatePlayer.socketAddress();
|
||||
return floodgatePlayer.socketAddress();
|
||||
}
|
||||
if (handshakeData.getIp() != null) {
|
||||
int port = ((InetSocketAddress) channel.remoteAddress()).getPort();
|
||||
|
||||
@@ -23,15 +23,7 @@
|
||||
* @link https://github.com/GeyserMC/Floodgate
|
||||
*/
|
||||
|
||||
package org.geysermc.floodgate.player;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.UUID;
|
||||
import org.geysermc.api.connection.Connection;
|
||||
package org.geysermc.floodgate.core.player;
|
||||
|
||||
public final class HandshakeInjectedData {
|
||||
// TIM I PROMISE THIS IS JUST AN IDEA
|
||||
|
||||
@@ -39,7 +39,7 @@ import org.geysermc.api.connection.Connection;
|
||||
import org.geysermc.floodgate.api.event.skin.SkinApplyEvent.SkinData;
|
||||
import org.geysermc.floodgate.api.logger.FloodgateLogger;
|
||||
import org.geysermc.floodgate.core.util.Utils;
|
||||
import org.geysermc.floodgate.util.WebsocketEventType;
|
||||
import org.geysermc.floodgate.core.util.WebsocketEventType;
|
||||
import org.java_websocket.client.WebSocketClient;
|
||||
import org.java_websocket.handshake.ServerHandshake;
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
* @link https://github.com/GeyserMC/Geyser
|
||||
*/
|
||||
|
||||
package org.geysermc.floodgate.util;
|
||||
package org.geysermc.floodgate.core.util;
|
||||
|
||||
public class InvalidFormatException extends Exception {
|
||||
public InvalidFormatException(String message) {
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
* @link https://github.com/GeyserMC/Geyser
|
||||
*/
|
||||
|
||||
package org.geysermc.floodgate.util;
|
||||
package org.geysermc.floodgate.core.util;
|
||||
|
||||
public enum WebsocketEventType {
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user