mirror of
https://github.com/MineLittlePony/MineLittlePony.git
synced 2025-03-23 04:07:11 +01:00
Backport Screen mixin for better compatibility
This commit is contained in:
parent
5f0594c44b
commit
44bc07238e
4 changed files with 44 additions and 25 deletions
|
@ -11,6 +11,7 @@ import com.google.common.collect.Iterables;
|
|||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.common.collect.Streams;
|
||||
import com.minelittlepony.gui.IconicButton;
|
||||
import com.mojang.authlib.GameProfile;
|
||||
import com.mojang.authlib.minecraft.MinecraftProfileTexture;
|
||||
import com.mojang.authlib.minecraft.MinecraftProfileTexture.Type;
|
||||
|
@ -34,6 +35,9 @@ import com.voxelmodpack.hdskins.util.PlayerUtil;
|
|||
import com.voxelmodpack.hdskins.util.ProfileTextureUtil;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.entity.AbstractClientPlayer;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.client.gui.GuiMainMenu;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.client.network.NetworkPlayerInfo;
|
||||
import net.minecraft.client.renderer.ThreadDownloadImageData;
|
||||
import net.minecraft.client.renderer.texture.ITextureObject;
|
||||
|
@ -41,6 +45,8 @@ import net.minecraft.client.resources.DefaultPlayerSkin;
|
|||
import net.minecraft.client.resources.IResourceManager;
|
||||
import net.minecraft.client.resources.IResourceManagerReloadListener;
|
||||
import net.minecraft.client.resources.SkinManager;
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.apache.http.impl.client.CloseableHttpClient;
|
||||
|
@ -65,6 +71,7 @@ import java.util.concurrent.CompletableFuture;
|
|||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Stream;
|
||||
import javax.annotation.Nullable;
|
||||
|
@ -112,6 +119,14 @@ public final class HDSkinManager implements IResourceManagerReloadListener {
|
|||
return skinsGuiFunc.apply(ImmutableList.copyOf(this.skinServers));
|
||||
}
|
||||
|
||||
public void displaySkinningGui(GuiScreen screen, Consumer<GuiButton> buttons) {
|
||||
if (screen instanceof GuiMainMenu) {
|
||||
buttons.accept(new IconicButton(screen.width - 50, screen.height - 50, sender -> {
|
||||
Minecraft.getMinecraft().displayGuiScreen(HDSkinManager.INSTANCE.createSkinsGui());
|
||||
}).setIcon(new ItemStack(Items.LEATHER_LEGGINGS), 0x3c5dcb));
|
||||
}
|
||||
}
|
||||
|
||||
private CompletableFuture<Map<Type, MinecraftProfileTexture>> loadProfileData(GameProfile profile) {
|
||||
|
||||
return CompletableFuture.supplyAsync(() -> {
|
||||
|
|
|
@ -1,24 +0,0 @@
|
|||
package com.voxelmodpack.hdskins.mixin;
|
||||
|
||||
import com.minelittlepony.gui.IconicButton;
|
||||
import com.voxelmodpack.hdskins.HDSkinManager;
|
||||
|
||||
import net.minecraft.client.gui.GuiMainMenu;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.item.ItemStack;
|
||||
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.CallbackInfo;
|
||||
|
||||
@Mixin(GuiMainMenu.class)
|
||||
public class MixinGuiMainMenu extends GuiScreen {
|
||||
|
||||
@Inject(method = "initGui()V", at = @At("RETURN"))
|
||||
private void onInit(CallbackInfo ci) {
|
||||
addButton(new IconicButton(width - 50, height - 50, sender -> {
|
||||
mc.displayGuiScreen(HDSkinManager.INSTANCE.createSkinsGui());
|
||||
}).setIcon(new ItemStack(Items.LEATHER_LEGGINGS), 0x3c5dcb));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package com.voxelmodpack.hdskins.mixin;
|
||||
|
||||
import com.voxelmodpack.hdskins.HDSkinManager;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.Gui;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.client.gui.GuiYesNoCallback;
|
||||
|
||||
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.CallbackInfo;
|
||||
|
||||
@Mixin(GuiScreen.class)
|
||||
abstract class MixinGuiScreen extends Gui implements GuiYesNoCallback {
|
||||
|
||||
@Shadow
|
||||
protected abstract <T extends GuiButton> T addButton(T buttonIn);
|
||||
|
||||
@Inject(method = "setWorldAndResolution(Lnet/minecraft/client/Minecraft;II)V", at = @At("RETURN"))
|
||||
private void setWorldAndResolution(Minecraft mc, int width, int height, CallbackInfo info) {
|
||||
HDSkinManager.INSTANCE.displaySkinningGui((GuiScreen)(Object)this, this::addButton);
|
||||
}
|
||||
}
|
|
@ -3,9 +3,10 @@
|
|||
"minVersion": "0.7",
|
||||
"package": "com.voxelmodpack.hdskins.mixin",
|
||||
"refmap": "hdskins.mixin.refmap.json",
|
||||
"compatibilityLevel": "JAVA_8",
|
||||
"mixins": [
|
||||
"MixinMinecraft",
|
||||
"MixinGuiMainMenu",
|
||||
"MixinGuiScreen",
|
||||
"MixinImageBufferDownload",
|
||||
"MixinNetworkPlayerInfo",
|
||||
"MixinSkullRenderer"
|
||||
|
|
Loading…
Add table
Reference in a new issue