From c219c66aefd6b7500e9658f61d4136d3aa0feff1 Mon Sep 17 00:00:00 2001 From: Matthew Messinger Date: Thu, 25 Aug 2016 01:36:00 -0400 Subject: [PATCH] Fix issues with the skin menu. Add a button to the main menu for skins Add overriding skins with a resource pack. See the skins.json Some default ponies are added. Spawn them using Citizens. Etc. --- build.gradle | 52 ++-- build.number | 4 +- .../hdskins/DynamicTextureImage.java | 26 ++ .../voxelmodpack/hdskins/HDSkinManager.java | 21 +- .../hdskins/gui/EntityPlayerModel.java | 3 +- .../hdskins/gui/GuiButtonSkins.java | 22 ++ .../hdskins/gui/GuiMetaHandler.java | 2 +- .../hdskins/gui/RenderPlayerModel.java | 19 +- .../hdskins/mixin/MixinGuiMainMenu.java | 32 +++ .../hdskins/mod/LiteModHDSkinsMod.java | 3 + .../hdskins/resource/SkinData.java | 22 ++ .../hdskins/resource/SkinResourceManager.java | 103 ++++++++ .../hdskins/resource/SkinThread.java | 69 +++++ src/hdskins/resources/mixin.hdskins.json | 1 + .../minelittlepony/MineLittlePony.java | 7 +- .../java/com/brohoof/minelittlepony/Pony.java | 11 +- .../com/brohoof/minelittlepony/PonyData.java | 2 +- .../minelittlepony/forge/MLPForge.java | 0 .../minelittlepony/forge/PonyArmors.java | 0 .../hdskins/gui/RenderPonyModel.java | 8 +- .../assets/hdskins/skins/applebloom.png | Bin 0 -> 3497 bytes .../assets/hdskins/skins/applejack.png | Bin 0 -> 3624 bytes .../assets/hdskins/skins/babsseed.png | Bin 0 -> 736 bytes .../assets/hdskins/skins/berrypunch.png | Bin 0 -> 1029 bytes .../resources/assets/hdskins/skins/bigmac.png | Bin 0 -> 844 bytes .../assets/hdskins/skins/blockwork.png | Bin 0 -> 1235 bytes .../resources/assets/hdskins/skins/bonbon.png | Bin 0 -> 746 bytes .../assets/hdskins/skins/braeburn.png | Bin 0 -> 3734 bytes .../assets/hdskins/skins/cadence.png | Bin 0 -> 1439 bytes .../assets/hdskins/skins/caramel.png | Bin 0 -> 3387 bytes .../assets/hdskins/skins/carrottop.png | Bin 0 -> 719 bytes .../assets/hdskins/skins/celestia.png | Bin 0 -> 3991 bytes .../assets/hdskins/skins/changeling.png | Bin 0 -> 924 bytes .../assets/hdskins/skins/cheerilee.png | Bin 0 -> 3500 bytes .../assets/hdskins/skins/chrysalis.png | Bin 0 -> 2680 bytes .../assets/hdskins/skins/colgate.png | Bin 0 -> 797 bytes .../resources/assets/hdskins/skins/cranky.png | Bin 0 -> 3368 bytes .../assets/hdskins/skins/daringdo.png | Bin 0 -> 1022 bytes .../resources/assets/hdskins/skins/derpy.png | Bin 0 -> 3458 bytes .../assets/hdskins/skins/diamondtiara.png | Bin 0 -> 790 bytes .../assets/hdskins/skins/fleetfoot.png | Bin 0 -> 558 bytes .../assets/hdskins/skins/fluttershy.png | Bin 0 -> 3568 bytes .../assets/hdskins/skins/grannysmith.png | Bin 0 -> 991 bytes .../assets/hdskins/skins/lemonhearts.png | Bin 0 -> 781 bytes .../resources/assets/hdskins/skins/luna.png | Bin 0 -> 3716 bytes .../resources/assets/hdskins/skins/lyra.png | Bin 0 -> 796 bytes .../assets/hdskins/skins/mayormare.png | Bin 0 -> 3630 bytes .../resources/assets/hdskins/skins/mrcake.png | Bin 0 -> 3587 bytes .../assets/hdskins/skins/mrscake.png | Bin 0 -> 3574 bytes .../assets/hdskins/skins/octavia.png | Bin 0 -> 3565 bytes .../assets/hdskins/skins/pinkiepie.png | Bin 0 -> 3553 bytes .../assets/hdskins/skins/rainbowdash.png | Bin 0 -> 3601 bytes .../resources/assets/hdskins/skins/rarity.png | Bin 0 -> 3658 bytes .../assets/hdskins/skins/royalguard.png | Bin 0 -> 1628 bytes .../assets/hdskins/skins/scootaloo.png | Bin 0 -> 3302 bytes .../assets/hdskins/skins/shiningarmor.png | Bin 0 -> 826 bytes .../assets/hdskins/skins/silverspoon.png | Bin 0 -> 812 bytes .../resources/assets/hdskins/skins/skins.json | 236 ++++++++++++++++++ .../resources/assets/hdskins/skins/soarin.png | Bin 0 -> 3626 bytes .../assets/hdskins/skins/soarinoriginal.png | Bin 0 -> 3299 bytes .../assets/hdskins/skins/spitfire.png | Bin 0 -> 3547 bytes .../assets/hdskins/skins/sweetiebelle.png | Bin 0 -> 3463 bytes .../resources/assets/hdskins/skins/trixie.png | Bin 0 -> 1098 bytes .../assets/hdskins/skins/twilight.png | Bin 0 -> 3481 bytes .../hdskins/skins/twilightsparkleoriginal.png | Bin 0 -> 3481 bytes .../resources/assets/hdskins/skins/twist.png | Bin 0 -> 769 bytes .../assets/hdskins/skins/vinylscratch.png | Bin 0 -> 3519 bytes .../assets/hdskins/skins/wonderbolt.png | Bin 0 -> 3626 bytes 68 files changed, 598 insertions(+), 45 deletions(-) create mode 100644 src/hdskins/java/com/voxelmodpack/hdskins/DynamicTextureImage.java create mode 100644 src/hdskins/java/com/voxelmodpack/hdskins/gui/GuiButtonSkins.java create mode 100644 src/hdskins/java/com/voxelmodpack/hdskins/mixin/MixinGuiMainMenu.java create mode 100644 src/hdskins/java/com/voxelmodpack/hdskins/resource/SkinData.java create mode 100644 src/hdskins/java/com/voxelmodpack/hdskins/resource/SkinResourceManager.java create mode 100644 src/hdskins/java/com/voxelmodpack/hdskins/resource/SkinThread.java rename src/{forge => main}/java/com/brohoof/minelittlepony/forge/MLPForge.java (100%) rename src/{forge => main}/java/com/brohoof/minelittlepony/forge/PonyArmors.java (100%) create mode 100644 src/main/resources/assets/hdskins/skins/applebloom.png create mode 100644 src/main/resources/assets/hdskins/skins/applejack.png create mode 100644 src/main/resources/assets/hdskins/skins/babsseed.png create mode 100644 src/main/resources/assets/hdskins/skins/berrypunch.png create mode 100644 src/main/resources/assets/hdskins/skins/bigmac.png create mode 100644 src/main/resources/assets/hdskins/skins/blockwork.png create mode 100644 src/main/resources/assets/hdskins/skins/bonbon.png create mode 100644 src/main/resources/assets/hdskins/skins/braeburn.png create mode 100644 src/main/resources/assets/hdskins/skins/cadence.png create mode 100644 src/main/resources/assets/hdskins/skins/caramel.png create mode 100644 src/main/resources/assets/hdskins/skins/carrottop.png create mode 100644 src/main/resources/assets/hdskins/skins/celestia.png create mode 100644 src/main/resources/assets/hdskins/skins/changeling.png create mode 100644 src/main/resources/assets/hdskins/skins/cheerilee.png create mode 100644 src/main/resources/assets/hdskins/skins/chrysalis.png create mode 100644 src/main/resources/assets/hdskins/skins/colgate.png create mode 100644 src/main/resources/assets/hdskins/skins/cranky.png create mode 100644 src/main/resources/assets/hdskins/skins/daringdo.png create mode 100644 src/main/resources/assets/hdskins/skins/derpy.png create mode 100644 src/main/resources/assets/hdskins/skins/diamondtiara.png create mode 100644 src/main/resources/assets/hdskins/skins/fleetfoot.png create mode 100644 src/main/resources/assets/hdskins/skins/fluttershy.png create mode 100644 src/main/resources/assets/hdskins/skins/grannysmith.png create mode 100644 src/main/resources/assets/hdskins/skins/lemonhearts.png create mode 100644 src/main/resources/assets/hdskins/skins/luna.png create mode 100644 src/main/resources/assets/hdskins/skins/lyra.png create mode 100644 src/main/resources/assets/hdskins/skins/mayormare.png create mode 100644 src/main/resources/assets/hdskins/skins/mrcake.png create mode 100644 src/main/resources/assets/hdskins/skins/mrscake.png create mode 100644 src/main/resources/assets/hdskins/skins/octavia.png create mode 100644 src/main/resources/assets/hdskins/skins/pinkiepie.png create mode 100644 src/main/resources/assets/hdskins/skins/rainbowdash.png create mode 100644 src/main/resources/assets/hdskins/skins/rarity.png create mode 100644 src/main/resources/assets/hdskins/skins/royalguard.png create mode 100644 src/main/resources/assets/hdskins/skins/scootaloo.png create mode 100644 src/main/resources/assets/hdskins/skins/shiningarmor.png create mode 100644 src/main/resources/assets/hdskins/skins/silverspoon.png create mode 100644 src/main/resources/assets/hdskins/skins/skins.json create mode 100644 src/main/resources/assets/hdskins/skins/soarin.png create mode 100644 src/main/resources/assets/hdskins/skins/soarinoriginal.png create mode 100644 src/main/resources/assets/hdskins/skins/spitfire.png create mode 100644 src/main/resources/assets/hdskins/skins/sweetiebelle.png create mode 100644 src/main/resources/assets/hdskins/skins/trixie.png create mode 100644 src/main/resources/assets/hdskins/skins/twilight.png create mode 100644 src/main/resources/assets/hdskins/skins/twilightsparkleoriginal.png create mode 100644 src/main/resources/assets/hdskins/skins/twist.png create mode 100644 src/main/resources/assets/hdskins/skins/vinylscratch.png create mode 100644 src/main/resources/assets/hdskins/skins/wonderbolt.png diff --git a/build.gradle b/build.gradle index a7c01a8a..92829156 100644 --- a/build.gradle +++ b/build.gradle @@ -26,7 +26,7 @@ apply plugin: 'org.spongepowered.mixin' apply plugin: 'mnm.gradle.ap-ide' group = 'com.brohoof.minelp' -version = '1.10.2.2' +version = '1.10.2.3' description = 'Mine Little Pony' minecraft { @@ -35,6 +35,7 @@ minecraft { runDir = 'run' replace '@VERSION@',project.version } + sourceSets { def deps = [ configurations.forgeGradleMcDeps, @@ -49,40 +50,57 @@ sourceSets { refMap = 'mixin.minelp.refmap.json' compileClasspath += hdskins.output } - forge { - compileClasspath += files(deps + [ main.output, api.output ]) - } } + +dependencies.testCompile 'junit:junit:4.12' + litemod.json { - author = "Verdana, Rene_Z, Mumfrey, JoyJoy" - description = "Mine Little Pony turns players and mobs into ponies" - description.litemodminelittlepony = """Mine Little Pony turns players and mobs into ponies - Press F9 ingame to access settings""" - description.litemodhdskinsmod = """Seperate skin server for Mine Little Pony that also supports HD skins. - Access via Skin Manager key binding (default: F1) in the main menu.""" - mixinConfigs += ['mixin.minelp.json', 'mixin.hdskins.json'] + author = 'Verdana, Rene_Z, Mumfrey, JoyJoy' + description = 'Mine Little Pony turns players and mobs into ponies' + description.minelittlepony = '''\ + Mine Little Pony turns players and mobs into ponies + Press F9 ingame to access settings'''.stripIndent() + description.hdskinsmod = '''\ + Seperate skin server for Mine Little Pony that also supports HD skins. + Access via Skin Manager key binding (default: F1) in the main menu.'''.stripIndent() + + mixinConfigs += [ + 'mixin.minelp.json', + 'mixin.hdskins.json' + ] } + afterEvaluate { dependencies { + // add mixin to the factory path + // use same version as liteloader def liteloader = project.plugins['net.minecraftforge.gradle.liteloader'] - def artifact = liteloader.artifact.libraries.collect{it.name}.find{it.contains 'mixin'} + def artifact = liteloader.artifact.libraries + .collect {it.name} + .find {it.contains 'mixin'} factory artifact } processor { + // tell the processor where the reobf file is options.reobfSrgFile = mixin.reobfSrgFile } } + jar { - from sourceSets.findAll { it.name != 'api' }*.output + from sourceSets.hdskins.output from litemod.outputs } +sourceJar { + // add hdskins sources + from sourceSets.hdskins.allSource +} task srgJar(type: Jar) { - from sourceSets.findAll { it.name != 'api' }*.output + from sourceSets.hdskins.output from litemod.outputs - classifier "mc${minecraft.version}-srg" + classifier "mc$minecraft.version-srg" baseName "mod-${project.name.toLowerCase()}" - extension 'litemod' } + reobf { srgJar { mappingType = 'SEARGE' @@ -91,6 +109,8 @@ reobf { mixin { defaultObfuscationEnv notch } + +// windows only task deploy(type: Copy, dependsOn: build) { from jar.archivePath into file("$System.env.APPDATA/.minecraft/mods") diff --git a/build.number b/build.number index d0f8a6b4..e9b83fcf 100644 --- a/build.number +++ b/build.number @@ -1,3 +1,3 @@ #Build Number for ANT. Do not edit! -#Mon Aug 22 11:16:46 EDT 2016 -build.number=246 +#Wed Aug 24 19:20:55 EDT 2016 +build.number=250 diff --git a/src/hdskins/java/com/voxelmodpack/hdskins/DynamicTextureImage.java b/src/hdskins/java/com/voxelmodpack/hdskins/DynamicTextureImage.java new file mode 100644 index 00000000..b4b05440 --- /dev/null +++ b/src/hdskins/java/com/voxelmodpack/hdskins/DynamicTextureImage.java @@ -0,0 +1,26 @@ +package com.voxelmodpack.hdskins; + +import java.awt.image.BufferedImage; + +import net.minecraft.client.renderer.texture.DynamicTexture; + +public class DynamicTextureImage extends DynamicTexture { + + private BufferedImage image; + + public DynamicTextureImage(BufferedImage bufferedImage) { + super(bufferedImage); + this.image = bufferedImage; + } + + public BufferedImage getImage() { + return image; + } + + @Override + public void deleteGlTexture() { + super.deleteGlTexture(); + this.image = null; + } + +} diff --git a/src/hdskins/java/com/voxelmodpack/hdskins/HDSkinManager.java b/src/hdskins/java/com/voxelmodpack/hdskins/HDSkinManager.java index 0f7a2e6a..a680f6d9 100644 --- a/src/hdskins/java/com/voxelmodpack/hdskins/HDSkinManager.java +++ b/src/hdskins/java/com/voxelmodpack/hdskins/HDSkinManager.java @@ -31,6 +31,7 @@ import com.mojang.authlib.properties.Property; import com.mojang.util.UUIDTypeAdapter; import com.mumfrey.liteloader.core.LiteLoader; import com.mumfrey.liteloader.util.log.LiteLoaderLogger; +import com.voxelmodpack.hdskins.resource.SkinResourceManager; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.IImageBuffer; @@ -38,10 +39,12 @@ import net.minecraft.client.renderer.ThreadDownloadImageData; import net.minecraft.client.renderer.texture.ITextureObject; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.client.resources.DefaultPlayerSkin; +import net.minecraft.client.resources.IResourceManager; +import net.minecraft.client.resources.IResourceManagerReloadListener; import net.minecraft.client.resources.SkinManager.SkinAvailableCallback; import net.minecraft.util.ResourceLocation; -public final class HDSkinManager { +public final class HDSkinManager implements IResourceManagerReloadListener { public static final HDSkinManager INSTANCE = new HDSkinManager(); private static final ResourceLocation LOADING = new ResourceLocation("LOADING"); @@ -55,11 +58,18 @@ public final class HDSkinManager { private Map> skinCache = Maps.newHashMap(); private List skinModifiers = Lists.newArrayList(); - private HDSkinManager() {} + private SkinResourceManager resources = new SkinResourceManager(); + + public HDSkinManager() {} public Optional getSkinLocation(GameProfile profile1, Type type, boolean loadIfAbsent) { if (!enabled) return Optional.absent(); + + ResourceLocation skin = this.resources.getPlayerTexture(profile1, type); + if (skin != null) + return Optional.of(skin); + // try to recreate a broken gameprofile // happens when server sends a random profile with skin and displayname Property prop = Iterables.getFirst(profile1.getProperties().get("textures"), null); @@ -85,7 +95,7 @@ public final class HDSkinManager { this.skinCache.put(profile.getId(), Maps. newHashMap()); } - ResourceLocation skin = this.skinCache.get(profile.getId()).get(type); + skin = this.skinCache.get(profile.getId()).get(type); if (skin == null) { if (loadIfAbsent) { skinCache.get(profile.getId()).put(type, LOADING); @@ -252,4 +262,9 @@ public final class HDSkinManager { skin.convertSkin(image, dest); } } + + @Override + public void onResourceManagerReload(IResourceManager resourceManager) { + this.resources.onResourceManagerReload(resourceManager); + } } diff --git a/src/hdskins/java/com/voxelmodpack/hdskins/gui/EntityPlayerModel.java b/src/hdskins/java/com/voxelmodpack/hdskins/gui/EntityPlayerModel.java index 54a011c6..41f172e4 100644 --- a/src/hdskins/java/com/voxelmodpack/hdskins/gui/EntityPlayerModel.java +++ b/src/hdskins/java/com/voxelmodpack/hdskins/gui/EntityPlayerModel.java @@ -8,6 +8,7 @@ import javax.imageio.ImageIO; import com.google.common.collect.Iterables; import com.mojang.authlib.GameProfile; +import com.voxelmodpack.hdskins.DynamicTextureImage; import com.voxelmodpack.hdskins.HDSkinManager; import com.voxelmodpack.hdskins.IMetaHandler; import com.voxelmodpack.hdskins.ImageBufferDownloadHD; @@ -73,7 +74,7 @@ public class EntityPlayerModel extends EntityLivingBase { return; } - this.localSkinTexture = new DynamicTexture(bufferedImage); + this.localSkinTexture = new DynamicTextureImage(bufferedImage); this.localSkinResource = this.textureManager.getDynamicTextureLocation("localSkinPreview", this.localSkinTexture); this.hasLocalTexture = true; } diff --git a/src/hdskins/java/com/voxelmodpack/hdskins/gui/GuiButtonSkins.java b/src/hdskins/java/com/voxelmodpack/hdskins/gui/GuiButtonSkins.java new file mode 100644 index 00000000..7c53a19b --- /dev/null +++ b/src/hdskins/java/com/voxelmodpack/hdskins/gui/GuiButtonSkins.java @@ -0,0 +1,22 @@ +package com.voxelmodpack.hdskins.gui; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiButton; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; + +public class GuiButtonSkins extends GuiButton { + + public GuiButtonSkins(int buttonId, int x, int y) { + super(buttonId, x, y, 20, 20, ""); + } + + @Override + public void drawButton(Minecraft mc, int mouseX, int mouseY) { + super.drawButton(mc, mouseX, mouseY); + + ItemStack stack = new ItemStack(Items.LEATHER_LEGGINGS, 1, 0); + Items.LEATHER_LEGGINGS.setColor(stack, 0x3c5dcb); + mc.getRenderItem().renderItemIntoGUI(stack, this.xPosition + 2, this.yPosition + 2); + } +} diff --git a/src/hdskins/java/com/voxelmodpack/hdskins/gui/GuiMetaHandler.java b/src/hdskins/java/com/voxelmodpack/hdskins/gui/GuiMetaHandler.java index 77b754a7..71b5ae4d 100644 --- a/src/hdskins/java/com/voxelmodpack/hdskins/gui/GuiMetaHandler.java +++ b/src/hdskins/java/com/voxelmodpack/hdskins/gui/GuiMetaHandler.java @@ -239,7 +239,7 @@ public class GuiMetaHandler extends GuiScreen implements IMetaHandler { if (prefs.has(HDSkinManager.METADATA_KEY)) { String meta = prefs.get(HDSkinManager.METADATA_KEY); Map data = Maps.newHashMap(); - for (String key : Splitter.on(',').split(meta)) { + for (String key : Splitter.on(',').omitEmptyStrings().trimResults().split(meta)) { if (prefs.has(key)) { data.put(key, prefs.get(key)); } diff --git a/src/hdskins/java/com/voxelmodpack/hdskins/gui/RenderPlayerModel.java b/src/hdskins/java/com/voxelmodpack/hdskins/gui/RenderPlayerModel.java index e3e09e27..7e85bf7b 100644 --- a/src/hdskins/java/com/voxelmodpack/hdskins/gui/RenderPlayerModel.java +++ b/src/hdskins/java/com/voxelmodpack/hdskins/gui/RenderPlayerModel.java @@ -43,16 +43,19 @@ public class RenderPlayerModel extends RenderLiving return false; } + public ModelPlayer getEntityModel(M entity) { + if (entity.metaHandler != null && entity.metaHandler.get("slim").isPresent()) { + boolean skinny = "true".equals(entity.metaHandler.get("slim").get()); + return skinny ? THIN : FAT; + } + return FAT; + + } + @Override public void doRender(M par1Entity, double par2, double par4, double par6, float par8, float par9) { - if (par1Entity.metaHandler != null && par1Entity.metaHandler.get("slim").isPresent()) { - boolean skinny = "true".equals(par1Entity.metaHandler.get("slim").get()); - this.mainModel = skinny ? THIN : FAT; - } else { - this.mainModel = FAT; - } - - ModelPlayer player = (ModelPlayer) this.getMainModel(); + ModelPlayer player = this.getEntityModel(par1Entity); + this.mainModel = player; Set parts = Minecraft.getMinecraft().gameSettings.getModelParts(); player.bipedHeadwear.isHidden = !parts.contains(EnumPlayerModelParts.HAT); diff --git a/src/hdskins/java/com/voxelmodpack/hdskins/mixin/MixinGuiMainMenu.java b/src/hdskins/java/com/voxelmodpack/hdskins/mixin/MixinGuiMainMenu.java new file mode 100644 index 00000000..a82bd655 --- /dev/null +++ b/src/hdskins/java/com/voxelmodpack/hdskins/mixin/MixinGuiMainMenu.java @@ -0,0 +1,32 @@ +package com.voxelmodpack.hdskins.mixin; + +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; + +import com.voxelmodpack.hdskins.gui.GuiButtonSkins; +import com.voxelmodpack.hdskins.gui.GuiSkins; + +import net.minecraft.client.gui.GuiButton; +import net.minecraft.client.gui.GuiMainMenu; +import net.minecraft.client.gui.GuiScreen; + +@Mixin(GuiMainMenu.class) +public class MixinGuiMainMenu extends GuiScreen { + + private static final int SKINS = 5000; + + @Inject(method = "initGui()V", at = @At("RETURN")) + private void onInit(CallbackInfo ci) { + this.buttonList.add(new GuiButtonSkins(SKINS, width - 50, height - 50)); + } + + @Inject(method = "actionPerformed(Lnet/minecraft/client/gui/GuiButton;)V", at = @At("RETURN")) + private void onActionPerformed(GuiButton button, CallbackInfo ci) { + if (button.id == SKINS) { + this.mc.displayGuiScreen(new GuiSkins()); + } + } + +} diff --git a/src/hdskins/java/com/voxelmodpack/hdskins/mod/LiteModHDSkinsMod.java b/src/hdskins/java/com/voxelmodpack/hdskins/mod/LiteModHDSkinsMod.java index ceea1e4f..9d204c61 100644 --- a/src/hdskins/java/com/voxelmodpack/hdskins/mod/LiteModHDSkinsMod.java +++ b/src/hdskins/java/com/voxelmodpack/hdskins/mod/LiteModHDSkinsMod.java @@ -14,6 +14,7 @@ import com.voxelmodpack.hdskins.gui.RenderPlayerModel; import com.voxelmodpack.voxelmenu.IPanoramaRenderer; import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.IReloadableResourceManager; public class LiteModHDSkinsMod implements HDSkinsMod { @Override @@ -38,6 +39,8 @@ public class LiteModHDSkinsMod implements HDSkinsMod { var5.printStackTrace(); } + IReloadableResourceManager irrm = (IReloadableResourceManager) Minecraft.getMinecraft().getResourceManager(); + irrm.registerReloadListener(HDSkinManager.INSTANCE); } @Override diff --git a/src/hdskins/java/com/voxelmodpack/hdskins/resource/SkinData.java b/src/hdskins/java/com/voxelmodpack/hdskins/resource/SkinData.java new file mode 100644 index 00000000..5745b8a7 --- /dev/null +++ b/src/hdskins/java/com/voxelmodpack/hdskins/resource/SkinData.java @@ -0,0 +1,22 @@ +package com.voxelmodpack.hdskins.resource; + +import java.util.List; +import java.util.UUID; + +import net.minecraft.util.ResourceLocation; + +class SkinData { + + List skins; +} + +class Skin { + + String name; + UUID uuid; + private String skin; + + public ResourceLocation getTexture() { + return new ResourceLocation("hdskins", String.format("textures/skins/%s.png", skin)); + } +} diff --git a/src/hdskins/java/com/voxelmodpack/hdskins/resource/SkinResourceManager.java b/src/hdskins/java/com/voxelmodpack/hdskins/resource/SkinResourceManager.java new file mode 100644 index 00000000..29c0f7b6 --- /dev/null +++ b/src/hdskins/java/com/voxelmodpack/hdskins/resource/SkinResourceManager.java @@ -0,0 +1,103 @@ +package com.voxelmodpack.hdskins.resource; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.Map; +import java.util.UUID; + +import javax.annotation.Nullable; + +import org.apache.commons.io.IOUtils; + +import com.google.common.collect.Maps; +import com.google.gson.Gson; +import com.google.gson.JsonParseException; +import com.mojang.authlib.GameProfile; +import com.mojang.authlib.minecraft.MinecraftProfileTexture.Type; +import com.mumfrey.liteloader.util.log.LiteLoaderLogger; + +import net.minecraft.client.resources.IResource; +import net.minecraft.client.resources.IResourceManager; +import net.minecraft.client.resources.IResourceManagerReloadListener; +import net.minecraft.util.ResourceLocation; + +public class SkinResourceManager implements IResourceManagerReloadListener { + + private Map uuidSkins = Maps.newHashMap(); + private Map namedSkins = Maps.newHashMap(); + private Map converted = Maps.newHashMap(); + + @Override + public void onResourceManagerReload(IResourceManager resourceManager) { + try { + uuidSkins.clear(); + namedSkins.clear(); + for (SkinThread loc : converted.values()) { + loc.deleteTexture(); + } + converted.clear(); + for (IResource res : resourceManager.getAllResources(new ResourceLocation("hdskins", "textures/skins/skins.json"))) { + try { + SkinData data = getSkinData(res.getInputStream()); + for (Skin s : data.skins) { + if (s.uuid != null) { + uuidSkins.put(s.uuid, s); + } + if (s.name != null) { + namedSkins.put(s.name, s); + } + } + } catch (JsonParseException je) { + LiteLoaderLogger.warning(je, "Invalid skins.json in %s", res.getResourcePackName()); + } + } + } catch (IOException e) { + // ignore + } + + } + + private SkinData getSkinData(InputStream stream) { + try { + return new Gson().fromJson(new InputStreamReader(stream), SkinData.class); + } finally { + IOUtils.closeQuietly(stream); + } + } + + @Nullable + public ResourceLocation getPlayerTexture(GameProfile profile, Type type) { + if (type != Type.SKIN) + // not supported + return null; + + Skin skin = getSkin(profile); + if (skin != null) { + ResourceLocation res = skin.getTexture(); + if (res != null) { + SkinThread conv = this.converted.get(res); + if (conv == null) { + // read and convert in a new thread + this.converted.put(res, conv = new SkinThread(res)); + } + // gotta stay in this thread to load it + if (conv.isReady()) { + conv.uploadSkin(); + } + return conv.getResource(); + } + } + return null; + } + + @Nullable + private Skin getSkin(GameProfile profile) { + Skin skin = this.uuidSkins.get(profile.getId()); + if (skin == null) { + skin = this.namedSkins.get(profile.getName()); + } + return skin; + } + +} diff --git a/src/hdskins/java/com/voxelmodpack/hdskins/resource/SkinThread.java b/src/hdskins/java/com/voxelmodpack/hdskins/resource/SkinThread.java new file mode 100644 index 00000000..1d5e55fa --- /dev/null +++ b/src/hdskins/java/com/voxelmodpack/hdskins/resource/SkinThread.java @@ -0,0 +1,69 @@ +package com.voxelmodpack.hdskins.resource; + +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.io.InputStream; + +import javax.annotation.Nullable; + +import org.apache.commons.io.IOUtils; + +import com.voxelmodpack.hdskins.DynamicTextureImage; +import com.voxelmodpack.hdskins.ImageBufferDownloadHD; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.texture.TextureUtil; +import net.minecraft.util.ResourceLocation; + +public class SkinThread implements Runnable { + + private ResourceLocation original; + private ResourceLocation updated; + private BufferedImage image; + + public SkinThread(ResourceLocation loc) { + this.original = loc; + new Thread(this).start(); + } + + @Override + public void run() { + image = new ImageBufferDownloadHD().parseUserSkin(getImage(original)); + } + + @Nullable + private static BufferedImage getImage(ResourceLocation res) { + try { + InputStream in = Minecraft.getMinecraft().getResourceManager().getResource(res).getInputStream(); + try { + return TextureUtil.readBufferedImage(in); + } finally { + IOUtils.closeQuietly(in); + } + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + + public ResourceLocation getResource() { + return this.updated; + } + + public void deleteTexture() { + Minecraft.getMinecraft().getTextureManager().deleteTexture(updated); + } + + public boolean isReady() { + return image != null; + } + + public void uploadSkin() { + + ResourceLocation conv = new ResourceLocation("hdskins-converted", original.getResourcePath()); + Minecraft.getMinecraft().getTextureManager().loadTexture(conv, new DynamicTextureImage(image)); + updated = conv; + + image = null; + } +} diff --git a/src/hdskins/resources/mixin.hdskins.json b/src/hdskins/resources/mixin.hdskins.json index 5dbf902e..ac5a2aba 100644 --- a/src/hdskins/resources/mixin.hdskins.json +++ b/src/hdskins/resources/mixin.hdskins.json @@ -4,6 +4,7 @@ "package": "com.voxelmodpack.hdskins.mixin", "refmap": "mixin.hdskins.refmap.json", "mixins": [ + "MixinGuiMainMenu", "MixinImageBufferDownload", "MixinPlayerInfo", "MixinSkullRenderer" diff --git a/src/main/java/com/brohoof/minelittlepony/MineLittlePony.java b/src/main/java/com/brohoof/minelittlepony/MineLittlePony.java index 9207b009..c3d8eaf1 100644 --- a/src/main/java/com/brohoof/minelittlepony/MineLittlePony.java +++ b/src/main/java/com/brohoof/minelittlepony/MineLittlePony.java @@ -17,7 +17,6 @@ import com.voxelmodpack.hdskins.HDSkinManager; import com.voxelmodpack.hdskins.gui.GuiSkins; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiMainMenu; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.resources.IReloadableResourceManager; import net.minecraft.client.settings.KeyBinding; @@ -40,7 +39,6 @@ public class MineLittlePony { private static final String SKIN_SERVER_URL = "minelpskins.voxelmodpack.com"; private static final String GATEWAY_URL = "minelpskinmanager.voxelmodpack.com"; private static final KeyBinding SETTINGS_GUI = new KeyBinding("Settings", Keyboard.KEY_F9, "Mine Little Pony"); - private static final KeyBinding SKIN_MANAGER = new KeyBinding("Skin Manager", Keyboard.KEY_F1, "Mine Little Pony"); private static MineLittlePony instance; @@ -54,7 +52,6 @@ public class MineLittlePony { void init() { LiteLoader.getInput().registerKeyBinding(SETTINGS_GUI); - LiteLoader.getInput().registerKeyBinding(SKIN_MANAGER); this.config = new PonyConfig(); this.ponyManager = new PonyManager(config); @@ -104,11 +101,9 @@ public class MineLittlePony { minecraft.displayGuiScreen(new PonySettingPanel()); } - boolean pressed = minecraft.currentScreen instanceof GuiMainMenu - && Keyboard.isKeyDown(SKIN_MANAGER.getKeyCode()); boolean skins = minecraft.currentScreen instanceof GuiSkins && !(minecraft.currentScreen instanceof GuiSkinsMineLP); - if (pressed || skins) { + if (skins) { minecraft.displayGuiScreen(new GuiSkinsMineLP(ponyManager)); } HDSkinManager.INSTANCE.setEnabled(config.hd); diff --git a/src/main/java/com/brohoof/minelittlepony/Pony.java b/src/main/java/com/brohoof/minelittlepony/Pony.java index 22ede332..6aa1a6c8 100644 --- a/src/main/java/com/brohoof/minelittlepony/Pony.java +++ b/src/main/java/com/brohoof/minelittlepony/Pony.java @@ -4,8 +4,6 @@ import java.awt.image.BufferedImage; import java.io.IOException; import java.util.List; -import javax.imageio.ImageIO; - import com.brohoof.minelittlepony.model.PMAPI; import com.brohoof.minelittlepony.model.PlayerModel; import com.brohoof.minelittlepony.util.MineLPLogger; @@ -17,12 +15,15 @@ import com.google.common.collect.Lists; import com.mojang.authlib.GameProfile; import com.mumfrey.webprefs.WebPreferencesManager; import com.mumfrey.webprefs.interfaces.IWebPreferences; +import com.voxelmodpack.hdskins.DynamicTextureImage; import com.voxelmodpack.hdskins.HDSkinManager; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.AbstractClientPlayer; import net.minecraft.client.renderer.ThreadDownloadImageData; import net.minecraft.client.renderer.texture.ITextureObject; +import net.minecraft.client.renderer.texture.TextureUtil; +import net.minecraft.client.resources.IResource; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.ResourceLocation; @@ -57,6 +58,7 @@ public class Pony { public void invalidateSkinCheck() { this.skinChecked = false; + metadata = new PonyData(); } public void checkSkin() { @@ -119,7 +121,8 @@ public class Pony { public BufferedImage getBufferedImage(ResourceLocation textureResourceLocation) { BufferedImage skinImage = null; try { - skinImage = ImageIO.read(Minecraft.getMinecraft().getResourceManager().getResource(textureResourceLocation).getInputStream()); + IResource skin = Minecraft.getMinecraft().getResourceManager().getResource(textureResourceLocation); + skinImage = TextureUtil.readBufferedImage(skin.getInputStream()); MineLPLogger.debug("Obtained skin from resource location %s", textureResourceLocation); // this.checkSkin(skinImage); } catch (IOException var6) { @@ -134,6 +137,8 @@ public class Pony { MineLPLogger.debug(e, "Successfully reflected downloadedImage from texture object"); // this.checkSkin(skinImage); } + } else if (e2 instanceof DynamicTextureImage) { + skinImage = ((DynamicTextureImage) e2).getImage(); } } catch (Exception var5) { diff --git a/src/main/java/com/brohoof/minelittlepony/PonyData.java b/src/main/java/com/brohoof/minelittlepony/PonyData.java index ada7ba83..253f4f28 100644 --- a/src/main/java/com/brohoof/minelittlepony/PonyData.java +++ b/src/main/java/com/brohoof/minelittlepony/PonyData.java @@ -26,7 +26,7 @@ public class PonyData { .put(0x534b76, PonySize.TALL) .build(); - private PonyRace race = PonyRace.EARTH; + private PonyRace race; private TailLengths tailSize = TailLengths.FULL; private PonyGender gender = PonyGender.MARE; private PonySize size = PonySize.NORMAL; diff --git a/src/forge/java/com/brohoof/minelittlepony/forge/MLPForge.java b/src/main/java/com/brohoof/minelittlepony/forge/MLPForge.java similarity index 100% rename from src/forge/java/com/brohoof/minelittlepony/forge/MLPForge.java rename to src/main/java/com/brohoof/minelittlepony/forge/MLPForge.java diff --git a/src/forge/java/com/brohoof/minelittlepony/forge/PonyArmors.java b/src/main/java/com/brohoof/minelittlepony/forge/PonyArmors.java similarity index 100% rename from src/forge/java/com/brohoof/minelittlepony/forge/PonyArmors.java rename to src/main/java/com/brohoof/minelittlepony/forge/PonyArmors.java diff --git a/src/main/java/com/brohoof/minelittlepony/hdskins/gui/RenderPonyModel.java b/src/main/java/com/brohoof/minelittlepony/hdskins/gui/RenderPonyModel.java index 669ca2b2..b0551fd8 100644 --- a/src/main/java/com/brohoof/minelittlepony/hdskins/gui/RenderPonyModel.java +++ b/src/main/java/com/brohoof/minelittlepony/hdskins/gui/RenderPonyModel.java @@ -10,6 +10,7 @@ import com.brohoof.minelittlepony.model.PlayerModel; import com.google.common.base.Optional; import com.voxelmodpack.hdskins.gui.RenderPlayerModel; +import net.minecraft.client.model.ModelPlayer; import net.minecraft.client.renderer.entity.RenderManager; public class RenderPonyModel extends RenderPlayerModel { @@ -19,8 +20,7 @@ public class RenderPonyModel extends RenderPlayerModel { } @Override - protected void renderModel(EntityPonyModel playermodel, float par2, float par3, float par4, float par5, float par6, float par7) { - this.bindEntityTexture(playermodel); + public ModelPlayer getEntityModel(EntityPonyModel playermodel) { Pony thePony = MineLittlePony.getInstance().getManager().getPonyFromResourceRegistry(this.getEntityTexture(playermodel)); thePony.invalidateSkinCheck(); thePony.checkSkin(); @@ -46,9 +46,9 @@ public class RenderPonyModel extends RenderPlayerModel { // TODO small arms PlayerModel pm = thePony.getModel(true, false); - this.mainModel = pm.getModel(); pm.apply(thePony.metadata); - this.mainModel.render(playermodel, par2, par3, par4, par5, par6, par7); + + return pm.getModel(); } } diff --git a/src/main/resources/assets/hdskins/skins/applebloom.png b/src/main/resources/assets/hdskins/skins/applebloom.png new file mode 100644 index 0000000000000000000000000000000000000000..975504b274b61d7b8e591c6db28b8c84679c1ce7 GIT binary patch literal 3497 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 XYL$E>Q#2fa00000NkvXXu0mjfDci7U literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hdskins/skins/applejack.png b/src/main/resources/assets/hdskins/skins/applejack.png new file mode 100644 index 0000000000000000000000000000000000000000..9d992e9a2e92d120a74cf28abce10193a3e1ecfb GIT binary patch literal 3624 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 Q3rvd)p00i_>zopr06tetd;kCd literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hdskins/skins/berrypunch.png b/src/main/resources/assets/hdskins/skins/berrypunch.png new file mode 100644 index 0000000000000000000000000000000000000000..0fba7944cac44894adde6a6f705a0abb07745ae6 GIT binary patch literal 1029 zcmV+g1p51lP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FQQ01FQRlKBIr00007bV*G`2ipr8 z3=AAi_bPz^00V_dL_t(&-sMS-p#TNBQodr%DTwU5>0c6kL8e6nhz}vD1u`vG zIA_mxV8y;Zu%E8fHfON zRTcD-DWuVV-(?Kz19TnSHnYOICwy)G3gOrEK{oPfy&Y=SJ^U%w>HC z<~z1%jn@UQr|*EbT}uZ5z|GY++Bkk3>!C*TU++t=7nlw9dp^cmIzrM1s24Wjq!+Ut zV*r5u8;<}0FQ;w+07kMC*i4seCMQZ>k1tq41o5f{mn-EllAX{BG}|#o`R!1EQegw= zvCJ^jEf7w6apl-BMzRy2lwxao2LSL&{*EW>&p;^!A;h!@^(4>UA7(+=vk~}WFhmg7 zYz(fZNG6t|R&<7G6WmOfak;Hu-7Dn3PkzmbAI;K!k~s-g~1_*(4+et6VVWx$DIP^zXi*Ljy3NoO_^i9zG5D9G}B z<=$c}a0}t2mk1g&trZ&pTzcL|_yUNEY3VT36^*-|xE&b9M+mXRBufSGw?Uf#jR-sO zSvm_CQLT|+Cq7{l)a!P>v(_thodlaq{4_FJ6ZI4i0L)BIVIgf@edS7dM^A&h3D3;r z6xxGPd@Zcu!ug{@c^Q&g5cK-dEby@8ul9Vy{K72Zt=>@@xY5kflG68MTo00000NkvXXu0mjf_880n literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hdskins/skins/bigmac.png b/src/main/resources/assets/hdskins/skins/bigmac.png new file mode 100644 index 0000000000000000000000000000000000000000..dea7e140680b643db0f4bc3088bb169554fd6ab1 GIT binary patch literal 844 zcmV-S1GD^zP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyl5 z1_vX}2Zk5`00PWOL_t(&-tAaFNE=Zc{+>n@Gk6`swcKzSlq`i(D<_KB(ZQk6QYjtm zWan-cp{r0jbhldv2Wi9(4o)3}v_#OYQ-@0-rI)4Y5Q!Y}I+*wR@^b%j_mW)D502dZ z?&ZDT_r2er$B~QA_v!efGeRk)XAhoY_Vg2h0Jo^qYQ=$J>HvVtwq#Q|Hfd zF}hjd_tlC60DLV!i2jT{aY&N&Gw<(wxdmt-goI91tvI+1Gm?|tLMG2hGCPA|>fElv zhs_B;=YXXBT!vfJX_T54 zngSE$GQV$Hmai=dRFh|OvO}C4v0|Eqra<9f8I*R4Nhw9)U^$iK#kpBskqat&4izA0 zxFCdJ>12W1mQEHx2tm$pF--94D!wUD-(P|D_z1^yC7=}mU+t?9I-Ya5?E>?B?68So zm^#S>k+1KsK%1ZE_St;?inL&B8=FEAylQ~hUSoBEQ`_cZB*jFzOnNDRThu$w5R_8< z`dRajfFR;xBn%r`X9(IB0rDU@A{c2o4SI#Jh!FjgeFK2STFv+W*=#o6QJ9hTT2RKv z#lHZ6_0m+|b~dVijYdQ5Q8-KpCPtc(=_dE%3L&Bwk&(nd(zGnPx;2Tz?QV-`J literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hdskins/skins/blockwork.png b/src/main/resources/assets/hdskins/skins/blockwork.png new file mode 100644 index 0000000000000000000000000000000000000000..863bab46f7852019756ddd4bf31c47554b0bbb5b GIT binary patch literal 1235 zcmV;^1T6cBP)qOlvT*kyGO(bc z?L#sUjG(2ghl(g#wTIZSqD)XyiWD)r?HM|^*=g?FySsOnqlm zjIsN)*%?Ne|KcZO?6Md2_xDHX!S@D(L8GZQ`1P!wJ$=8?Nk-*W_Q0uz^-kyq82}Q0 z=)^tP;8~~y@XWi0jcw+xGx{R;G6tyg-D4QJa6l=XI<*8Ks?;kg^vyQ_I;u7}0>KQx z`+^1-{n-wMMSIy0P#A9kWCczFK=7ENEC372F5TA;&r5^i;$jUgpgho?8UTSUQ0RYX z03gx48z2CheVVLTtROEh&u{^BIZWp^75#Am(dWHO_OQy#Bv}A&{-ZVkyy<=cX!?92 zYr#4zSFnm{8qPl7`Gd{@mQ7X+AOQFdi~;UdIZ6uk{fXXX9tPR27^904r6|g_7qfHiVv8jJ00JMO}Rv98&Wj0{Z0;rD4 z;~^mez&>OUu-ps;J%d+qUyu+0QPADzAy(w%N+AQF5)=z$UOYZ0+dx^m0KE{!lW_h% zmI2AyngK|(UxFx_zqom_4FEe#r3EAkKxX=~oud)}3FZgWxnnI0NVI%z&z;Juvu0+o zay)$CX^T!?14XqgQe*JJ0lYp|6{Sr)pWpnFrqs@Fth`%!mh3^wi38K z?x=R%p>CG91%NkwD*$-@7DX*?3>eE*Q%$bp0A%A!8UU*Rh(}HSyp01P0B8m6n---M z!0^bh@(Y(O3*bi_4*(uQGAuymqEwbJ08y~G0-#UwUs_}b9vVzz^JQr~KntNnF+y}B zSzy2z;Pd&Ss>HHzIIN5*mKID-F06&A`XJ|Bk{@cE|DT-zG zvF$(U0-^{$np3o=qbmX+NM_>4u3&djqty|aG)hcc0_xmR| x0F`>#cL}j<%7g3R@pvE<3Q4d3ybB~7z%RjDdFk7VsR;l8002ovPDHLkV1g8&F#G@j literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hdskins/skins/bonbon.png b/src/main/resources/assets/hdskins/skins/bonbon.png new file mode 100644 index 0000000000000000000000000000000000000000..08f8f17fa2fb11aa214fb22db385f69215c32845 GIT binary patch literal 746 zcmVPx#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBU!JxN4CRA@u(nM-QJFc5~5Rqqh!y6fN@6takM>AnXj^fbLe=@t5* zS@aO0bXB}5^aj~wrFtCy?sP1B+O72UB-MH)I*eM z`Z;?$&&s9JpVzYF!|jKT9}b5+}Jv$wZDG$G`@UcVS~TP#`JRF}`_Lq8u!W3?b@ zzBJ~q-V0;)D^r#MV7LOvZ}J8xF91R~&DU@RAe8{MOs)VjE~E-H06g*pVY$4ox5`N< zz$Se_pmK5rgp59^O;Z4*-v(lG0LPXCxZ_kOU=(?%U^IZx4mZ}TjzFH|s7}t}MxWgO z03q9vAZ?{wXQlxt2)7=GU47bn>;B4FE_HI8M;0KcjXRAoQWZAGX&(QUzK0PenWLk?5a;iRo?D1fOPhx6DbTmd{sU@JHSpbuhPdH!tZ{(p`8 z?SP0+5q++nw!}C9z`?U>Qf0OUIX zg4+3sq5^=!yzB$a_gI^Ky@7TaDI?Cefp6zr-fy!n0_aP?MFA(h1tg$j+6FdTWSc4o zO#u;r_;ig5U>`&-ncC-=xCJc1h&ez&iAhi+5Kn=Qe}7z(jL#&ez1zh;O#q$023;1= zjP%*>VqXNH5jgc6@C(u?K&e`nw&nl;002ovPDHLkV1fVu03UQkSaeNqWMymsO=)gr cAWUg=bZliHP;YK|FHU85AW&~^dAgQgLlIv(h5!Hn literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hdskins/skins/braeburn.png b/src/main/resources/assets/hdskins/skins/braeburn.png new file mode 100644 index 0000000000000000000000000000000000000000..a8b7e8eae9d7c39248ac16e488160c519a4c8d9f GIT binary patch literal 3734 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 A+yDRo literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hdskins/skins/cadence.png b/src/main/resources/assets/hdskins/skins/cadence.png new file mode 100644 index 0000000000000000000000000000000000000000..3ce17fd0e21f1ae87e5a6a68c05ce78100dc25f0 GIT binary patch literal 1439 zcmV;Q1z`G#P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#00007bV*G`2iyn; z4hR}Ms$28`00kdOL_t(&-p!a@Y!p=#$A5Qbm$npQt<*>X6|svX6a+~_0>#7^k`g`= z#gu|YOpC?`b^SFS(n*bDEdRHV{f6AdVGTHY^xOjlh8%KqE>IeW~KT)jh z&4R3~tHcLHK|Tj7rXvdSvkpSK>$hyYNz2BYw&vi7rODui6+-&Vq@-^I&%OMt0^qrq zk2l5Nx>nXQe|Z%ES2`M)clgW5V~`O8VxN&Iht5dPy?lPUdY#>BA(P6!&ME+@uJ2k| zJ0^Cu<5l|@5TBH%uLjD#BG6ZpRRGNOFQvTmVT&+<1`6M?Sp&jFXS?`x?Mhci!fV?_ zaH3i7x2*{azS7mf=}$kh{}ITw-RUxgY-%uiB3%2c2alsw0JuA9WiYr88I(XB06*;i zjKRML0oXTdw=@icjnjruoel!Q=&lM0{+;IlC_XqF44tj6ldP(GK6L={DogQq_NV>b z{o3p0(c%F-j#lA5jRZLT-C6*aE&^wP6KM!Ee*lS2OMf19kLgTuf-WUOMEj%S)RH>!t1LxINuX;0fXy|H9RA}&Way9V24T!`83PD_`=SZRBG>Xr%rFe3 z5C|zzL&ZxWK*ltJhLN5I_&fWldFv&UPBDna#VHVeWp&w$A;A0|VQ|sg7f*i=gZ28MN>GmFijBlE(folQDFcq1{$=14U6#l<_rw z++WOnu8`GlyEycFL(-UC*4R^yTdS3+GU4YN=a5oHfY|j*NKBn7#rsMV-WSUP;qUBE z>Ce<&FS@JP{$sB8ROEX0xoMVSm~^JlYUS*Q7Z3;p&@>JA{K+U&3MgtUiPGP7k^=+V zN3FMcdV@^4571r3sJ&j)UazeH>=)4~?|Q|Z`__c(w=Rd6pqu0MIK_vVkdy&xua`e( zjBY~<>L!UqbN1kd6$0Ra@3$mnl>XZm+rUefU#jl|Qfh=sOUnW1@9#+|u?yYD6UG-W zTbC6fOgF!bIzcN$qwy91mXx)R`u=?1nhDuzrv$+LAe&3eB)@S1C@DNU?rBiJzL~}z zlZN%>I{Qzyk6C9)SvxORG_k7cE|uOsiuOugThK$(k-ChEACun)UKyL;c%p6FG#IPk z=lj--qI~@4T$&aX1m`?t>1~|`!ytsk?tJ%}IPud_RW+vo_yQ_U%|Xz@+s1$$zJY|N zz~W`=xX^u^S1R<-fMVnn0KZ>F4@yg)F$3z?H&ZhCiBMy1zPn#IvyBVgYa=`Vg?lwG zZmP!juQ{x|fA%taD9;H1Lji%q@38c?z7g8t8;FRS3BvIR8wwtDaH9Qa&NUz~BG5I} z(q{}n(~&xE4`1W<@U=0DzHnw63um^OYMT#R-rK~9_M_~%T%I!khW!dbziR1i5yA0} zvZf<-)UR)jUN2})={|cjz=;;L_6Y&FJ+u^nN3iehYizNZ7M@Oiz7Yj2=(O~XM2kmy zYpN*W?1bw2(#_8o5a^m>=^bG-;|Gg)v?DeH7_#ofvQcm*`T2c65)6RfrzG@__yw&d tt=PUhHWvIRyE~p~e!~G3E#R>9{{ipIsd94D*lqv-002ovPDHLkV1k&@wH5#X literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hdskins/skins/caramel.png b/src/main/resources/assets/hdskins/skins/caramel.png new file mode 100644 index 0000000000000000000000000000000000000000..f2bfc3152b4246fb2822f70991b30b24b251ba3b GIT binary patch literal 3387 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 BJ>mcW literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hdskins/skins/celestia.png b/src/main/resources/assets/hdskins/skins/celestia.png new file mode 100644 index 0000000000000000000000000000000000000000..10cd941466df96d3d747bfce71b28d1d0d1ec9a9 GIT binary patch literal 3991 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 bOlfpP;YK|x|Ux<6ERf9 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hdskins/skins/cranky.png b/src/main/resources/assets/hdskins/skins/cranky.png new file mode 100644 index 0000000000000000000000000000000000000000..37b74f8a9cc4bdd141fc074d8c891050a2673e54 GIT binary patch literal 3368 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 U0EzU*-~a#s07*qoM6N<$g7A}I-T(jq literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hdskins/skins/fleetfoot.png b/src/main/resources/assets/hdskins/skins/fleetfoot.png new file mode 100644 index 0000000000000000000000000000000000000000..343abe357f2067f83d5ec37b85a50cc51f1304d7 GIT binary patch literal 558 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 LNkvXXu0mjfdV5(X literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hdskins/skins/luna.png b/src/main/resources/assets/hdskins/skins/luna.png new file mode 100644 index 0000000000000000000000000000000000000000..b01d2fe3e649dac8826238536bf30d79e4d5d278 GIT binary patch literal 3716 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 AH2?qr literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hdskins/skins/mrcake.png b/src/main/resources/assets/hdskins/skins/mrcake.png new file mode 100644 index 0000000000000000000000000000000000000000..c661b9c05f862bab2ce8cbd2e8a54c38a1e76a58 GIT binary patch literal 3587 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hdskins/skins/octavia.png b/src/main/resources/assets/hdskins/skins/octavia.png new file mode 100644 index 0000000000000000000000000000000000000000..7b20d4ddb589e4eb93d43864478cf1935ab84422 GIT binary patch literal 3565 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hdskins/skins/pinkiepie.png b/src/main/resources/assets/hdskins/skins/pinkiepie.png new file mode 100644 index 0000000000000000000000000000000000000000..61085b12bf074fb134630e874bfd13e5a866ebab GIT binary patch literal 3553 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hdskins/skins/shiningarmor.png b/src/main/resources/assets/hdskins/skins/shiningarmor.png new file mode 100644 index 0000000000000000000000000000000000000000..f8f3dd248562aceff02a900e960845dfd8b3a284 GIT binary patch literal 826 zcmV-A1I7G_P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyn( z5HKjkgviGL00O#6L_t(&-tAa1Y!Xoz{vIJ>NQCGh!7_NAz`+{Z6lRH06PGqIF-~IC zn79a&Y-~6f=xQ8Tt!dhU#iY^21)5aTMZ$8=K}&Qf0TNQW{0{V;hXwAHJB}mrC71C2 z7v6o}|Nj4f|2wu<_(2Pa5F;Y`x_A%opS?u($s+7R=*~KBCSm}9?Lr9v&}laS03NR& zKR?`OzG$A#c)S3ByU%X{05)@5XqJ=AXni80Ve_tqM2GEHUI$Wx4UB% zKFazYuitVWu0a#R5#z!r>x)RS+yQh908p<)z#?f|!hh8Fh*Yt}0jjDJ=Nz1KsH&clK$YxR#Zx5<7D;37@-<8nF0uRKu|vGx2}Ten zfW81)Sqn}?fL-FvqE)Y1Q-_Ss$*~tg#@J~hpjEG7HMN56LJ6&UO{y30Mf0?pTG0xq z{(mk>lF;+~cRWrs%Sm?BX`|C_Xv8;jThii<3aDE~e5Oj+Km2QZx<|NlwmWB603CJO zn&4(R$z)FeeHW=uAL$6lR0+igOL(ocG~4c@C8UBaWU6Fa6v)^Hi5Km2zy86{0sDtQ zFc?HQ9M)`NtdELGI6($Ne81h7N`W_50Thef9)WWJK=F7yO&HWYx@8yOoI@O$`rl54 zKKDiC?-xnZ4p0(wJxs zXp~+|Ne!@Av_G~sWkt~96mY`MPb>wTB!1Qh%p5RtKz|3YKpZR(cPwcu`7t7*6N`z9 zg+YsH*UiujKclbC3>R!Kn&**ym2WFNM>XK9uZvX%Q07*qoM6N<$ Ef~{X}$^ZZW literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hdskins/skins/silverspoon.png b/src/main/resources/assets/hdskins/skins/silverspoon.png new file mode 100644 index 0000000000000000000000000000000000000000..c70a857bc7656852cf408b9e06e33f13a734e146 GIT binary patch literal 812 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 V<(UJU9&P{t002ovPDHLkV1g@sz;FNn literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hdskins/skins/sweetiebelle.png b/src/main/resources/assets/hdskins/skins/sweetiebelle.png new file mode 100644 index 0000000000000000000000000000000000000000..3f414537eb9f11d169531757ce27e235a7ca0c9e GIT binary patch literal 3463 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hdskins/skins/trixie.png b/src/main/resources/assets/hdskins/skins/trixie.png new file mode 100644 index 0000000000000000000000000000000000000000..42b7c75a5b31ff9d41547ff3f490d814ffe2c4a2 GIT binary patch literal 1098 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 Hu0mjfCj_27 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hdskins/skins/twilightsparkleoriginal.png b/src/main/resources/assets/hdskins/skins/twilightsparkleoriginal.png new file mode 100644 index 0000000000000000000000000000000000000000..027086e99d2d7e846b9b6aae0d461f836f86f0d8 GIT binary patch literal 3481 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 Hu0mjfCj_27 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hdskins/skins/twist.png b/src/main/resources/assets/hdskins/skins/twist.png new file mode 100644 index 0000000000000000000000000000000000000000..6d838686aeb9e9e5435032f5799e6b399658bcc4 GIT binary patch literal 769 zcmV+c1OEJpP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyn( z3lar4nw|py00MzYL_t(&-tAYvZ__{+eP>zJie#r){h>@mQ5!{MfwV{nrizKF0|ShR z{~$9HLnXFO{0H<8fDtJ~46vXEF%Th&qI9TALuEC#6s6NKgmW*h&*vnz6)E=?U%pe$ ze((F<_u1s~-Cer0`;7nq{rH4p`!%wJSKjs4PR@Wm7>@lec3Pxcs!=}9@5#=m?h%dJ zCzJjmEdhA)qID2)M3C{(ggfR&y3D!r8A&H+0D!+{zr%V6WtOMTf(KQXkJU?g$ zJ|5Qs(+N;L8(r_4=?K8iW%r55Zn4uMVK%S_Lv%|unvMW`mQpePRrdMvw+F+qbr#Ts z{tU@ZqNtvY^?@+LPR>AZ0vv4KE;cWr{2RGjW0QR;(&%ILs!2YjCL?m9+o1`vz zi-P;%1`1ybs8lLA`S}R|uvA_4V`-3QgzDu6efgjCh;W+%03WND8&pJ|*+*o7ZmC9f zX_HtraPa&MF7I7L#vquy;DSGpRWMXhZc!D1^P}8d3){JdRE8;NCLbKf*)F1+(YvA8end~!+K)mvqErk z@axD5=sUe|A?5^O&$nEBI8jAuakD?qS)b+kG%PsuX-jRMFw67lamq_H4d$i%d0ccq zQ$8k}G7E13C4dq@37`Z}0w@8L07?KQz@p+GI|^67Z2@8600000NkvXXu0mjfaUD)C literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hdskins/skins/vinylscratch.png b/src/main/resources/assets/hdskins/skins/vinylscratch.png new file mode 100644 index 0000000000000000000000000000000000000000..81ae9030edd2080ae495ac75e7531b03246d1092 GIT binary patch literal 3519 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 tiemzf2{cS literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hdskins/skins/wonderbolt.png b/src/main/resources/assets/hdskins/skins/wonderbolt.png new file mode 100644 index 0000000000000000000000000000000000000000..73e3bbac8b5bea2710ccfe3bae1047ca20a368f5 GIT binary patch literal 3626 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 wU-W!-ycO1ywH;)V0