From 35432b979110b9ce8b37251b4806480dfc0a05a3 Mon Sep 17 00:00:00 2001 From: xfl03 Date: Sat, 22 Aug 2015 15:42:04 +0800 Subject: [PATCH] Double layer skin support for 1.8- Use Alex model in 1.8 --- .../idv/jlchntoz/CustomSkinLoader.java | 10 +++-- .../minecraft/src/ImageBufferDownload.java | 10 ++++- .../idv/jlchntoz/CustomSkinLoader.java | 10 +++-- .../client/renderer/ImageBufferDownload.java | 37 +++++++++++++++---- .../idv/jlchntoz/CustomSkinLoader.java | 10 +++-- .../client/renderer/ImageBufferDownload.java | 10 ++++- .../idv/jlchntoz/CustomSkinLoader.java | 10 +++-- .../client/resources/SkinManager.java | 28 +++++++------- .../jlchntoz/tweaker/ClassTransformer.java | 3 +- .../idv/jlchntoz/tweaker/Tweaker.java | 18 ++++++--- 10 files changed, 97 insertions(+), 49 deletions(-) diff --git a/1.6.4-mcp811/src/minecraft/idv/jlchntoz/CustomSkinLoader.java b/1.6.4-mcp811/src/minecraft/idv/jlchntoz/CustomSkinLoader.java index 43afae7..6283362 100644 --- a/1.6.4-mcp811/src/minecraft/idv/jlchntoz/CustomSkinLoader.java +++ b/1.6.4-mcp811/src/minecraft/idv/jlchntoz/CustomSkinLoader.java @@ -20,12 +20,12 @@ import com.google.gson.reflect.TypeToken; /** * Custom skin loader mod for Minecraft. * - * @version 12th Revision 6th Subversion 2015.8.8 + * @version 12th Revision 7th Subversion 2015.8.22 * * @author (C) Jeremy Lam [JLChnToZ] 2013 & Alexander Xia [xfl03] 2014-2015 */ public class CustomSkinLoader { - public final static String VERSION="12.6"; + public final static String VERSION="12.7"; public final static String DefaultSkinURL = "http://skins.minecraft.net/MinecraftSkins/*.png"; public final static String DefaultCloakURL = "http://skins.minecraft.net/MinecraftCloaks/*.png"; @@ -69,8 +69,10 @@ public class CustomSkinLoader { return getPlayerSkinStream(true, m.group(3)); }else{ m = optifineCapeURLPattern.matcher(path); - if(m.matches())//Optifine Cape + if(m.matches()){//Optifine Cape + logger.info("Ignore Optifine Cape."); return null;//Not Load This + } } } return getStream(path, false); // Neither skin nor cloak... @@ -116,7 +118,7 @@ public class CustomSkinLoader { C.setDoInput(true); C.setDoOutput(false); C.connect(); - logger.info("RC: "+C.getResponseCode()); + logger.info("Response Code: "+C.getResponseCode()); int respcode = C.getResponseCode() / 100; if (respcode != 4 && respcode != 5) { // Successful to get skin. if(alreadyCached && C.getLastModified()==cacheFile.lastModified()){ diff --git a/1.6.4-mcp811/src/minecraft/net/minecraft/src/ImageBufferDownload.java b/1.6.4-mcp811/src/minecraft/net/minecraft/src/ImageBufferDownload.java index 919f23c..1317bc9 100644 --- a/1.6.4-mcp811/src/minecraft/net/minecraft/src/ImageBufferDownload.java +++ b/1.6.4-mcp811/src/minecraft/net/minecraft/src/ImageBufferDownload.java @@ -21,9 +21,15 @@ public class ImageBufferDownload implements IImageBuffer { this.imageWidth = par1BufferedImage.getWidth();//Default: 64 this.imageHeight = par1BufferedImage.getHeight();//Default: 32 - BufferedImage var2 = new BufferedImage(this.imageWidth, this.imageHeight, 2); + BufferedImage var2 = new BufferedImage(this.imageWidth, this.imageWidth / 2, 2); Graphics var3 = var2.getGraphics(); - var3.drawImage(par1BufferedImage, 0, 0, (ImageObserver)null); + if(imageWidth == imageHeight){ + var3.drawImage(par1BufferedImage, 0, 0, this.imageWidth, this.imageWidth / 2, 0, 0, this.imageWidth, this.imageWidth / 2, (ImageObserver)null); + var3.drawImage(par1BufferedImage, 0, this.imageWidth / 4, this.imageWidth, this.imageWidth / 2, 0, this.imageWidth / 2 , this.imageWidth, this.imageWidth / 4 * 3, (ImageObserver)null); + imageHeight/=2; + }else{ + var3.drawImage(par1BufferedImage, 0, 0, (ImageObserver)null); + } var3.dispose(); this.imageData = ((DataBufferInt)var2.getRaster().getDataBuffer()).getData(); //this.setAreaOpaque(0, 0, 32, 16); diff --git a/1.7.10-mcp908/src/minecraft/idv/jlchntoz/CustomSkinLoader.java b/1.7.10-mcp908/src/minecraft/idv/jlchntoz/CustomSkinLoader.java index d1f60b8..f9ebfab 100644 --- a/1.7.10-mcp908/src/minecraft/idv/jlchntoz/CustomSkinLoader.java +++ b/1.7.10-mcp908/src/minecraft/idv/jlchntoz/CustomSkinLoader.java @@ -20,12 +20,12 @@ import com.google.gson.reflect.TypeToken; /** * Custom skin loader mod for Minecraft. * - * @version 12th Revision 6th Subversion 2015.8.8 + * @version 12th Revision 7th Subversion 2015.8.22 * * @author (C) Jeremy Lam [JLChnToZ] 2013 & Alexander Xia [xfl03] 2014-2015 */ public class CustomSkinLoader { - public final static String VERSION="12.6"; + public final static String VERSION="12.7"; public final static String DefaultSkinURL = "http://skins.minecraft.net/MinecraftSkins/*.png"; public final static String DefaultCloakURL = "http://skins.minecraft.net/MinecraftCloaks/*.png"; @@ -69,8 +69,10 @@ public class CustomSkinLoader { return getPlayerSkinStream(true, m.group(3)); }else{ m = optifineCapeURLPattern.matcher(path); - if(m.matches())//Optifine Cape + if(m.matches()){//Optifine Cape + logger.info("Ignore Optifine Cape."); return null;//Not Load This + } } } return getStream(path, false); // Neither skin nor cloak... @@ -116,7 +118,7 @@ public class CustomSkinLoader { C.setDoInput(true); C.setDoOutput(false); C.connect(); - logger.info("RC: "+C.getResponseCode()); + logger.info("Response Code: "+C.getResponseCode()); int respcode = C.getResponseCode() / 100; if (respcode != 4 && respcode != 5) { // Successful to get skin. if(alreadyCached && C.getLastModified()==cacheFile.lastModified()){ diff --git a/1.7.10-mcp908/src/minecraft/net/minecraft/client/renderer/ImageBufferDownload.java b/1.7.10-mcp908/src/minecraft/net/minecraft/client/renderer/ImageBufferDownload.java index 3f373a0..05bf060 100644 --- a/1.7.10-mcp908/src/minecraft/net/minecraft/client/renderer/ImageBufferDownload.java +++ b/1.7.10-mcp908/src/minecraft/net/minecraft/client/renderer/ImageBufferDownload.java @@ -20,19 +20,40 @@ public class ImageBufferDownload implements IImageBuffer } else { - this.imageWidth = p_78432_1_.getWidth();//Default: 64 - this.imageHeight = p_78432_1_.getHeight();//Default: 32 + int ratio=p_78432_1_.getWidth()/64; + this.imageWidth = 64 * ratio; + this.imageHeight = 64 * ratio; BufferedImage var2 = new BufferedImage(this.imageWidth, this.imageHeight, 2); Graphics var3 = var2.getGraphics(); var3.drawImage(p_78432_1_, 0, 0, (ImageObserver)null); + + if (p_78432_1_.getHeight() == 32 * ratio) + { + var3.drawImage(var2, 24 * ratio, 48 * ratio, 20 * ratio, 52 * ratio, 4 * ratio, 16 * ratio, 8 * ratio, 20 * ratio, (ImageObserver)null); + var3.drawImage(var2, 28 * ratio, 48 * ratio, 24 * ratio, 52 * ratio, 8 * ratio, 16 * ratio, 12 * ratio, 20 * ratio, (ImageObserver)null); + var3.drawImage(var2, 20 * ratio, 52 * ratio, 16 * ratio, 64 * ratio, 8 * ratio, 20 * ratio, 12 * ratio, 32 * ratio, (ImageObserver)null); + var3.drawImage(var2, 24 * ratio, 52 * ratio, 20 * ratio, 64 * ratio, 4 * ratio, 20 * ratio, 8 * ratio, 32 * ratio, (ImageObserver)null); + var3.drawImage(var2, 28 * ratio, 52 * ratio, 24 * ratio, 64 * ratio, 0 * ratio, 20 * ratio, 4 * ratio, 32 * ratio, (ImageObserver)null); + var3.drawImage(var2, 32 * ratio, 52 * ratio, 28 * ratio, 64 * ratio, 12 * ratio, 20 * ratio, 16 * ratio, 32 * ratio, (ImageObserver)null); + var3.drawImage(var2, 40 * ratio, 48 * ratio, 36 * ratio, 52 * ratio, 44 * ratio, 16 * ratio, 48 * ratio, 20 * ratio, (ImageObserver)null); + var3.drawImage(var2, 44 * ratio, 48 * ratio, 40 * ratio, 52 * ratio, 48 * ratio, 16 * ratio, 52 * ratio, 20 * ratio, (ImageObserver)null); + var3.drawImage(var2, 36 * ratio, 52 * ratio, 32 * ratio, 64 * ratio, 48 * ratio, 20 * ratio, 52 * ratio, 32 * ratio, (ImageObserver)null); + var3.drawImage(var2, 40 * ratio, 52 * ratio, 36 * ratio, 64 * ratio, 44 * ratio, 20 * ratio, 48 * ratio, 32 * ratio, (ImageObserver)null); + var3.drawImage(var2, 44 * ratio, 52 * ratio, 40 * ratio, 64 * ratio, 40 * ratio, 20 * ratio, 44 * ratio, 32 * ratio, (ImageObserver)null); + var3.drawImage(var2, 48 * ratio, 52 * ratio, 44 * ratio, 64 * ratio, 52 * ratio, 20 * ratio, 56 * ratio, 32 * ratio, (ImageObserver)null); + } + var3.dispose(); this.imageData = ((DataBufferInt)var2.getRaster().getDataBuffer()).getData(); - //this.setAreaOpaque(0, 0, 32, 16); - //this.setAreaTransparent(32, 0, 64, 32); - //this.setAreaOpaque(0, 16, 64, 32); - this.setAreaOpaque(0, 0, imageWidth / 2, imageHeight / 2); - this.setAreaTransparent(imageWidth / 2, 0, imageWidth, imageHeight); - this.setAreaOpaque(0, imageHeight / 2, imageWidth, imageHeight); + this.setAreaOpaque(0, 0, 32 * ratio, 16 * ratio); + this.setAreaTransparent(32 * ratio, 0, 64 * ratio, 32 * ratio); + this.setAreaOpaque(0, 16 * ratio, 64 * ratio, 32 * ratio); + this.setAreaTransparent(0, 32 * ratio, 16 * ratio, 48 * ratio); + this.setAreaTransparent(16 * ratio, 32 * ratio, 40 * ratio, 48 * ratio); + this.setAreaTransparent(40 * ratio, 32 * ratio, 56 * ratio, 48 * ratio); + this.setAreaTransparent(0, 48 * ratio, 16 * ratio, 64 * ratio); + this.setAreaOpaque(16 * ratio, 48 * ratio, 48 * ratio, 64 * ratio); + this.setAreaTransparent(48 * ratio, 48 * ratio, 64 * ratio, 64 * ratio); return var2; } } diff --git a/1.7.2-mcp903/src/minecraft/idv/jlchntoz/CustomSkinLoader.java b/1.7.2-mcp903/src/minecraft/idv/jlchntoz/CustomSkinLoader.java index d1f60b8..f9ebfab 100644 --- a/1.7.2-mcp903/src/minecraft/idv/jlchntoz/CustomSkinLoader.java +++ b/1.7.2-mcp903/src/minecraft/idv/jlchntoz/CustomSkinLoader.java @@ -20,12 +20,12 @@ import com.google.gson.reflect.TypeToken; /** * Custom skin loader mod for Minecraft. * - * @version 12th Revision 6th Subversion 2015.8.8 + * @version 12th Revision 7th Subversion 2015.8.22 * * @author (C) Jeremy Lam [JLChnToZ] 2013 & Alexander Xia [xfl03] 2014-2015 */ public class CustomSkinLoader { - public final static String VERSION="12.6"; + public final static String VERSION="12.7"; public final static String DefaultSkinURL = "http://skins.minecraft.net/MinecraftSkins/*.png"; public final static String DefaultCloakURL = "http://skins.minecraft.net/MinecraftCloaks/*.png"; @@ -69,8 +69,10 @@ public class CustomSkinLoader { return getPlayerSkinStream(true, m.group(3)); }else{ m = optifineCapeURLPattern.matcher(path); - if(m.matches())//Optifine Cape + if(m.matches()){//Optifine Cape + logger.info("Ignore Optifine Cape."); return null;//Not Load This + } } } return getStream(path, false); // Neither skin nor cloak... @@ -116,7 +118,7 @@ public class CustomSkinLoader { C.setDoInput(true); C.setDoOutput(false); C.connect(); - logger.info("RC: "+C.getResponseCode()); + logger.info("Response Code: "+C.getResponseCode()); int respcode = C.getResponseCode() / 100; if (respcode != 4 && respcode != 5) { // Successful to get skin. if(alreadyCached && C.getLastModified()==cacheFile.lastModified()){ diff --git a/1.7.2-mcp903/src/minecraft/net/minecraft/client/renderer/ImageBufferDownload.java b/1.7.2-mcp903/src/minecraft/net/minecraft/client/renderer/ImageBufferDownload.java index b509d36..942e1b6 100644 --- a/1.7.2-mcp903/src/minecraft/net/minecraft/client/renderer/ImageBufferDownload.java +++ b/1.7.2-mcp903/src/minecraft/net/minecraft/client/renderer/ImageBufferDownload.java @@ -22,9 +22,15 @@ public class ImageBufferDownload implements IImageBuffer { this.imageWidth = par1BufferedImage.getWidth();//Default: 64 this.imageHeight = par1BufferedImage.getHeight();//Default: 32 - BufferedImage var2 = new BufferedImage(this.imageWidth, this.imageHeight, 2); + BufferedImage var2 = new BufferedImage(this.imageWidth, this.imageWidth / 2, 2); Graphics var3 = var2.getGraphics(); - var3.drawImage(par1BufferedImage, 0, 0, (ImageObserver)null); + if(imageWidth == imageHeight){ + var3.drawImage(par1BufferedImage, 0, 0, this.imageWidth, this.imageWidth / 2, 0, 0, this.imageWidth, this.imageWidth / 2, (ImageObserver)null); + var3.drawImage(par1BufferedImage, 0, this.imageWidth / 4, this.imageWidth, this.imageWidth / 2, 0, this.imageWidth / 2 , this.imageWidth, this.imageWidth / 4 * 3, (ImageObserver)null); + imageHeight/=2; + }else{ + var3.drawImage(par1BufferedImage, 0, 0, (ImageObserver)null); + } var3.dispose(); this.imageData = ((DataBufferInt)var2.getRaster().getDataBuffer()).getData(); //this.setAreaOpaque(0, 0, 32, 16); diff --git a/1.8-mcp910/src/minecraft/idv/jlchntoz/CustomSkinLoader.java b/1.8-mcp910/src/minecraft/idv/jlchntoz/CustomSkinLoader.java index d1f60b8..f9ebfab 100644 --- a/1.8-mcp910/src/minecraft/idv/jlchntoz/CustomSkinLoader.java +++ b/1.8-mcp910/src/minecraft/idv/jlchntoz/CustomSkinLoader.java @@ -20,12 +20,12 @@ import com.google.gson.reflect.TypeToken; /** * Custom skin loader mod for Minecraft. * - * @version 12th Revision 6th Subversion 2015.8.8 + * @version 12th Revision 7th Subversion 2015.8.22 * * @author (C) Jeremy Lam [JLChnToZ] 2013 & Alexander Xia [xfl03] 2014-2015 */ public class CustomSkinLoader { - public final static String VERSION="12.6"; + public final static String VERSION="12.7"; public final static String DefaultSkinURL = "http://skins.minecraft.net/MinecraftSkins/*.png"; public final static String DefaultCloakURL = "http://skins.minecraft.net/MinecraftCloaks/*.png"; @@ -69,8 +69,10 @@ public class CustomSkinLoader { return getPlayerSkinStream(true, m.group(3)); }else{ m = optifineCapeURLPattern.matcher(path); - if(m.matches())//Optifine Cape + if(m.matches()){//Optifine Cape + logger.info("Ignore Optifine Cape."); return null;//Not Load This + } } } return getStream(path, false); // Neither skin nor cloak... @@ -116,7 +118,7 @@ public class CustomSkinLoader { C.setDoInput(true); C.setDoOutput(false); C.connect(); - logger.info("RC: "+C.getResponseCode()); + logger.info("Response Code: "+C.getResponseCode()); int respcode = C.getResponseCode() / 100; if (respcode != 4 && respcode != 5) { // Successful to get skin. if(alreadyCached && C.getLastModified()==cacheFile.lastModified()){ diff --git a/1.8-mcp910/src/minecraft/net/minecraft/client/resources/SkinManager.java b/1.8-mcp910/src/minecraft/net/minecraft/client/resources/SkinManager.java index af3412b..7aa0210 100644 --- a/1.8-mcp910/src/minecraft/net/minecraft/client/resources/SkinManager.java +++ b/1.8-mcp910/src/minecraft/net/minecraft/client/resources/SkinManager.java @@ -67,7 +67,7 @@ public class SkinManager public ResourceLocation loadSkin(final MinecraftProfileTexture p_152789_1_, final Type p_152789_2_, final SkinManager.SkinAvailableCallback p_152789_3_) { //final ResourceLocation var4 = new ResourceLocation("skins/" + p_152789_1_.getHash()); - final ResourceLocation var4 = new ResourceLocation(p_152789_2_.name() + "/" + p_152789_1_.getHash()); + final ResourceLocation var4 = new ResourceLocation(p_152789_2_.name() + "/" + p_152789_1_.getHash()); //ITextureObject var5 = this.textureManager.getTexture(var4); /* if (var5 != null) @@ -135,24 +135,26 @@ public class SkinManager { var1.putAll(SkinManager.this.sessionService.getTextures(SkinManager.this.sessionService.fillProfileProperties(p_152790_1_, false), false)); } - //CustomSkinLoader Begin + //CustomSkinLoader Begin HashMap var2 = Maps.newHashMap(); if (var1.containsKey(Type.SKIN)){ - MinecraftProfileTexture var3=((MinecraftProfileTexture)var1.get(Type.SKIN)); - String var4=var3.getMetadata("model"); - HashMap var5 = null; - if(var4!=null){ - var5 = Maps.newHashMap(); - var5.put("model", var4); - } - var2.put(Type.SKIN, new MinecraftProfileTexture(var3.getUrl()+"?Skin="+p_152790_1_.getName(),var5)); + MinecraftProfileTexture var3=((MinecraftProfileTexture)var1.get(Type.SKIN)); + String var4=var3.getMetadata("model"); + HashMap var5 = null; + if(var4!=null){ + var5 = Maps.newHashMap(); + var5.put("model", var4); + } + var2.put(Type.SKIN, new MinecraftProfileTexture(var3.getUrl()+"?Skin="+p_152790_1_.getName(),var5)); }else{ - var2.put(Type.SKIN,new MinecraftProfileTexture( "http://skins.minecraft.net/MinecraftSkins/"+p_152790_1_.getName()+".png",null)); + HashMap var5 = Maps.newHashMap(); + var5.put("model", "slim"); + var2.put(Type.SKIN,new MinecraftProfileTexture( "http://skins.minecraft.net/MinecraftSkins/"+p_152790_1_.getName()+".png",var5)); } if (var1.containsKey(Type.CAPE)){ - var2.put(Type.CAPE, new MinecraftProfileTexture(((MinecraftProfileTexture)var1.get(Type.CAPE)).getUrl()+"?Cloak="+p_152790_1_.getName(),null)); + var2.put(Type.CAPE, new MinecraftProfileTexture(((MinecraftProfileTexture)var1.get(Type.CAPE)).getUrl()+"?Cloak="+p_152790_1_.getName(),null)); }else{ - var2.put(Type.CAPE,new MinecraftProfileTexture( "http://skins.minecraft.net/MinecraftCloaks/"+p_152790_1_.getName()+".png",null)); + var2.put(Type.CAPE,new MinecraftProfileTexture( "http://skins.minecraft.net/MinecraftCloaks/"+p_152790_1_.getName()+".png",null)); } var1.clear(); var1.putAll(var2); diff --git a/Common Tweaker/idv/jlchntoz/tweaker/ClassTransformer.java b/Common Tweaker/idv/jlchntoz/tweaker/ClassTransformer.java index 3568086..14ac8cd 100644 --- a/Common Tweaker/idv/jlchntoz/tweaker/ClassTransformer.java +++ b/Common Tweaker/idv/jlchntoz/tweaker/ClassTransformer.java @@ -24,8 +24,7 @@ public class ClassTransformer implements IClassTransformer { if (tempZipFile == null) continue; zipFile = tempZipFile; - ForgeTweaker.logger.info("URL: " + url); - ForgeTweaker.logger.info("File: " + zipFile); + ForgeTweaker.logger.info("Jar File URL: " + url); break; } } catch (Exception e) { diff --git a/Common Tweaker/idv/jlchntoz/tweaker/Tweaker.java b/Common Tweaker/idv/jlchntoz/tweaker/Tweaker.java index 59dda30..a66a780 100644 --- a/Common Tweaker/idv/jlchntoz/tweaker/Tweaker.java +++ b/Common Tweaker/idv/jlchntoz/tweaker/Tweaker.java @@ -12,6 +12,9 @@ import net.minecraft.launchwrapper.LaunchClassLoader; public class Tweaker implements ITweaker { private List args; + private String gameDir; + private String assetsDir; + private String profile; private static final File TWEAKER_LOG_FILE = new File("CustomSkinLoader/Tweaker.log"); public static MainLogger logger = new MainLogger(TWEAKER_LOG_FILE); @@ -23,12 +26,9 @@ public class Tweaker implements ITweaker { public void acceptOptions(List args, File gameDir, File assetsDir, String profile) { logger.info("Tweaker: acceptOptions"); this.args = new ArrayList(args); - this.args.add("--gameDir"); - this.args.add(gameDir.getAbsolutePath()); - this.args.add("--assetsDir"); - this.args.add(assetsDir.getAbsolutePath()); - this.args.add("--version"); - this.args.add(profile); + this.gameDir = gameDir.getAbsolutePath(); + this.assetsDir = assetsDir.getAbsolutePath(); + this.profile = profile; } public void injectIntoClassLoader(LaunchClassLoader classLoader) { @@ -43,6 +43,12 @@ public class Tweaker implements ITweaker { public String[] getLaunchArguments() { logger.info("Tweaker: getLaunchArguments"); + this.args.add("--gameDir"); + this.args.add(gameDir); + this.args.add("--assetsDir"); + this.args.add(assetsDir); + this.args.add("--version"); + this.args.add(profile); return (String[])args.toArray(new String[args.size()]); } }