aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/moe/nea/firmament
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/moe/nea/firmament')
-rw-r--r--src/main/java/moe/nea/firmament/mixins/PropertySignatureIgnorePatch.java8
-rw-r--r--src/main/java/moe/nea/firmament/mixins/PropertySignatureIgnorePatchForSession.java29
2 files changed, 37 insertions, 0 deletions
diff --git a/src/main/java/moe/nea/firmament/mixins/PropertySignatureIgnorePatch.java b/src/main/java/moe/nea/firmament/mixins/PropertySignatureIgnorePatch.java
index 4c1f3be..56f4f16 100644
--- a/src/main/java/moe/nea/firmament/mixins/PropertySignatureIgnorePatch.java
+++ b/src/main/java/moe/nea/firmament/mixins/PropertySignatureIgnorePatch.java
@@ -1,5 +1,6 @@
/*
* SPDX-FileCopyrightText: 2023 Linnea Gräf <nea@nea.moe>
+ * SPDX-FileCopyrightText: 2024 Linnea Gräf <nea@nea.moe>
*
* SPDX-License-Identifier: GPL-3.0-or-later
*/
@@ -24,6 +25,13 @@ public class PropertySignatureIgnorePatch {
}
}
+ @Inject(method = "signature", cancellable = true, at = @At("HEAD"), remap = false)
+ public void returnEmptySignatureInsteadOfNull(CallbackInfoReturnable<String> cir) {
+ if (Fixes.TConfig.INSTANCE.getFixUnsignedPlayerSkins()) {
+ cir.setReturnValue("");
+ }
+ }
+
@Inject(method = "hasSignature", cancellable = true, at = @At("HEAD"), remap = false)
public void onHasSignature(CallbackInfoReturnable<Boolean> cir) {
if (Fixes.TConfig.INSTANCE.getFixUnsignedPlayerSkins()) {
diff --git a/src/main/java/moe/nea/firmament/mixins/PropertySignatureIgnorePatchForSession.java b/src/main/java/moe/nea/firmament/mixins/PropertySignatureIgnorePatchForSession.java
new file mode 100644
index 0000000..ed8545a
--- /dev/null
+++ b/src/main/java/moe/nea/firmament/mixins/PropertySignatureIgnorePatchForSession.java
@@ -0,0 +1,29 @@
+/*
+ * SPDX-FileCopyrightText: 2024 Linnea Gräf <nea@nea.moe>
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
+package moe.nea.firmament.mixins;
+
+import com.mojang.authlib.SignatureState;
+import com.mojang.authlib.properties.Property;
+import com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService;
+import moe.nea.firmament.features.fixes.Fixes;
+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;
+
+@Mixin(value = YggdrasilMinecraftSessionService.class, remap = false)
+public class PropertySignatureIgnorePatchForSession {
+ @Inject(method = "getPropertySignatureState", at = @At("HEAD"), cancellable = true, remap = false)
+ public void markEverythingAsSigned(Property property, CallbackInfoReturnable<SignatureState> cir) {
+ // Due to https://github.com/inglettronald/DulkirMod-Fabric/blob/22a3fc514a080fbe31f76f9ba7e85c36d8d0f67f/src/main/java/com/dulkirfabric/mixin/YggdrasilMinecraftSessionServiceMixin.java
+ // we sadly need to inject here too. Dulkirmod is very eager to early on mark a signature as unsigned
+ // and we want the opposite
+ if (Fixes.TConfig.INSTANCE.getFixUnsignedPlayerSkins()) {
+ cir.setReturnValue(SignatureState.SIGNED);
+ }
+ }
+}