From 4346ccda3765d175befe3b0f9e19e5bfe3867279 Mon Sep 17 00:00:00 2001 From: Matthew Messinger Date: Mon, 27 Aug 2018 19:22:34 -0400 Subject: [PATCH] Fix noskins --- .../mixin/MixinDefaultPlayerSkin.java | 55 +++++++++++++++++++ src/main/resources/minelp.mixin.json | 7 ++- 2 files changed, 59 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/minelittlepony/mixin/MixinDefaultPlayerSkin.java diff --git a/src/main/java/com/minelittlepony/mixin/MixinDefaultPlayerSkin.java b/src/main/java/com/minelittlepony/mixin/MixinDefaultPlayerSkin.java new file mode 100644 index 00000000..af248960 --- /dev/null +++ b/src/main/java/com/minelittlepony/mixin/MixinDefaultPlayerSkin.java @@ -0,0 +1,55 @@ +package com.minelittlepony.mixin; + +import com.minelittlepony.MineLittlePony; +import com.minelittlepony.PonyManager; +import com.minelittlepony.pony.data.PonyLevel; +import net.minecraft.client.resources.DefaultPlayerSkin; +import net.minecraft.util.ResourceLocation; +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.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import java.util.UUID; + +@Mixin(DefaultPlayerSkin.class) +public abstract class MixinDefaultPlayerSkin { + + @Shadow + private static boolean isSlimSkin(UUID playerUUID) { + return false; + } + + @Shadow + public static ResourceLocation getDefaultSkin(UUID playerUUID) { + return null; + } + + @Inject(method = "getDefaultSkinLegacy", at = @At("HEAD"), cancellable = true) + private static void legacySkin(CallbackInfoReturnable cir) { + if (MineLittlePony.getConfig().getPonyLevel() == PonyLevel.PONIES) { + cir.setReturnValue(PonyManager.STEVE); + } + } + + @Inject(method = "getDefaultSkin", at = @At("HEAD"), cancellable = true) + private static void defaultSkin(UUID uuid, CallbackInfoReturnable cir) { + if (MineLittlePony.getConfig().getPonyLevel() == PonyLevel.PONIES) { + cir.setReturnValue(isSlimSkin(uuid) ? PonyManager.ALEX : PonyManager.STEVE); + } + } + + @Inject(method = "getSkinType", at = @At("HEAD"), cancellable = true) + private static void skinType(UUID uuid, CallbackInfoReturnable cir) { + if (MineLittlePony.getConfig().getPonyLevel() == PonyLevel.PONIES) { + + cir.setReturnValue(MineLittlePony.getInstance().getManager() + .getPony(getDefaultSkin(uuid), uuid) + .getRace(false) + .getModel() + .getId(isSlimSkin(uuid))); + } + } + +} diff --git a/src/main/resources/minelp.mixin.json b/src/main/resources/minelp.mixin.json index b9626380..690c59c4 100644 --- a/src/main/resources/minelp.mixin.json +++ b/src/main/resources/minelp.mixin.json @@ -5,10 +5,11 @@ "refmap": "minelp.mixin.refmap.json", "compatibilityLevel": "JAVA_8", "mixins": [ - "MixinThreadDownloadImageData", - "MixinRenderItem", + "MixinDefaultPlayerSkin", + "MixinGlStateManager", "MixinItemRenderer", + "MixinRenderItem", "MixinRenderManager", - "MixinGlStateManager" + "MixinThreadDownloadImageData" ] }