Upload via GUI (138 Dateien)
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
package de.aeromc.capes.mixin;
|
||||
|
||||
import com.mojang.authlib.GameProfile;
|
||||
import com.mojang.authlib.properties.Property;
|
||||
import com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService;
|
||||
import de.aeromc.capes.mod.Umhaenge;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
|
||||
/**
|
||||
* Hängt sich an die Textur-Methoden von authlib (beide Fassungen, siehe
|
||||
* agent/…/Umbau.java). require = 0: Es greift immer nur die Methode, die es in
|
||||
* der jeweiligen authlib-Fassung gibt, die andere wird still übersprungen.
|
||||
* remap = false: authlib ist nicht verschleiert, Namen bleiben wie sie sind.
|
||||
*/
|
||||
@Mixin(value = YggdrasilMinecraftSessionService.class, remap = false)
|
||||
public abstract class SessionServiceMixin {
|
||||
|
||||
// wird in den statischen Initialisierer von authlib übernommen: zeigt im Spielprotokoll, dass der Mod greift
|
||||
static {
|
||||
Umhaenge.authlibGreift = true;
|
||||
Umhaenge.meldeAktiv("authlib");
|
||||
}
|
||||
|
||||
// authlib 5+ (Minecraft 1.20.2 … 26.x)
|
||||
@Inject(method = "unpackTextures", at = @At("RETURN"), cancellable = true, remap = false, require = 0)
|
||||
private void aeromc$neu(Property eigenschaft, CallbackInfoReturnable<Object> cir) {
|
||||
aeromc$ersetze(cir, eigenschaft);
|
||||
}
|
||||
|
||||
// authlib 1–4 (Minecraft 1.14 … 1.20.1)
|
||||
@Inject(method = "getTextures(Lcom/mojang/authlib/GameProfile;Z)Ljava/util/Map;", at = @At("RETURN"), cancellable = true, remap = false, require = 0)
|
||||
private void aeromc$alt(GameProfile profil, boolean sicher, CallbackInfoReturnable<Object> cir) {
|
||||
aeromc$ersetze(cir, profil);
|
||||
}
|
||||
|
||||
private static void aeromc$ersetze(CallbackInfoReturnable<Object> cir, Object argument) {
|
||||
try {
|
||||
Object alt = cir.getReturnValue();
|
||||
Object neu = Umhaenge.mitUmhang(alt, argument);
|
||||
if (neu != alt) cir.setReturnValue(neu);
|
||||
} catch (Throwable ignoriert) {
|
||||
// im Zweifel bleibt alles wie ohne Mod
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user