123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- package me.km.overrides;
- import java.net.HttpURLConnection;
- import java.net.URL;
- import java.util.HashMap;
- import java.util.UUID;
- import java.util.function.Consumer;
- import net.minecraft.client.Minecraft;
- import net.minecraft.client.renderer.texture.DynamicTexture;
- import net.minecraft.client.renderer.texture.NativeImage;
- import net.minecraft.client.renderer.texture.TextureManager;
- import net.minecraft.util.ResourceLocation;
- import net.minecraftforge.api.distmarker.Dist;
- import net.minecraftforge.api.distmarker.OnlyIn;
- import org.apache.logging.log4j.LogManager;
- @OnlyIn(Dist.CLIENT)
- public class PlayerCapeLoader
- {
- private static class Data
- {
- private ResourceLocation cape;
- }
- public final static PlayerCapeLoader INSTANCE = new PlayerCapeLoader();
- private final HashMap<UUID, Data> skins = new HashMap<>();
- private final TextureManager manager = Minecraft.getInstance().getRenderManager().textureManager;
- private PlayerCapeLoader()
- {
- }
- public ResourceLocation getTexture(UUID uuid)
- {
- Data oldData = skins.get(uuid);
- if(oldData != null)
- {
- return oldData.cape;
- }
- Data newData = new Data();
- skins.put(uuid, newData);
- downloadCape(uuid, image ->
- {
- newData.cape = manager.getDynamicTextureLocation("cape_" + uuid, new DynamicTexture(image));
- });
- return null;
- }
- private void downloadCape(UUID uuid, Consumer<NativeImage> delayed)
- {
- new Thread(() ->
- {
- HttpURLConnection httpurlconnection = null;
- try
- {
- org.apache.logging.log4j.LogManager.getLogger().warn(String.format("http://skins.hammerle.me/cape_%s.png", uuid));
- httpurlconnection = (HttpURLConnection) (new URL("http://skins.hammerle.me/cape.png"))
- .openConnection(Minecraft.getInstance().getProxy());
- httpurlconnection.setDoInput(true);
- httpurlconnection.setDoOutput(false);
- httpurlconnection.connect();
- int code = httpurlconnection.getResponseCode();
- if(code != 200)
- {
- return;
- }
- NativeImage image = NativeImage.read(httpurlconnection.getInputStream());
- Minecraft.getInstance().enqueue(() -> delayed.accept(image));
- }
- catch(Exception ex)
- {
- LogManager.getLogger().warn("Error occurred when downloading skin, however, skin servers seem to be up.");
- }
- finally
- {
- if(httpurlconnection != null)
- {
- httpurlconnection.disconnect();
- }
- }
- }).start();
- }
- }
|