From e6e3f4a496bfff99bce3aa4469e74f29b3daab12 Mon Sep 17 00:00:00 2001 From: nea Date: Mon, 31 Jul 2023 00:48:15 +0200 Subject: Add skin fixer --- gradle/libs.versions.toml | 2 +- .../moe/nea/firmament/mixins/MixinPlayerListEntry.java | 18 ++++++++++++++++++ .../moe/nea/firmament/features/FeatureManager.kt | 2 ++ .../kotlin/moe/nea/firmament/features/fixes/Fixes.kt | 16 ++++++++++++++++ src/main/kotlin/moe/nea/firmament/repo/ItemCache.kt | 1 + 5 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 src/main/java/moe/nea/firmament/mixins/MixinPlayerListEntry.java create mode 100644 src/main/kotlin/moe/nea/firmament/features/fixes/Fixes.kt diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f317f97..e9630b9 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -19,7 +19,7 @@ sodium = "mc1.20-0.4.10" freecammod = "1.2.0-mc1.20" ncr = "Fabric-1.20-v2.2.0" mixinextras = "0.2.0-beta.9" -jarvis = "1.0.0" +jarvis = "1.1.1" [libraries] diff --git a/src/main/java/moe/nea/firmament/mixins/MixinPlayerListEntry.java b/src/main/java/moe/nea/firmament/mixins/MixinPlayerListEntry.java new file mode 100644 index 0000000..c858db1 --- /dev/null +++ b/src/main/java/moe/nea/firmament/mixins/MixinPlayerListEntry.java @@ -0,0 +1,18 @@ +package moe.nea.firmament.mixins; + +import moe.nea.firmament.features.fixes.Fixes; +import net.minecraft.client.network.PlayerListEntry; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyArg; + +@Mixin(PlayerListEntry.class) +public class MixinPlayerListEntry { + @ModifyArg(method = "loadTextures", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/texture/PlayerSkinProvider;loadSkin(Lcom/mojang/authlib/GameProfile;Lnet/minecraft/client/texture/PlayerSkinProvider$SkinTextureAvailableCallback;Z)V")) + public boolean shouldBeSecure(boolean originalSecure) { + if (Fixes.TConfig.INSTANCE.getFixUnsignedPlayerSkins()) { + return false; + } + return originalSecure; + } +} diff --git a/src/main/kotlin/moe/nea/firmament/features/FeatureManager.kt b/src/main/kotlin/moe/nea/firmament/features/FeatureManager.kt index 96222da..416da18 100644 --- a/src/main/kotlin/moe/nea/firmament/features/FeatureManager.kt +++ b/src/main/kotlin/moe/nea/firmament/features/FeatureManager.kt @@ -25,6 +25,7 @@ import moe.nea.firmament.features.chat.ImagePreview import moe.nea.firmament.features.debug.DebugView import moe.nea.firmament.features.debug.DeveloperFeatures import moe.nea.firmament.features.fishing.FishingWarning +import moe.nea.firmament.features.fixes.Fixes import moe.nea.firmament.features.inventory.CraftingOverlay import moe.nea.firmament.features.inventory.SaveCursorPosition import moe.nea.firmament.features.inventory.SlotLocking @@ -60,6 +61,7 @@ object FeatureManager : DataHolder(serializer(), "feature loadFeature(ImagePreview) loadFeature(SaveCursorPosition) loadFeature(CustomSkyBlockTextures) + loadFeature(Fixes) if (Firmament.DEBUG) { loadFeature(DeveloperFeatures) loadFeature(DebugView) diff --git a/src/main/kotlin/moe/nea/firmament/features/fixes/Fixes.kt b/src/main/kotlin/moe/nea/firmament/features/fixes/Fixes.kt new file mode 100644 index 0000000..82cb37f --- /dev/null +++ b/src/main/kotlin/moe/nea/firmament/features/fixes/Fixes.kt @@ -0,0 +1,16 @@ +package moe.nea.firmament.features.fixes + +import moe.nea.firmament.features.FirmamentFeature +import moe.nea.firmament.gui.config.ManagedConfig + +object Fixes : FirmamentFeature { + override val identifier: String + get() = "fixes" + + object TConfig : ManagedConfig(identifier) { + val fixUnsignedPlayerSkins by toggle("player-skins") { true } + } + + override fun onLoad() { + } +} diff --git a/src/main/kotlin/moe/nea/firmament/repo/ItemCache.kt b/src/main/kotlin/moe/nea/firmament/repo/ItemCache.kt index 72a779c..5dc1b25 100644 --- a/src/main/kotlin/moe/nea/firmament/repo/ItemCache.kt +++ b/src/main/kotlin/moe/nea/firmament/repo/ItemCache.kt @@ -34,6 +34,7 @@ import kotlinx.coroutines.launch import net.minecraft.SharedConstants import net.minecraft.block.entity.SkullBlockEntity import net.minecraft.client.resource.language.I18n +import net.minecraft.client.texture.PlayerSkinProvider import net.minecraft.datafixer.Schemas import net.minecraft.datafixer.TypeReferences import net.minecraft.item.ItemStack -- cgit