Minestom/src/main/java/net/minestom/server/extras/MojangAuth.java

40 lines
1.3 KiB
Java

package net.minestom.server.extras;
import net.minestom.server.MinecraftServer;
import net.minestom.server.ServerFlag;
import net.minestom.server.extras.mojangAuth.MojangCrypt;
import net.minestom.server.extras.velocity.VelocityProxy;
import net.minestom.server.utils.validate.Check;
import org.jetbrains.annotations.Nullable;
import java.security.KeyPair;
public final class MojangAuth {
public static final String AUTH_URL = ServerFlag.AUTH_URL.concat("?username=%s&serverId=%s");
private static volatile boolean enabled = false;
private static volatile KeyPair keyPair;
/**
* Enables mojang authentication on the server.
* <p>
* Be aware that enabling a proxy will make Mojang authentication ignored.
*/
public static void init() {
Check.stateCondition(enabled, "Mojang auth is already enabled!");
Check.stateCondition(MinecraftServer.process().isAlive(), "The server has already been started!");
Check.stateCondition(VelocityProxy.isEnabled(), "Velocity modern forwarding should not be enabled with MojangAuth");
MojangAuth.enabled = true;
// Generate necessary fields...
MojangAuth.keyPair = MojangCrypt.generateKeyPair();
}
public static boolean isEnabled() {
return enabled;
}
public static @Nullable KeyPair getKeyPair() {
return keyPair;
}
}