Fixed capes

This commit is contained in:
Aidan C. Brady 2015-02-11 08:36:40 -05:00
parent b1ebcd0e5e
commit 81c948f28d
3 changed files with 44 additions and 20 deletions

View file

@ -1,13 +1,16 @@
package mekanism.client;
import java.io.File;
import java.lang.reflect.Method;
import mekanism.common.ObfuscatedNames;
import mekanism.common.util.MekanismUtils;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.AbstractClientPlayer;
import net.minecraft.client.renderer.IImageBuffer;
import net.minecraft.client.renderer.ThreadDownloadImageData;
import net.minecraft.client.renderer.texture.ITextureObject;
import net.minecraft.client.renderer.texture.TextureManager;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.StringUtils;
import cpw.mods.fml.relauncher.Side;
@ -40,7 +43,9 @@ public class CapeBufferDownload extends Thread
{
try {
download();
} catch(Exception e) {}
} catch(Exception e) {
e.printStackTrace();
}
}
private void download()
@ -48,14 +53,10 @@ public class CapeBufferDownload extends Thread
try {
resourceLocation = new ResourceLocation("mekanism/" + StringUtils.stripControlCodes(username));
Method method = MekanismUtils.getPrivateMethod(AbstractClientPlayer.class, ObfuscatedNames.AbstractClientPlayer_getDownloadImage, ResourceLocation.class, String.class, ResourceLocation.class, IImageBuffer.class);
Object obj = method.invoke(null, resourceLocation, staticCapeUrl, null, null);
if(obj instanceof ThreadDownloadImageData)
{
capeImage = (ThreadDownloadImageData)obj;
}
} catch(Exception e) {}
capeImage = downloadCape();
} catch(Exception e) {
e.printStackTrace();
}
downloaded = true;
}
@ -69,4 +70,27 @@ public class CapeBufferDownload extends Thread
{
return resourceLocation;
}
public ThreadDownloadImageData downloadCape()
{
try {
File capeFile = new File(resourceLocation.getResourcePath() + ".png");
if(capeFile.exists())
{
capeFile.delete();
}
TextureManager manager = Minecraft.getMinecraft().getTextureManager();
ThreadDownloadImageData data = new ThreadDownloadImageData(capeFile, staticCapeUrl, null, null);
manager.loadTexture(resourceLocation, data);
return data;
} catch(Exception e) {
e.printStackTrace();
}
return null;
}
}

View file

@ -1,5 +1,9 @@
package mekanism.client;
import static mekanism.client.sound.SoundHandler.Channel.FLAMETHROWER;
import static mekanism.client.sound.SoundHandler.Channel.GASMASK;
import static mekanism.client.sound.SoundHandler.Channel.JETPACK;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@ -37,13 +41,15 @@ import mekanism.common.network.PacketScubaTankData.ScubaTankPacket;
import mekanism.common.network.PacketWalkieTalkieState.WalkieTalkieStateMessage;
import mekanism.common.util.LangUtils;
import mekanism.common.util.MekanismUtils;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.AbstractClientPlayer;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.StringUtils;
import com.mojang.authlib.minecraft.MinecraftProfileTexture;
import cpw.mods.fml.client.FMLClientHandler;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.gameevent.TickEvent.ClientTickEvent;
@ -175,8 +181,7 @@ public class ClientTickHandler
continue;
}
MekanismUtils.setPrivateValue(player, download.getImage(), AbstractClientPlayer.class, ObfuscatedNames.AbstractClientPlayer_downloadImageCape);
MekanismUtils.setPrivateValue(player, download.getResourceLocation(), AbstractClientPlayer.class, ObfuscatedNames.AbstractClientPlayer_locationCape);
player.func_152121_a(MinecraftProfileTexture.Type.CAPE, download.getResourceLocation());
}
}
else if(StringUtils.stripControlCodes(player.getCommandSenderName()).equals("aidancbrady"))
@ -196,8 +201,7 @@ public class ClientTickHandler
continue;
}
MekanismUtils.setPrivateValue(player, download.getImage(), AbstractClientPlayer.class, ObfuscatedNames.AbstractClientPlayer_downloadImageCape);
MekanismUtils.setPrivateValue(player, download.getResourceLocation(), AbstractClientPlayer.class, ObfuscatedNames.AbstractClientPlayer_locationCape);
player.func_152121_a(MinecraftProfileTexture.Type.CAPE, download.getResourceLocation());
}
}
else if(Mekanism.donators.contains(StringUtils.stripControlCodes(player.getCommandSenderName())))
@ -217,8 +221,7 @@ public class ClientTickHandler
continue;
}
MekanismUtils.setPrivateValue(player, download.getImage(), AbstractClientPlayer.class, ObfuscatedNames.AbstractClientPlayer_downloadImageCape);
MekanismUtils.setPrivateValue(player, download.getResourceLocation(), AbstractClientPlayer.class, ObfuscatedNames.AbstractClientPlayer_locationCape);
player.func_152121_a(MinecraftProfileTexture.Type.CAPE, download.getResourceLocation());
}
}
}

View file

@ -4,9 +4,6 @@ public final class ObfuscatedNames
{
public static String[] TextureManager_listTickables = new String[] {"listTickables", "field_110583_b", "c"};
public static String[] Minecraft_timer = new String[] {"timer", "field_71428_T", "S"};
public static String[] AbstractClientPlayer_downloadImageCape = new String[] {"downloadImageCape", "field_110315_c", "c"};
public static String[] AbstractClientPlayer_locationCape = new String[] {"locationCape", "field_110313_e", "e"};
public static String[] AbstractClientPlayer_getDownloadImage = new String[] {"getDownloadImage", "func_110301_a", "a"};
public static String[] GuiContainer_xSize = new String[] {"xSize", "field_146999_f", "c"};
public static String[] GuiContainer_ySize = new String[] {"ySize", "field_147000_g", "d"};
public static String[] GuiContainer_guiLeft = new String[] {"guiLeft", "field_147003_i"};