Working Fabric Server & Clientus
Dieser Commit ist enthalten in:
Ursprung
77ae329d6e
Commit
7080792d52
@ -9,7 +9,8 @@
|
||||
],
|
||||
"server": [
|
||||
"ServerIdMixin",
|
||||
"MinecraftServerMixin"
|
||||
"MinecraftServerMixin",
|
||||
"ServerLoginNetworkHandlerNetworkMixin"
|
||||
],
|
||||
"injectors": {
|
||||
"defaultRequire": 1
|
||||
|
@ -48,10 +48,10 @@ public class LoginRequestMixin {
|
||||
} else {
|
||||
if(MinecraftClient.getInstance().currentScreen instanceof ConnectScreen cs) {
|
||||
ci.cancel();
|
||||
/*cs.connectingCancelled = true;
|
||||
cs.connectingCancelled = true;
|
||||
if( cs.connection != null) {
|
||||
cs.connection.disconnect(Text.translatable("connect.aborted"));
|
||||
}*/
|
||||
}
|
||||
|
||||
MinecraftClient.getInstance().execute(() -> client.setScreen(new TrustServerScreen(server, cs.parent)));
|
||||
}
|
||||
|
@ -2,39 +2,41 @@
|
||||
|
||||
package de.chaoscaot.altauth.fabric.mixin;
|
||||
|
||||
import com.mojang.datafixers.DataFixer;
|
||||
import de.chaoscaot.altauth.fabric.AltAuth;
|
||||
import de.chaoscaot.altauth.fabric.config.ServerConfig;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.resource.ResourcePackManager;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.server.SaveLoader;
|
||||
import net.minecraft.server.WorldGenerationProgressListenerFactory;
|
||||
import net.minecraft.util.ApiServices;
|
||||
import net.minecraft.world.level.storage.LevelStorage;
|
||||
import org.joor.Reflect;
|
||||
import org.objectweb.asm.Opcodes;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.Proxy;
|
||||
import java.net.URL;
|
||||
|
||||
@Environment(EnvType.SERVER)
|
||||
@Mixin(MinecraftServer.class)
|
||||
public class MinecraftServerMixin {
|
||||
|
||||
@Shadow
|
||||
protected ApiServices apiServices;
|
||||
|
||||
@Redirect(method = "<init>", at = @At(value = "FIELD", target = "Lnet/minecraft/server/MinecraftServer;apiServices:Lnet/minecraft/util/ApiServices;", opcode = Opcodes.PUTFIELD))
|
||||
private void apiServiceMixin(MinecraftServer instance, ApiServices value) {
|
||||
apiServices = value;
|
||||
|
||||
@Inject(method = "<init>", at = @At(value = "TAIL"))
|
||||
private void apiServiceMixin(Thread serverThread, LevelStorage.Session session, ResourcePackManager dataPackManager, SaveLoader saveLoader, Proxy proxy, DataFixer dataFixer, ApiServices apiServices, WorldGenerationProgressListenerFactory worldGenerationProgressListenerFactory, CallbackInfo ci) {
|
||||
try {
|
||||
URL url = new URL("https://" + ServerConfig.INSTANCE.serverUrl + "/session/minecraft/join");
|
||||
Reflect.on(MinecraftClient.getInstance().getSessionService()).set("joinUrl", url);
|
||||
URL url = new URL("https://" + ServerConfig.INSTANCE.serverUrl + "/session/minecraft/hasJoined");
|
||||
Reflect.on(apiServices.sessionService()).set("checkUrl", url);
|
||||
URL joinUrl = new URL("https://" + ServerConfig.INSTANCE.serverUrl + "/session/minecraft/join");
|
||||
Reflect.on(apiServices.sessionService()).set("joinUrl", joinUrl);
|
||||
} catch (MalformedURLException e) {
|
||||
AltAuth.LOGGER.error("Malformed URL: {}", e.getMessage());
|
||||
}
|
||||
ServerConfig.INSTANCE.save();
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,16 @@
|
||||
package de.chaoscaot.altauth.fabric.mixin;
|
||||
|
||||
import de.chaoscaot.altauth.fabric.config.ServerConfig;
|
||||
import net.minecraft.server.network.ServerLoginNetworkHandler;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.ModifyArg;
|
||||
|
||||
@Mixin(ServerLoginNetworkHandler.class)
|
||||
public class ServerLoginNetworkHandlerNetworkMixin {
|
||||
|
||||
@ModifyArg(method = "onKey", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/encryption/NetworkEncryptionUtils;computeServerId(Ljava/lang/String;Ljava/security/PublicKey;Ljavax/crypto/SecretKey;)[B"), index = 0)
|
||||
private String onKey(String serverId) {
|
||||
return ServerConfig.INSTANCE.serverUrl;
|
||||
}
|
||||
}
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren