Logo Passei Direto
Buscar
Material

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

META-INF/MANIFEST.MF
Manifest-Version: 1.0
Implementation-Title: CustomSkinLoader
Automatic-Module-Name: customskinloader
Implementation-Version: 14.19.1
Specification-Vendor: xfl03
Specification-Title: CustomSkinLoader
Implementation-Timestamp: 2023-12-21T14:33:07+0000
Specification-Version: 1
Implementation-Vendor: xfl03
Name: customskinloader/fake/FakeClientPlayer.class
SHA-256-Digest: u7eIzeuqxPGd/ynlTXPHhCZuuzpXvianLoPZ0lWff4s=
Name: customskinloader/fake/FakeCapeBuffer.class
SHA-256-Digest: /WC72NvaXwLlPQbKth1ScUME6ark0GUA5b6OzxLEUAk=
Name: customskinloader/loader/jsonapi/UniSkinAPI$UniSkinAPIProfile.cla
 ss
SHA-256-Digest: u/jKz1w2MOP8EPbLHnlVQvjbt1PxejYZzzEkNPZbOWg=
Name: customskinloader/loader/MojangAPILoader$Mojang.class
SHA-256-Digest: suRdtoRPSBUV5GkW90rfG+8YRXGnpRFbJggjRwvYP6s=
Name: customskinloader/plugin/ICustomSkinLoaderPlugin.class
SHA-256-Digest: 66FB7TaJcpZKwhSfMcwLA6vYnPe1KIIJyInfhNHxoAk=
Name: customskinloader/loader/JsonAPILoader$ErrorProfile.class
SHA-256-Digest: t1F4VG0c+UUVYb1jf6tZqpGumTQZXH2LHYJsQgQvD7s=
Name: customskinloader/loader/jsonapi/MinecraftCapesAPI$MinecraftCapes
 .class
SHA-256-Digest: iODdBPQLDjmo5sbk4+SvaYGSiHYrS1YL33HjpQ4X2HQ=
Name: customskinloader/utils/HttpRequestUtil.class
SHA-256-Digest: 8jOGkhCHoNdE6BQATZf9PBtJ+9ZL7w5rDBgrOnUqsj8=
Name: META-INF/fml_cache_annotation.json
SHA-256-Digest: rpFcvAKyq2eVGi8qmrXD64sj4nsZB3xs46BFzTEEd7M=
Name: customskinloader/loader/jsonapi/CustomSkinAPI.class
SHA-256-Digest: yVCI1pnbOFV820b2SnzF2PXgqAscQvfEfQgkbADElrE=
Name: customskinloader/profile/CachedProfile.class
SHA-256-Digest: x71BxF/AErNzzYS2JbZvKnHdiy6KjbXbHpiyMwh7CTU=
Name: customskinloader/forge/ForgeMod.class
SHA-256-Digest: NviUNqixFJEBGxnCD3EPaXjJhvLTFTf8fjSl80axp4g=
Name: customskinloader/loader/LegacyLoader$DefaultProfile.class
SHA-256-Digest: VPbjH314O6NR4XJhkBQN0zCqx38t6XCgtU5zQW+i11I=
Name: customskinloader/plugin/ICustomSkinLoaderPlugin$IDefaultProfile.
 class
SHA-256-Digest: k7qeSFeoTF0ckFkgsVQ/ZlrEh2PRImN70pNcC9SmUH8=
Name: customskinloader/fake/FakeMinecraftProfileTexture.class
SHA-256-Digest: FPpcwrGCWMfOpean6qAKffrZgOB8U6eHnfpKOgO2vBY=
Name: customskinloader/utils/HttpUtil0.class
SHA-256-Digest: ve6s/+UcqJw0iCTvcY/C9DJ8jlqQs5LmZWdbtA7ZAKw=
Name: customskinloader/utils/HttpTextureUtil.class
SHA-256-Digest: fTrPSmuIYdLd44sEoQhwvzcmh2pe+9a8oW4V/TpjQQ4=
Name: customskinloader/profile/DynamicSkullManager.class
SHA-256-Digest: Jvp0z0eYJeYIKc51HUhfVi6v2YwtGyhT4hump9T74Hg=
Name: customskinloader/fake/texture/FakeBufferedImage.class
SHA-256-Digest: tpO45u1c4BsIT9to6QMfSWqb2z0vtSydTe6f1NcpxOE=
Name: customskinloader/fake/FakeSkinManager$FakeCacheKey.class
SHA-256-Digest: EVAEj7XmP7Gq+HqpJtG6SiFrsA4nhECHlsdH9vbsB5w=
Name: customskinloader/profile/UserProfile$1.class
SHA-256-Digest: MQKv75mfurs3fExiuiRaVMp5EXvvvBBdhbxZJQSzRrY=
Name: META-INF/fml_cache_class_versions.json
SHA-256-Digest: nFxA76Jk0djRmRA3sZpIOGXyh0SqfsRDhanxDOJQifs=
Name: customskinloader/loader/jsonapi/GlitchlessAPI.class
SHA-256-Digest: Bwbu3wFeQD4pIZn2u7d81kYXiw1Tt2VoTW1ZovzcuuI=
Name: customskinloader/loader/jsonapi/UniSkinAPI.class
SHA-256-Digest: hqBsBni/jMgSEIWATL30RFbhiqAsfTdTcE+kGB6bjNo=
Name: customskinloader/plugin/PluginLoader.class
SHA-256-Digest: Z8v68CkD9Gtvz8OlIqm2b4OJQKBFLGgmh0d4p/uNa8s=
Name: customskinloader/fake/texture/FakeNativeImage.class
SHA-256-Digest: BUWJCzmElKYUKptSk1qivCMnBq53eprN+VwWE7OecuE=
Name: customskinloader/utils/TextureUtil$AuthlibField.class
SHA-256-Digest: y2ag9qx7z3TOqwvCxake4m8TVAcRAKcL8BfLCPwQIxs=
Name: BuildInfo.json
SHA-256-Digest: W07JW/LOfvWgeUkAzvLaVro6By7Jk5C86j6b2eek6TU=
Name: customskinloader/utils/HttpRequestUtil$HttpResponce.class
SHA-256-Digest: 475shpWej+mkF0Ve14h8f9ij9t7nExRMYH1T8Zn/YU8=
Name: customskinloader/loader/LegacyLoader$1.class
SHA-256-Digest: pKjGYw2Zylhx54hD7LY5um6yXQVwr/CkKzACcYmWI1Q=
Name: customskinloader/profile/UserProfile.class
SHA-256-Digest: NY7vAxaCk4ECm5JWtrtHyn1uuk0PNHz47nFu6fqMUrU=
Name: customskinloader/loader/LegacyLoader$LocalSkin.class
SHA-256-Digest: YUK+Oueqpu8yNBEv3BTgEb9G4GOTHEM1FsIwvvqI0XU=
Name: customskinloader/log/Logger$Level.class
SHA-256-Digest: mV1w5m9BN9N/L+oOBURDJQpERZEZ4LRqAsKZ6SIP3Bk=
Name: customskinloader/profile/ModelManager0$Model.class
SHA-256-Digest: PthK/AQ9RvS42n6uhnks5tyFt5dsIP65kJe0SwsUFvE=
Name: customskinloader/loader/jsonapi/UniSkinAPI$SkinMe.class
SHA-256-Digest: LykbCy6RMowCxiDv3EpORU+2507psbmcL6ioySPI9Vs=
Name: customskinloader/fake/itf/FakeInterfaceManager.class
SHA-256-Digest: sbIU2jTLTDepFuGdbI2dl3Y4K0G16csKIhWzDgmnLjU=
Name: customskinloader/loader/jsonapi/CustomSkinAPI$LittleSkin.class
SHA-256-Digest: kEie/oMqJaLDnoYsqj6bJhOinWlja4YcjLaq6bBwFS4=
Name: customskinloader/log/Logger.class
SHA-256-Digest: lZD9UAlx88thVFN3qmpiiS29FHIQnX9Wz4PVosn0tl4=
Name: customskinloader/loader/LegacyLoader.class
SHA-256-Digest: wymHUpBF6UmunMgQqWnEt+lkIHLpxvx5NvAo3FDnCfA=
Name: customskinloader/fake/itf/IFakeIResource$V1.class
SHA-256-Digest: Z8S4XIaxqlGrb1xRfSXDlAYgWIlz/4jyCR+K/urP+Wo=
Name: pack.mcmeta
SHA-256-Digest: NOr0Vjoba1MiO4CgQl51M22psZBFEIgIWeBxQTcNUNg=
Name: customskinloader/loader/jsonapi/WynntilsAPI$WynntilsApiRequest.c
 lass
SHA-256-Digest: AUWp1GbsCvPsRaacTeh4O7OfGARn1+n91ySTSLVacXk=
Name: customskinloader/fake/IFakeImageBuffer.class
SHA-256-Digest: 2R6qivkcLDXDiY21GUID3Td+9KzyynSlAwaBQy8G7kI=
Name: customskinloader/loader/ProfileLoader$IProfileLoader.class
SHA-256-Digest: 6lDwCLg6cATuqzxogMIa7q39XCLVAE7EyBA3J0RKb9Y=
Name: customskinloader/profile/DynamicSkullManager$SkullTexture.class
SHA-256-Digest: w8NIQw4AEgscU93bhy4IZTymNUNACp0cU1fWAFtZ9BM=
Name: customskinloader/fake/itf/IFakeSkinManagerCacheKey.class
SHA-256-Digest: n+BPjHlU8fOJcdAMbrUTl9tcb52Cdw+Ho8diJcPmcpY=
Name: customskinloader/loader/JsonAPILoader.class
SHA-256-Digest: CF26uUXe9M0wCTaycLZ+nmqntOVEmrxYR1kzSd+bKTA=
Name: customskinloader/loader/jsonapi/CustomSkinAPI$CustomSkinAPIProfi
 le.class
SHA-256-Digest: qOg0otkK2yDfiWnr99rJUQgoQIkJK/nJ5Hfuq9Cv4zg=
Name: customskinloader/loader/jsonapi/GlitchlessAPI$GlitchlessGames.cl
 ass
SHA-256-Digest: /NizhzgYe/jFKI09xYRL0R9tGRNLpdeC3ZHN4Jku1K0=
Name: customskinloader/utils/TextureUtil.class
SHA-256-Digest: L28MOM0p638gxntEps8GuDylQuV8fpNySOSwpow7pGU=
Name: customskinloader/utils/HttpTextureUtil$HttpTextureInfo.class
SHA-256-Digest: Gf07LKmbTtKsV2T979duXMdz5ihohEAg6bmTGub52s4=
Name: customskinloader/profile/ModelManager0.class
SHA-256-Digest: iVsYQ7uB+lmN1YOdghD03s1D9MfYQi53rkAicU6PUvI=
Name: META-INF/mods.toml
SHA-256-Digest: F+HTS2w2xU2/BwJ6xpuTpp1x8hKE6JKxZQvZn0Af8/M=
Name: customskinloader/loader/jsonapi/ElyByAPI.class
SHA-256-Digest: /2VzSamgN/VBx7qoVgR/sYA435Bu1/xk9jUrmp/eju0=
Name: META-INF/coremods.json
SHA-256-Digest: kuJ8xFtO4ECs9237hRYvHYnAQaepuFE4zl6BftJBFJw=
Name: customskinloader/fake/itf/IFakeIResource$V2.class
SHA-256-Digest: /0vPwfPBv74jqvbfTXzp2rSE4NOiFI/NBWXQCvbm9iw=
Name: customskinloader/loader/jsonapi/MinecraftCapesAPI$MinecraftCapes
 ApiResponse.class
SHA-256-Digest: qhKSiLDKnMUBd0Hx62kISqVYF03/5Kyz4VV6SGUBQDI=
Name: customskinloader/utils/JavaUtil.class
SHA-256-Digest: cPaVDQl+LXEeAG4faiSBlL08y/dqV9Q6rR5O7lK/NeY=
Name: customskinloader/loader/MojangAPILoader$DefaultProfile.class
SHA-256-Digest: o0y8eQmxEoXmofVD2js2r7PXgiaMSGp5WInxRWf9vjs=
Name: customskinloader/fake/FakeSkinBuffer.class
SHA-256-Digest: KTOSFNzFMpDKpc5bUlBovSUdTPxn8RlGYqpZTtbkbi4=
Name: customskinloader/fake/FakeSkinManager$BaseBuffer.class
SHA-256-Digest: iQP5EghZc0EJNXK951uCK+cyZoehszdufFIotjcDuI0=
Name: LICENSE
SHA-256-Digest: ZYZVJe3akjY9EnKFSm+6XBY/HpLlqbrzg2l0sEORlV4=
Name: customskinloader/utils/HttpRequestUtil$CacheInfo.class
SHA-256-Digest: Wm/xvFWh2Tf1V5GxF27IPdY7tISmrax4wFpMSG030xE=
Name: customskinloader/loader/JsonAPILoader$IJsonAPI.class
SHA-256-Digest: vRjHl8dfPTI29ysPi3LCQsRWtApDNXorFd3O75QRyHU=
Name:
customskinloader/loader/jsonapi/CustomSkinAPIPlus.class
SHA-256-Digest: /a2vdPxE5gK6sRaIimgwo5/7fLU3V9pdks+AxonyVMY=
Name: customskinloader/utils/TimeUtil.class
SHA-256-Digest: KpQ0ietHQFfwzu/WAqGnxPEEHw4dMnQT98rah5Q7Qw0=
Name: customskinloader/utils/HttpRequestUtil$HttpRequest.class
SHA-256-Digest: 8udQMD6wPkISVf9L8zIVJfuSv+KGh9AAXpKqBlqQHaM=
Name: customskinloader/utils/HttpUtil0$SSLSocketFactoryFacade.class
SHA-256-Digest: GQJA68dMl5oflMt8C9Al7dGPekvsrVvL0XyeKQ/Ngig=
Name: customskinloader/CustomSkinLoader.class
SHA-256-Digest: 4fCodLX8i8/KhzyYJAFSKpZKkmSWxBUT4fkVaf97GmQ=
Name: customskinloader/loader/ProfileLoader.class
SHA-256-Digest: nhUZ34TmjZt8K/HyZUkU2506hZ2dmtHRZNxBCxa/FrY=
Name: customskinloader/utils/Version.class
SHA-256-Digest: ds/7KF4Tj93xUZ/5dx9MwEz4i9KuvDM1dQ2wiGFq6ns=
Name: customskinloader/loader/jsonapi/CustomSkinAPI$BlessingSkin.class
SHA-256-Digest: QdBIooc6zvpLwZlythaI2Yz/GM48fTQjUkVDY9Ez1rY=
Name: customskinloader/config/SkinSiteProfile.class
SHA-256-Digest: +Mfc+h5Gjcm3XnyunvM7MaZ6YcSBTQiYxXI5bBjq3ig=
Name: customskinloader/Logger.class
SHA-256-Digest: wOUWtFLDq+NIAdJWMTlpcDGr5ZZ/eIT8YbiKL+Y1z9c=
Name: customskinloader/fake/FakeSkinManager$1.class
SHA-256-Digest: 61AW5vK48TcaWd6ngC18ODAjqsxj7ZI4ZXzdg7mkxKc=
Name: customskinloader/loader/jsonapi/CustomSkinAPIPlus$CustomSkinAPIP
 lusPayload.class
SHA-256-Digest: 6Tnwmrt30zhgja/x+HIjGPi8U4TGPdrxdkgNAdEmAdY=
Name: customskinloader/loader/jsonapi/ElyByAPI$1.class
SHA-256-Digest: SPi3qEwDbBa9tDFdM2SIUQgyAvE+lqyQabR4GoJV020=
Name: customskinloader/loader/jsonapi/WynntilsAPI$WynntilsApiResponse$
 User.class
SHA-256-Digest: xZLJ0eY18f6aFfzTK0v0+atC5XNZWkP86FsJGjszphs=
Name: customskinloader/fake/itf/IFakeMinecraft.class
SHA-256-Digest: pGZQ/bUCdmq0epiNkGddXvD8Ssou837D800wxrhEaTM=
Name: customskinloader/loader/MojangAPILoader.class
SHA-256-Digest: hq6MNKeSrwmvEtGMnv7VXcopkjHgvTGDHbGeexqSmoI=
Name: customskinloader/loader/jsonapi/MinecraftCapesAPI.class
SHA-256-Digest: TsyyvJf+Y+/HEyHaxr3YSsXYUWakHy7DSYKXrBGMHt0=
Name: customskinloader/loader/jsonapi/WynntilsAPI$Wynntils.class
SHA-256-Digest: oYYXDElK9jz5WdI2RfMgX/aphyWxprCtMeSl1p+nddM=
Name: customskinloader/loader/jsonapi/WynntilsAPI.class
SHA-256-Digest: CRFG8RrhouWdShT/mIFRxb63mjLGBPsvQXU0dtb8XMQ=
Name: transformers.js
SHA-256-Digest: XuzfUOfbclvdG4AP1B7oed4mKhYBWELwJYX/yTVOIBk=
Name: customskinloader/fake/itf/IFakeIImageBuffer.class
SHA-256-Digest: t2nrUK6mRJM//p7ZoqyZAg2QqFjwmhqol42eTxWcJ4s=
Name: customskinloader/fake/itf/IFakeIResourceManager.class
SHA-256-Digest: nEELXtqrnG1hqON3prcTPMAlQSCQO49bq4JMgJtJ46o=
Name: customskinloader/profile/ProfileCache.class
SHA-256-Digest: K1B3iYUqI7939z7YJfs79MF4ZJyrP/q/hYq5S/ceRXE=
Name: customskinloader/loader/jsonapi/ElyByAPI$ElyBy.class
SHA-256-Digest: HFU0heUNVC8gvX09T2w4hWNiEMGb0lokVwCq4OPeifI=
Name: customskinloader/loader/jsonapi/ElyByAPI$TLauncher.class
SHA-256-Digest: 8HaFaJEWQPjNoDecV+U9r0ZBTcg8LI1AgQsOfu9NfgM=
Name: customskinloader/fake/texture/FakeImage.class
SHA-256-Digest: H6K7tbfmgRSODxjKJY5qyKBo1NUjjPthNLC1Xt3OH/Q=
Name: customskinloader/loader/jsonapi/WynntilsAPI$WynntilsApiResponse$
 User$Cosmetics.class
SHA-256-Digest: ypp8QpCbpuzoyDfUP1J0g85cYIuMrpYUmCefDzLj1oA=
Name: customskinloader/fake/itf/IFakeIResource.class
SHA-256-Digest: tZHwhwDYARunw0/H2fbC3TlNHCovDcva0zQ+H9c0neI=
Name: customskinloader/config/Config.class
SHA-256-Digest: bWG+Am7ob7nsC0x54Y5VwP+PRfse7UQG01mZhlalZi8=
Name: customskinloader/loader/jsonapi/GlitchlessAPI$GlitchlessApiRespo
 nse.class
SHA-256-Digest: zLxfSyjOm7Q1qlRcxQihtCJcCXGE3x3022SjRM3G6Ec=
Name: customskinloader/loader/jsonapi/WynntilsAPI$WynntilsApiResponse.
 class
SHA-256-Digest: ixub5Cv4DcyVCJkK42AcHl+Fk5YSsXCCZs+f8i3SlAo=
Name: customskinloader/utils/MinecraftUtil.class
SHA-256-Digest: KqLpyZqkR58r6O6CDZ/b3Qn3T8cB4MLm/WI42xsOOgc=
Name: customskinloader/loader/jsonapi/MinecraftCapesAPI$MinecraftCapes
 ApiResponse$MinecraftCapesApiTexture.class
SHA-256-Digest: AaHbCioarD+83GP55Ae97cNQMXwtmx3jQboVMyNlYpQ=
Name: customskinloader/fake/FakeClientPlayer$LegacyBuffer.class
SHA-256-Digest: PgSgTdepGwDTJz8JxFVL9wAWpsV3ExSYwnFE+g7Zj8E=
Name: customskinloader/loader/JsonAPILoader$ProfileNotFoundException.c
 lass
SHA-256-Digest: vrHoLDT69cUmCf8cREyapnPmWdd+1Ie5BQi0V0LRz0s=
Name: customskinloader/fake/FakeSkinManager.class
SHA-256-Digest: CA4JoYH5PlzVcQBG92knYGWyuSJJNKULbiMYQ5J+CQY=
Name: customskinloader/loader/JsonAPILoader$DefaultProfile.class
SHA-256-Digest: qc56ojlLxv0C2D7TRnaz8KEIhzrPOwPFbxneJ1SsyGw=
Name: customskinloader/log/LogManager.class
SHA-256-Digest: itruifHEBW32ruvc1epeYlGguqDF4YXIv3yDynxuq4s=
META-INF/CUSTOMSK.SF
Signature-Version: 1.0
SHA-256-Digest-Manifest-Main-Attributes: cnapx5joipSzGoDA9qJh/6la+aMxs
 OGQG9NDSXzNEOQ=
SHA-256-Digest-Manifest: Jp0qbpKPpiP3JEEHr8mINEY2hgR9AbYp1uTuaonw+bc=
Created-By: 1.8.0_392 (Temurin)
Name: customskinloader/fake/FakeClientPlayer.class
SHA-256-Digest: +nKjWofLPxl7+kwuoAasdgroP19h/xaz+WGa7yF7oac=
Name: customskinloader/fake/FakeCapeBuffer.class
SHA-256-Digest: G35XZDNId1PzKwRNrBP5ogU0duMJCo9Waa1jqY101tU=
Name: customskinloader/loader/jsonapi/UniSkinAPI$UniSkinAPIProfile.cla
 ss
SHA-256-Digest: VLAOr0ixHsWM0JrZvdnfRXrFqMfo2ViMMEvrsUEDeIk=
Name: customskinloader/loader/MojangAPILoader$Mojang.class
SHA-256-Digest: hJwrhr02VYmtg2TAAFhQPGIlNrbnDoc8dDvMd/zbv/c=
Name: customskinloader/plugin/ICustomSkinLoaderPlugin.class
SHA-256-Digest: La9kAtF9SW5DyWGqxLGNiwm+4z6892V3qgGYmJOdu7k=
Name: customskinloader/loader/JsonAPILoader$ErrorProfile.class
SHA-256-Digest: XlD4ph+Fy+7hW0ccJnda2MUiGVIRws0fuXcl9EZmtJw=
Name: customskinloader/loader/jsonapi/MinecraftCapesAPI$MinecraftCapes
 .class
SHA-256-Digest: lNG8eohHrNmQHi/XvWi2Xp1kFtcVLUxUMXxZ+LazA9E=
Name: customskinloader/utils/HttpRequestUtil.class
SHA-256-Digest: yUqewXivSjxYhOD6f8E33m59zmhcG0ugUvAXYIKBxWo=
Name: META-INF/fml_cache_annotation.json
SHA-256-Digest: FC5ENwPUb34ZZ7WAIFPDucTyUS6IfDY8Oo+qFjfmz1E=
Name: customskinloader/loader/jsonapi/CustomSkinAPI.class
SHA-256-Digest: Oq/OVsXpU8YNDIXqQJ8Yc8KncLzU8/RCABjUacCOicY=
Name: customskinloader/profile/CachedProfile.class
SHA-256-Digest: G/QQoksKhGWwPhyfCx5DUiI/LPnCIMXa9ux6P1PCVlk=
Name: customskinloader/forge/ForgeMod.class
SHA-256-Digest: uD6jXGVRRtIMuWJWpho1nF6CnvPIlNZjp1V/8NSDKes=
Name: customskinloader/loader/LegacyLoader$DefaultProfile.class
SHA-256-Digest: zMOzRp4W0E+8XeOXO1fKrGuiD7LTivC2XlwXxcZavwM=
Name: customskinloader/plugin/ICustomSkinLoaderPlugin$IDefaultProfile.
 class
SHA-256-Digest: H/hUktuyikY9goZBNQzXWQ86t0i0CJmelCvJGElL0Qg=
Name: customskinloader/fake/FakeMinecraftProfileTexture.class
SHA-256-Digest: S7YEg5WymUIoj23axRCGLqtJi4PfDGcj5Rz43I3BZ5w=
Name: customskinloader/utils/HttpUtil0.class
SHA-256-Digest: VLNkowrXBTwQwIyrC/t0NektwEwx0PZzetcWYBASZNs=
Name: customskinloader/utils/HttpTextureUtil.class
SHA-256-Digest: 8N39WBpMUL7V77jwjK5iVuHHTBtfbba0E8AYvj6n51Y=
Name: customskinloader/profile/DynamicSkullManager.class
SHA-256-Digest: TwMwxCRqYGzW9pP8vv1D/0CYb/SUfsPIgPBmxqYO9P8=
Name: customskinloader/fake/texture/FakeBufferedImage.class
SHA-256-Digest: 0zr7Yp8HobMUG8trkudRbOMcCFKkcuWtnEtNnkkcrCo=
Name: customskinloader/fake/FakeSkinManager$FakeCacheKey.class
SHA-256-Digest: icb2ZjBNli0nNlPWSMGohVu65WIaVkL9hnWb5E/05xc=
Name: customskinloader/profile/UserProfile$1.class
SHA-256-Digest: Iu3Cs0GlW9GxcG680VFyzaDZR1HVuVTU0935qsP3hrE=
Name: META-INF/fml_cache_class_versions.json
SHA-256-Digest: 3tDsD7yqnhJDtUSMedcFUeC904OfPulqSYUK7booBJU=
Name: customskinloader/loader/jsonapi/GlitchlessAPI.class
SHA-256-Digest: +eBXn9zFCQoFMG0/5a+lonlER1qPqOCAQx5/+X1PQtA=
Name: customskinloader/loader/jsonapi/UniSkinAPI.class
SHA-256-Digest: C43BTX3JOiPD42NBag58Zq6BgT15+pf+P0IRXHASUmA=
Name: customskinloader/plugin/PluginLoader.class
SHA-256-Digest: U4lqXq7Wq/EjBqZVN9+9KQXT/vtr/4iV/4P9s/uc2W8=
Name: customskinloader/fake/texture/FakeNativeImage.class
SHA-256-Digest: uZiXJoWlfk1yvBQzVm7bfHsjpBFRKx5DAq9cSx5DjJA=
Name: customskinloader/utils/TextureUtil$AuthlibField.class
SHA-256-Digest: zUyJtMggKSHdLF97hPecMxw0KQFxpvvUuW39lalqDYI=
Name: BuildInfo.json
SHA-256-Digest: HTHbqMe+bmYrVzodfiY4MJLxoVxk0Yn6KXSLhiQUN4E=
Name: customskinloader/utils/HttpRequestUtil$HttpResponce.class
SHA-256-Digest: HenYTjofBF1ENRRxCKrBOurLT7I0qAAIqgBBL+zcZjg=
Name: customskinloader/loader/LegacyLoader$1.class
SHA-256-Digest: InDEKa+XHorOdcqqfOfXTadzzSWDocDhiWWTPTtlaJc=
Name: customskinloader/profile/UserProfile.class
SHA-256-Digest: euNAB3Lab+jMnclKnWx9w7Eaa3SuYTpWdaYvhAiewR4=
Name: customskinloader/loader/LegacyLoader$LocalSkin.class
SHA-256-Digest: bfHxYquZ2ViYM3n9693LkbByg25o9dNdEYVkrdfSrSs=
Name: customskinloader/log/Logger$Level.class
SHA-256-Digest: yfcPiric+pkoPod/U+VpDjitSWyDf0eDTYAh2bYfezk=
Name: customskinloader/profile/ModelManager0$Model.class
SHA-256-Digest: sOaSTz5uKER8xda1e2aiRFEqPAUtF9ZcVizS0w6bl5s=
Name: customskinloader/loader/jsonapi/UniSkinAPI$SkinMe.class
SHA-256-Digest: 3qfvvQA6T8T5K3LEYYCiFlod1/dh6zXxGLyaTBJwD3Y=
Name: customskinloader/fake/itf/FakeInterfaceManager.class
SHA-256-Digest: s3E+5iTKzj55f28qruAeidDzrxxZMcJhJJGsQZTbBSI=
Name: customskinloader/loader/jsonapi/CustomSkinAPI$LittleSkin.class
SHA-256-Digest: BF8SN6E7NnRpB06z7D/ePPC5gXj1HUnRc80NCT35FAY=
Name: customskinloader/log/Logger.class
SHA-256-Digest: pUOSc2LdM8ZnrbycYeRicz4pk2Ct1wH3JhJAEOvOo84=
Name: customskinloader/loader/LegacyLoader.class
SHA-256-Digest: Py03bUrGr1tTIS9IURK5JhsOehOESi1+uqihpJKALTw=
Name: customskinloader/fake/itf/IFakeIResource$V1.class
SHA-256-Digest: 8tvoHsS/fpQ1e+HWoGTM06L36iJX5LXAnpJ860creoE=
Name: pack.mcmeta
SHA-256-Digest: p59iPcNQdYaNeKMsRJjsjqzev0xa7GfZk3N6M7wT9ys=
Name: customskinloader/loader/jsonapi/WynntilsAPI$WynntilsApiRequest.c
 lass
SHA-256-Digest: N4tsZAxB2Jc06xeGw/+mhnJn8044HuTvDTnxwEX7ZoM=
Name: customskinloader/fake/IFakeImageBuffer.class
SHA-256-Digest: nqTejCH24u00ZBroZdcsHlB3dCuIb+8Ct2RUzW4blBg=
Name: customskinloader/loader/ProfileLoader$IProfileLoader.class
SHA-256-Digest: iJAWrF4RIehL3JlilIRIDnY5GQWUOzIGaQiKYbjows8=
Name: customskinloader/profile/DynamicSkullManager$SkullTexture.class
SHA-256-Digest: 8n08kbzAl60VjjIT2IE4lDcmA+Mkz6PZPfGErL4kE/0=
Name: customskinloader/fake/itf/IFakeSkinManagerCacheKey.class
SHA-256-Digest: sL1HhdBl2ocaXVZTORdI9gNTiXDUlq9gtStSnT920vo=
Name: customskinloader/loader/JsonAPILoader.class
SHA-256-Digest: HN5dz3TAr80fpNIKpw5Rq8rp+zMmBhHpwS5Tn3Za9CU=
Name: customskinloader/loader/jsonapi/CustomSkinAPI$CustomSkinAPIProfi
 le.class
SHA-256-Digest: hzqxHC5salTpLpBzjP73JLyBbZLYjj6zOLVFCku/sxE=
Name: customskinloader/loader/jsonapi/GlitchlessAPI$GlitchlessGames.cl
 ass
SHA-256-Digest: dj51NOlsrpYT0hxxIUx9bLSEoVyUCwL82txczHcAv2Q=
Name: customskinloader/utils/TextureUtil.class
SHA-256-Digest: kVMHNbqScuFtec7AyRkjyT42qGv+JX2IYUJPLMljjxw=
Name: customskinloader/utils/HttpTextureUtil$HttpTextureInfo.class
SHA-256-Digest: y4LzpT+ydEWQOBT4Y6hDaH4hKdk1hqJd67JEuFXmy2s=
Name: customskinloader/profile/ModelManager0.class
SHA-256-Digest: 0Zv7+twIGa51BFDzoFm+DJt2XeljZVx9UwHdVPxf0Ss=
Name: META-INF/mods.toml
SHA-256-Digest: yR+rHUL7e4rplMent9tNpyDps5rHQstyzYZBh33P/Jo=
Name: customskinloader/loader/jsonapi/ElyByAPI.class
SHA-256-Digest: ZNnPbLOGDAGEL0idSc0RjeHDKSc5ac79JG/TBzl402c=
Name: META-INF/coremods.json
SHA-256-Digest: F+NLk3wezripPMF7RxLktvXMcv2kK4IJKotHuicJQGQ=
Name: customskinloader/fake/itf/IFakeIResource$V2.class
SHA-256-Digest: YysFe9JeGIh5XV/XqyjTf+Fdmy8Sf1wgROCZ2R6fl9A=
Name: customskinloader/loader/jsonapi/MinecraftCapesAPI$MinecraftCapes
 ApiResponse.class
SHA-256-Digest: zeSbfG7f97IVlQ3a5HMJyN4u2fJcuMiufHNZBtR/6FM=
Name: customskinloader/utils/JavaUtil.class
SHA-256-Digest: mAONksrROea2Ow/UcCynf42sEc79dgLQf/72SPAGLbk=
Name: customskinloader/loader/MojangAPILoader$DefaultProfile.class
SHA-256-Digest: 2u8D3xOkw2fRo9MIe3JhM476QLjQGLicXGTQGaJmqbw=
Name: customskinloader/fake/FakeSkinBuffer.class
SHA-256-Digest: 09/xkN/7F5EIhEht08LdK9ZqHgZfVytIoLbXHQQ0zR0=
Name: customskinloader/fake/FakeSkinManager$BaseBuffer.class
SHA-256-Digest: hU2Zlj8qKo6ArW/S0aKAqcbpmUVdOPzNRCYByYrP7aY=
Name: LICENSE
SHA-256-Digest: PnJmBvj7MIVI8aAKTP899nP2hTT4N/v0swt/fnfNPjw=
Name: customskinloader/utils/HttpRequestUtil$CacheInfo.class
SHA-256-Digest: B+/FHcBGLP0z+/bc9NB9T9O6fCOVrE2dsvV3CRSX1GA=
Name: customskinloader/loader/JsonAPILoader$IJsonAPI.class
SHA-256-Digest: FxomrW3kDziYtdskFh31xXv76ivH7e+e768MOIk++4A=
Name: customskinloader/loader/jsonapi/CustomSkinAPIPlus.class
SHA-256-Digest: uKZhUchOr6EQ2yBEDqZJEyRhRtMXxzz5+mbhDqhWke4=
Name: customskinloader/utils/TimeUtil.class
SHA-256-Digest: iK1WVbmPj0qKT3IckARB984E4YwMoQMu8mN3uciur/c=
Name: customskinloader/utils/HttpRequestUtil$HttpRequest.class
SHA-256-Digest: CgfKO3seDXZVs8ABmagFmwje3fvII/iuSRBDdffAd9E=
Name: customskinloader/utils/HttpUtil0$SSLSocketFactoryFacade.class
SHA-256-Digest: s+ChOffvUv+SGPEHERjF8BydJApL90O28f7ss87ieWo=
Name: customskinloader/CustomSkinLoader.class
SHA-256-Digest: m8YVJwqUaCQXrpBBejnybxlivasV29rARVxvM4Mk7zk=
Name: customskinloader/loader/ProfileLoader.class
SHA-256-Digest: 2AMOOqQu3aQI78F10eQIo+nrAuRYHngUlYe3yJ1pT3w=
Name: customskinloader/utils/Version.class
SHA-256-Digest: JrtWvW5QE9IuQEDOwEnZT25i+vbl5EoimwmGnB6eZuM=
Name: customskinloader/loader/jsonapi/CustomSkinAPI$BlessingSkin.class
SHA-256-Digest: zARvYl0JpKb9AeLpR6t00idLmeadO0ggBvRdtMO/b+A=
Name: customskinloader/config/SkinSiteProfile.class
SHA-256-Digest: nFEGIyqmSY8gKY6tn00oG1GMmLOPPxvehFD5zq/tHcE=
Name: customskinloader/Logger.class
SHA-256-Digest: 9mEy0gDLZ2fgb4OW3oXbCaCRj2/mL/JxfWFQG7GAfLc=
Name: customskinloader/fake/FakeSkinManager$1.class
SHA-256-Digest: xvbrmdMxfMphMPV8a0SFa3A0FAu86r3AsPHDlD7+Nl4=
Name: customskinloader/loader/jsonapi/CustomSkinAPIPlus$CustomSkinAPIP
 lusPayload.class
SHA-256-Digest: SNLH891NfFY079nW+HdU6FDx8CikjqkkvyYEUA3gghE=
Name: customskinloader/loader/jsonapi/ElyByAPI$1.class
SHA-256-Digest: qmFxkGmRo4J7Oezm9jOdDjgNVvvhHqYWJ4G+QLxX2vU=
Name: customskinloader/loader/jsonapi/WynntilsAPI$WynntilsApiResponse$
 User.class
SHA-256-Digest: AhpAEpVYPqU+OD+Eq8e7maQbNMrlCj4PNEMaZ9zlegg=
Name: customskinloader/fake/itf/IFakeMinecraft.class
SHA-256-Digest: ZHiiIizG151w/GxVY77oSN21O7vrfoBNQK1/EmsGH+U=
Name: customskinloader/loader/MojangAPILoader.class
SHA-256-Digest: qYCUea+2TdTn2gK3pUFLEY5haziXe/vJUT0Bv9ar7TE=
Name: customskinloader/loader/jsonapi/MinecraftCapesAPI.class
SHA-256-Digest: 0qEknV5JhyHaHfVbHOUIDuSkNnr3cpuXnq7yJvrsso0=
Name: customskinloader/loader/jsonapi/WynntilsAPI$Wynntils.class
SHA-256-Digest: vE07G4J8Frhu7hVIjaaLQ8WLyofwqRf9aGpRCoSrBo8=
Name: customskinloader/loader/jsonapi/WynntilsAPI.class
SHA-256-Digest: wzik3UNy4ptKEgNRoKffryuBQ6P/FrA6MFDX0QDK1rc=
Name: transformers.js
SHA-256-Digest: 6UO+t9binitzU8hPb0IwBm21Fj4FFwPfYHfBOjtLscU=
Name: customskinloader/fake/itf/IFakeIImageBuffer.class
SHA-256-Digest: xCmnWvP4Yo/0Ou24gEkKty2mQGSfpOPg6iQAmTJI8Ew=
Name: customskinloader/fake/itf/IFakeIResourceManager.class
SHA-256-Digest: ClsPsLh/dx6fWjTen5CRo8D0dnynwzZN8jbHRD7Bqds=
Name: customskinloader/profile/ProfileCache.class
SHA-256-Digest: l1zoZA//U2jmICcNmxfNteulgU6rB9kgo6zCI9Prxho=
Name: customskinloader/loader/jsonapi/ElyByAPI$ElyBy.class
SHA-256-Digest: D9fV9c+8WD4JsL1tf6SRMBwmmw0mRhv4uW5/41NfSJ4=
Name: customskinloader/loader/jsonapi/ElyByAPI$TLauncher.class
SHA-256-Digest: pjwS6kE7C+k5m6WipPayZA5ELFbmgQ7NsEPwC01cKMc=
Name: customskinloader/fake/texture/FakeImage.class
SHA-256-Digest: 8Ex8nejUMhursdpQDrkZZ8RbiYRNV5cBnuQ8SkveP4g=
Name: customskinloader/loader/jsonapi/WynntilsAPI$WynntilsApiResponse$
 User$Cosmetics.class
SHA-256-Digest: 5CvdhbWnXG3/wdQZr+y6l+Clb1wdtK4YEEjoJP/E8OE=
Name: customskinloader/fake/itf/IFakeIResource.class
SHA-256-Digest: TMicBDDscbier4o8qMLBWnOOvBh+W/l0JM4/H/0jV4I=
Name: customskinloader/config/Config.class
SHA-256-Digest: p0gpDHbEk/4S79K7WBb3JWC424hrPhFBKxhkbNXCZbk=
Name: customskinloader/loader/jsonapi/GlitchlessAPI$GlitchlessApiRespo
 nse.class
SHA-256-Digest: pIW6ROeN5iiOcSAkAFArltdWDQAAy0JzHOVn7Xl5xrg=
Name: customskinloader/loader/jsonapi/WynntilsAPI$WynntilsApiResponse.
 class
SHA-256-Digest: pyDU1OPTh2+qctZHXtrKGre5mNxuVXWeVuUs2i7hgDE=
Name: customskinloader/utils/MinecraftUtil.class
SHA-256-Digest: tjZjhRqhkYn+Et6coJfFplhJpBx2kFHCnnNNbMjVGJU=
Name: customskinloader/loader/jsonapi/MinecraftCapesAPI$MinecraftCapes
 ApiResponse$MinecraftCapesApiTexture.class
SHA-256-Digest: eYtEiA9GubZreo7DOml1/dD2pPHR4lTZDff5lIEKV3E=
Name: customskinloader/fake/FakeClientPlayer$LegacyBuffer.class
SHA-256-Digest: Agd/k/TtsdqRGYksjsRoUvBmt8SVGfMTRCGKYQLDaTU=
Name: customskinloader/loader/JsonAPILoader$ProfileNotFoundException.c
 lass
SHA-256-Digest: yPIzGGLNajELafMlEEtQ8QcfeVvMGK1rjZlpuCmUht4=
Name: customskinloader/fake/FakeSkinManager.class
SHA-256-Digest: KKl7ABoUtzDkUd/h0i3yJTSU6HtoXMUdJ9cF4zQ8kvY=
Name: customskinloader/loader/JsonAPILoader$DefaultProfile.class
SHA-256-Digest: mSFHBGOw/pda10dPD9c62wszRLx/40z2Hu1LIk+7J/4=
Name: customskinloader/log/LogManager.class
SHA-256-Digest: iyKF+kmIac3xH7M5JkWNudenaf/e1xT/eHd3RDpnUmE=
META-INF/CUSTOMSK.DSA
META-INF/coremods.json
{
 "transformers": "transformers.js"
}
META-INF/fml_cache_annotation.json
{
 "customskinloader/fake/FakeClientPlayer$LegacyBuffer": {
 "name": "customskinloader/fake/FakeClientPlayer$LegacyBuffer",
 "interfaces": [
 "net/minecraft/client/resources/SkinManager$SkinTextureCallback"
 ]
 },
 "customskinloader/fake/FakeSkinBuffer": {
 "name": "customskinloader/fake/FakeSkinBuffer",
 "interfaces": [
 "customskinloader/fake/IFakeImageBuffer"
 ]
 },
 "customskinloader/fake/FakeSkinManager$BaseBuffer": {
 "name": "customskinloader/fake/FakeSkinManager$BaseBuffer",
 "interfaces": [
 "customskinloader/fake/IFakeImageBuffer"
 ]
 },
 "customskinloader/fake/IFakeImageBuffer": {
 "name": "customskinloader/fake/IFakeImageBuffer",
 "interfaces": [
 "customskinloader/fake/itf/IFakeIImageBuffer"
 ]
 },
 "customskinloader/fake/itf/IFakeIImageBuffer": {
 "name": "customskinloader/fake/itf/IFakeIImageBuffer",
 "interfaces": [
 "java/lang/Runnable"
 ]
 },
 "customskinloader/fake/texture/FakeBufferedImage": {
 "name": "customskinloader/fake/texture/FakeBufferedImage",
 "interfaces": [
 "customskinloader/fake/texture/FakeImage"
 ]
 },
 "customskinloader/fake/texture/FakeNativeImage": {
 "name": "customskinloader/fake/texture/FakeNativeImage",
 "interfaces": [
 "customskinloader/fake/texture/FakeImage"
 ]
 },
 "customskinloader/forge/ForgeMod": {
 "name": "customskinloader/forge/ForgeMod",
 "annotations": [
 {
 "type": "CLASS",
 "name": "Lnet/minecraftforge/fml/common/Mod;",
 "target": "customskinloader/forge/ForgeMod",
 "values": {
 "acceptedMinecraftVersions": {
 "value": "[1.12.2]"
 },
 "value": {
 "value": "customskinloader"
 }
 }
 }
 ]
 },
 "customskinloader/loader/JsonAPILoader": {
 "name": "customskinloader/loader/JsonAPILoader",
 "interfaces": [
 "customskinloader/plugin/ICustomSkinLoaderPlugin",
 "customskinloader/loader/ProfileLoader$IProfileLoader"
 ]
 },
 "customskinloader/loader/JsonAPILoader$DefaultProfile": {
 "name": "customskinloader/loader/JsonAPILoader$DefaultProfile",
 "interfaces": [
 "customskinloader/plugin/ICustomSkinLoaderPlugin$IDefaultProfile"
 ]
 },
 "customskinloader/loader/LegacyLoader": {
 "name": "customskinloader/loader/LegacyLoader",
 "interfaces": [
 "customskinloader/plugin/ICustomSkinLoaderPlugin",
 "customskinloader/loader/ProfileLoader$IProfileLoader"
 ]
 },
 "customskinloader/loader/LegacyLoader$DefaultProfile": {
 "name": "customskinloader/loader/LegacyLoader$DefaultProfile",
 "interfaces": [
 "customskinloader/plugin/ICustomSkinLoaderPlugin$IDefaultProfile"
 ]
 },
 "customskinloader/loader/MojangAPILoader": {
 "name": "customskinloader/loader/MojangAPILoader",
 "interfaces": [
 "customskinloader/plugin/ICustomSkinLoaderPlugin",
 "customskinloader/loader/ProfileLoader$IProfileLoader"
 ]
 },
 "customskinloader/loader/MojangAPILoader$DefaultProfile": {
 "name": "customskinloader/loader/MojangAPILoader$DefaultProfile",
 "interfaces": [
 "customskinloader/plugin/ICustomSkinLoaderPlugin$IDefaultProfile"
 ]
 },
 "customskinloader/loader/jsonapi/CustomSkinAPI": {
 "name": "customskinloader/loader/jsonapi/CustomSkinAPI",
 "interfaces": [
 "customskinloader/loader/JsonAPILoader$IJsonAPI"
 ]
 },
 "customskinloader/loader/jsonapi/ElyByAPI": {
 "name": "customskinloader/loader/jsonapi/ElyByAPI",
 "interfaces": [
 "customskinloader/loader/JsonAPILoader$IJsonAPI"
 ]
 },
 "customskinloader/loader/jsonapi/GlitchlessAPI": {
 "name": "customskinloader/loader/jsonapi/GlitchlessAPI",
 "interfaces": [
 "customskinloader/loader/JsonAPILoader$IJsonAPI"
 ]
 },
 "customskinloader/loader/jsonapi/MinecraftCapesAPI": {
 "name": "customskinloader/loader/jsonapi/MinecraftCapesAPI",
 "interfaces": [
 "customskinloader/loader/JsonAPILoader$IJsonAPI"
 ]
 },
 "customskinloader/loader/jsonapi/UniSkinAPI": {
 "name": "customskinloader/loader/jsonapi/UniSkinAPI",
 "interfaces": [
 "customskinloader/loader/JsonAPILoader$IJsonAPI"
 ]
 },
 "customskinloader/loader/jsonapi/WynntilsAPI": {
 "name": "customskinloader/loader/jsonapi/WynntilsAPI",
 "interfaces": [
 "customskinloader/loader/JsonAPILoader$IJsonAPI"
 ]
 },
 "customskinloader/utils/Version": {
 "name": "customskinloader/utils/Version",
 "interfaces": [
 "java/lang/Comparable"
 ]
 }
}
META-INF/fml_cache_class_versions.json
{
 "customskinloader/CustomSkinLoader": 52,
 "customskinloader/Logger": 52,
 "customskinloader/config/Config": 52,
 "customskinloader/config/SkinSiteProfile": 52,
 "customskinloader/fake/FakeCapeBuffer": 52,
 "customskinloader/fake/FakeClientPlayer": 52,
 "customskinloader/fake/FakeClientPlayer$LegacyBuffer": 52,
 "customskinloader/fake/FakeMinecraftProfileTexture": 52,
 "customskinloader/fake/FakeSkinBuffer": 52,
 "customskinloader/fake/FakeSkinManager": 52,
 "customskinloader/fake/FakeSkinManager$1": 52,
 "customskinloader/fake/FakeSkinManager$BaseBuffer": 52,
 "customskinloader/fake/FakeSkinManager$FakeCacheKey": 52,
 "customskinloader/fake/IFakeImageBuffer": 52,
 "customskinloader/fake/itf/FakeInterfaceManager": 52,
 "customskinloader/fake/itf/IFakeIImageBuffer": 52,
 "customskinloader/fake/itf/IFakeIResource": 52,
 "customskinloader/fake/itf/IFakeIResource$V1": 52,
 "customskinloader/fake/itf/IFakeIResource$V2": 52,
 "customskinloader/fake/itf/IFakeIResourceManager": 52,
 "customskinloader/fake/itf/IFakeMinecraft": 52,
 "customskinloader/fake/itf/IFakeSkinManagerCacheKey": 52,
 "customskinloader/fake/texture/FakeBufferedImage": 52,
 "customskinloader/fake/texture/FakeImage": 52,
 "customskinloader/fake/texture/FakeNativeImage": 52,
 "customskinloader/forge/ForgeMod": 52,
 "customskinloader/loader/JsonAPILoader": 52,
 "customskinloader/loader/JsonAPILoader$DefaultProfile": 52,
 "customskinloader/loader/JsonAPILoader$ErrorProfile": 52,
 "customskinloader/loader/JsonAPILoader$IJsonAPI": 52,
 "customskinloader/loader/JsonAPILoader$ProfileNotFoundException": 52,
 "customskinloader/loader/LegacyLoader": 52,
 "customskinloader/loader/LegacyLoader$1": 52,
 "customskinloader/loader/LegacyLoader$DefaultProfile": 52,
 "customskinloader/loader/LegacyLoader$LocalSkin": 52,
 "customskinloader/loader/MojangAPILoader": 52,
 "customskinloader/loader/MojangAPILoader$DefaultProfile": 52,
 "customskinloader/loader/MojangAPILoader$Mojang": 52,
 "customskinloader/loader/ProfileLoader":
52,
 "customskinloader/loader/ProfileLoader$IProfileLoader": 52,
 "customskinloader/loader/jsonapi/CustomSkinAPI": 52,
 "customskinloader/loader/jsonapi/CustomSkinAPI$BlessingSkin": 52,
 "customskinloader/loader/jsonapi/CustomSkinAPI$CustomSkinAPIProfile": 52,
 "customskinloader/loader/jsonapi/CustomSkinAPI$LittleSkin": 52,
 "customskinloader/loader/jsonapi/CustomSkinAPIPlus": 52,
 "customskinloader/loader/jsonapi/CustomSkinAPIPlus$CustomSkinAPIPlusPayload": 52,
 "customskinloader/loader/jsonapi/ElyByAPI": 52,
 "customskinloader/loader/jsonapi/ElyByAPI$1": 52,
 "customskinloader/loader/jsonapi/ElyByAPI$ElyBy": 52,
 "customskinloader/loader/jsonapi/ElyByAPI$TLauncher": 52,
 "customskinloader/loader/jsonapi/GlitchlessAPI": 52,
 "customskinloader/loader/jsonapi/GlitchlessAPI$GlitchlessApiResponse": 52,
 "customskinloader/loader/jsonapi/GlitchlessAPI$GlitchlessGames": 52,
 "customskinloader/loader/jsonapi/MinecraftCapesAPI": 52,
 "customskinloader/loader/jsonapi/MinecraftCapesAPI$MinecraftCapes": 52,
 "customskinloader/loader/jsonapi/MinecraftCapesAPI$MinecraftCapesApiResponse": 52,
 "customskinloader/loader/jsonapi/MinecraftCapesAPI$MinecraftCapesApiResponse$MinecraftCapesApiTexture": 52,
 "customskinloader/loader/jsonapi/UniSkinAPI": 52,
 "customskinloader/loader/jsonapi/UniSkinAPI$SkinMe": 52,
 "customskinloader/loader/jsonapi/UniSkinAPI$UniSkinAPIProfile": 52,
 "customskinloader/loader/jsonapi/WynntilsAPI": 52,
 "customskinloader/loader/jsonapi/WynntilsAPI$Wynntils": 52,
 "customskinloader/loader/jsonapi/WynntilsAPI$WynntilsApiRequest": 52,
 "customskinloader/loader/jsonapi/WynntilsAPI$WynntilsApiResponse": 52,
 "customskinloader/loader/jsonapi/WynntilsAPI$WynntilsApiResponse$User": 52,
 "customskinloader/loader/jsonapi/WynntilsAPI$WynntilsApiResponse$User$Cosmetics": 52,
 "customskinloader/log/LogManager": 52,
 "customskinloader/log/Logger": 52,
 "customskinloader/log/Logger$Level": 52,
 "customskinloader/plugin/ICustomSkinLoaderPlugin": 52,
 "customskinloader/plugin/ICustomSkinLoaderPlugin$IDefaultProfile": 52,
 "customskinloader/plugin/PluginLoader": 52,
 "customskinloader/profile/CachedProfile": 52,
 "customskinloader/profile/DynamicSkullManager": 52,
 "customskinloader/profile/DynamicSkullManager$SkullTexture": 52,
 "customskinloader/profile/ModelManager0": 52,
 "customskinloader/profile/ModelManager0$Model": 52,
 "customskinloader/profile/ProfileCache": 52,
 "customskinloader/profile/UserProfile": 52,
 "customskinloader/profile/UserProfile$1": 52,
 "customskinloader/utils/HttpRequestUtil": 52,
 "customskinloader/utils/HttpRequestUtil$CacheInfo": 52,
 "customskinloader/utils/HttpRequestUtil$HttpRequest": 52,
 "customskinloader/utils/HttpRequestUtil$HttpResponce": 52,
 "customskinloader/utils/HttpTextureUtil": 52,
 "customskinloader/utils/HttpTextureUtil$HttpTextureInfo": 52,
 "customskinloader/utils/HttpUtil0": 52,
 "customskinloader/utils/HttpUtil0$SSLSocketFactoryFacade": 52,
 "customskinloader/utils/JavaUtil": 52,
 "customskinloader/utils/MinecraftUtil": 52,
 "customskinloader/utils/TextureUtil": 52,
 "customskinloader/utils/TextureUtil$AuthlibField": 52,
 "customskinloader/utils/TimeUtil": 52,
 "customskinloader/utils/Version": 52
}
META-INF/mods.toml
modLoader="javafml"
loaderVersion="[37,)"
license="GPL-3.0-only"
issueTrackerURL="https://github.com/xfl03/MCCustomSkinLoader/issues"
[[mods]]
modId="customskinloader"
version="14.19.1"
displayName="CustomSkinLoader"
description='''
Custom Skin Loader for Minecraft
'''
displayURL="https://github.com/xfl03/MCCustomSkinLoader"
authors=["xfl03", "JLChnToZ"]
[[dependencies.customskinloader]]
modId="forge"
mandatory=true
versionRange="[37,)"
ordering="NONE"
side="CLIENT"
[[dependencies.customskinloader]]
modId="minecraft"
mandatory=true
versionRange="[1.17.1,)"
ordering="NONE"
side="CLIENT"
BuildInfo.json
{
 "name": "CustomSkinLoader",
 "version": "14.19.1",
 "fullVersion": "14.19.1",
 "mcVersion": "1.17.1",
 "mcFullVersions": "1.17.1,1.18,1.18.1,1.18.2,1.19,1.19.1,1.19.2,1.19.3,1.19.4,1.20,1.20.1,1.20.2,1.20.3,1.20.4",
 "forgeVersion": "14.23.5.2768",
 "gitVersion": "4185e5bb5fca6c9a5a0ff7080a0dbf885e4b4bf0",
 "buildUrl": "https://github.com/xfl03/MCCustomSkinLoader/actions/runs/7289464875",
 "buildTime": "2023-12-21T14:33:43+0000"
}
LICENSE
English(en)
LICENSE - Binary File
You could not modify binary file.
Feel free to use and share this mod and unmodified file in anyway like modpack.
When using in modpack, you must put 'CustomSkinLoader' in mod list. 
You could not repost this mod to any website without permission.
You could not earn money with this mod excluding modpack.
LICENSE - Source Code
GPLv3: http://www.gnu.org/licenses/gpl.html 
When using the code, you should change the name of package to avoid others' misunderstanding. 
OTHER - Useful Link
Source Code: https://github.com/xfl03/MCCustomSkinLoader
Release Page: http://www.mcbbs.net/thread-269807-1-1.html
Build Server: https://ci.infstudio.net/job/CustomSkinLoader/
中文简体(zh_cn)
许可 - 编译产物
您不得对CustomSkinLoader的成品jar内部内容进行任何修改
您可以在不经我许可的情况下,以任意方式传播这一mod以及jar文件(例如加入整合包)。
在加入整合包时,请必须在帖子内mod列表中明确写上"万用皮肤补丁"或者"CustomSkinLoader"或者附上发布页面地址。
您不得在未经许可的情况下,在国内外任何网站进行二次发布(包括皮肤站)。
您不得以任何形式出售CustomSkinLoader或任何使用或参考CustomSkinLoader源代码的作品。
许可 - 源代码
GPLv3: http://www.gnu.org/licenses/gpl.html 
为避免他人误解,您在使用代码时必须修改包名。
其他 - 有用的链接
源代码: https://github.com/xfl03/MCCustomSkinLoader
发布页面: http://www.mcbbs.net/thread-269807-1-1.html
构建服务器: https://ci.infstudio.net/job/CustomSkinLoader/
customskinloader/CustomSkinLoader.class
package customskinloader;
public synchronized class CustomSkinLoader {
 public static final String CustomSkinLoader_VERSION = 14.19.1;
 public static final String CustomSkinLoader_FULL_VERSION = 14.19.1;
 public static final int CustomSkinLoader_BUILD_NUMBER;
 public static final java.io.File DATA_DIR;
 public static final java.io.File LOG_FILE;
 public static final java.io.File CONFIG_FILE;
 public static final com.google.gson.Gson GSON;
 public static final log.Logger logger;
 public static final config.Config config;
 private static final profile.ProfileCache profileCache;
 private static final profile.DynamicSkullManager dynamicSkullManager;
 public static final java.util.concurrent.ExecutorService THREAD_POOL;
 private static final java.util.concurrent.ThreadFactory defaultFactory;
 private static final java.util.concurrent.ThreadFactory customFactory;
 private static final java.util.concurrent.ThreadPoolExecutor threadPool;
 public void CustomSkinLoader();
 public static void loadProfileTextures(Runnable);
 public static Object loadProfileLazily(com.mojang.authlib.GameProfile, java.util.function.Function);
 public static profile.UserProfile loadProfile(com.mojang.authlib.GameProfile);
 public static profile.UserProfile loadProfile0(com.mojang.authlib.GameProfile, boolean);
 public static java.util.Map loadProfileFromCache(com.mojang.authlib.GameProfile);
 private static log.Logger initLogger();
 private static config.Config initConfig();
 static void <clinit>();
}
customskinloader/Logger.class
package customskinloader;
public synchronized class Logger extends log.Logger {
 public void Logger();
}
customskinloader/config/Config.class
package customskinloader.config;
public synchronized class Config {
 public String version;
 public int buildNumber;
 public java.util.List loadlist;
 public boolean enableDynamicSkull;
 public boolean enableTransparentSkin;
 public boolean forceLoadAllTextures;
 public boolean enableCape;
 public int threadPoolSize;
 public boolean enableLogStdOut;
 public int cacheExpiry;
 public boolean forceUpdateSkull;
 public boolean enableLocalProfileCache;
 public boolean enableCacheAutoClean;
 public boolean forceDisableCache;
 public void Config();
 public void Config(java.util.List);
 public static Config loadConfig0();
 private static Config
loadConfig();
 private void loadExtraList();
 private void updateLoadlist();
 private void initLocalFolder();
 private static void createBrokenFile(java.io.File);
 private static Config initConfig();
 private static void writeConfig(Config, boolean);
}
customskinloader/config/SkinSiteProfile.class
package customskinloader.config;
public synchronized class SkinSiteProfile {
 public String name;
 public String type;
 public String userAgent;
 public String apiRoot;
 public String sessionRoot;
 public String root;
 public Boolean checkPNG;
 public String skin;
 public String model;
 public String cape;
 public String elytra;
 public void SkinSiteProfile();
 public String toString();
}
customskinloader/fake/FakeCapeBuffer.class
package customskinloader.fake;
public synchronized class FakeCapeBuffer extends FakeSkinBuffer {
 private static final net.minecraft.resources.ResourceLocation TEXTURE_ELYTRA;
 private static int loadedGlobal;
 private static texture.FakeImage elytraImage;
 private int loaded;
 private double ratioX;
 private double ratioY;
 private String type;
 public void FakeCapeBuffer();
 private static texture.FakeImage loadElytra(texture.FakeImage);
 public texture.FakeImage parseUserSkin(texture.FakeImage);
 public String judgeType();
 private void attachElytra(texture.FakeImage);
 private Object withElytraPixels(java.util.function.BiPredicate, Object, Object);
 private static texture.FakeImage resetImageFormat(texture.FakeImage, int, int, int, int);
 private static texture.FakeImage scaleImage(texture.FakeImage, boolean, double, double, double, double, int, int, int, int, int, int);
 private static boolean isOptiFineCape(texture.FakeImage);
 private static texture.FakeImage convertOptiFineCape(texture.FakeImage);
 private static void copyImageData(texture.FakeImage, texture.FakeImage);
 static void <clinit>();
}
customskinloader/fake/FakeClientPlayer$LegacyBuffer.class
package customskinloader.fake;
public synchronized class FakeClientPlayer$LegacyBuffer implements net.minecraft.client.resources.SkinManager$SkinTextureCallback {
 net.minecraft.resources.ResourceLocation resourceLocationIn;
 boolean loaded;
 public void FakeClientPlayer$LegacyBuffer(net.minecraft.resources.ResourceLocation);
 public void m_118856_(com.mojang.authlib.minecraft.MinecraftProfileTexture$Type, net.minecraft.resources.ResourceLocation, com.mojang.authlib.minecraft.MinecraftProfileTexture);
}
customskinloader/fake/FakeClientPlayer.class
package customskinloader.fake;
public synchronized class FakeClientPlayer {
 public static java.util.Map textureCache;
 public void FakeClientPlayer();
 public static net.minecraft.client.renderer.texture.HttpTexture putCache(net.minecraft.client.renderer.texture.HttpTexture, net.minecraft.client.resources.SkinManager$SkinTextureCallback, net.minecraft.resources.ResourceLocation);
 public static net.minecraft.client.renderer.texture.HttpTexture getDownloadImageSkin(net.minecraft.resources.ResourceLocation, String);
 public static net.minecraft.resources.ResourceLocation getLocationSkin(String);
 public static java.util.UUID getOfflineUUID(String);
 static void <clinit>();
}
customskinloader/fake/FakeMinecraftProfileTexture.class
package customskinloader.fake;
public synchronized class FakeMinecraftProfileTexture extends com.mojang.authlib.minecraft.MinecraftProfileTexture {
 private static final java.util.Map MODEL_CACHE;
 private final customskinloader.utils.HttpTextureUtil$HttpTextureInfo info;
 private final java.util.Map metadata;
 public void FakeMinecraftProfileTexture(String, java.util.Map);
 public String getUrl();
 public String getMetadata(String);
 public void setModel(String);
 public String getHash();
 public java.io.File getCacheFile();
 static void <clinit>();
}
customskinloader/fake/FakeSkinBuffer.class
package customskinloader.fake;
public synchronized class FakeSkinBuffer implements IFakeImageBuffer {
 private int ratio;
 texture.FakeImage image;
 static final java.util.function.Function EQU_BG;
 private static final int A = 16777215;
 private static final int WHITE;
 private static final int BLACK;
 private static final int B = -16777216;
 public void FakeSkinBuffer();
 public static com.mojang.blaze3d.platform.NativeImage processLegacySkin(com.mojang.blaze3d.platform.NativeImage, Runnable, java.util.function.Function);
 public com.mojang.blaze3d.platform.NativeImage func_195786_a(com.mojang.blaze3d.platform.NativeImage);
 public java.awt.image.BufferedImage parseUserSkin(java.awt.image.BufferedImage);
 public texture.FakeImage parseUserSkin(texture.FakeImage);
 public String judgeType();
 private boolean isFilled(int, int, int, int);
 private void setAreaTransparent(int, int, int, int);
 private void setAreaOpaque(int, int, int, int);
 private void setAreaDueToConfig(int, int, int, int);
 public void skinAvailable();
 private static int getARGB(int, int, int, int);
 private static int getA(int);
 static void <clinit>();
}
customskinloader/fake/FakeSkinManager$1.class
package customskinloader.fake;
synchronized class FakeSkinManager$1 {
 static void <clinit>();
}
customskinloader/fake/FakeSkinManager$BaseBuffer.class
package customskinloader.fake;
synchronized class FakeSkinManager$BaseBuffer implements IFakeImageBuffer {
 private IFakeImageBuffer buffer;
 private final Runnable callback;
 private final FakeMinecraftProfileTexture texture;
 public void FakeSkinManager$BaseBuffer(Runnable, com.mojang.authlib.minecraft.MinecraftProfileTexture$Type, FakeMinecraftProfileTexture);
 public com.mojang.blaze3d.platform.NativeImage func_195786_a(com.mojang.blaze3d.platform.NativeImage);
 public java.awt.image.BufferedImage parseUserSkin(java.awt.image.BufferedImage);
 public void skinAvailable();
}
customskinloader/fake/FakeSkinManager$FakeCacheKey.class
package customskinloader.fake;
public synchronized class FakeSkinManager$FakeCacheKey {
 public void FakeSkinManager$FakeCacheKey();
 public static Object wrapCacheKey(Object, com.mojang.authlib.GameProfile);
 public static com.mojang.authlib.GameProfile unwrapCacheKey(Object);
 public static com.mojang.authlib.GameProfile unwrapProperty(com.mojang.authlib.properties.Property);
 public static Object createMinecraftProfileTextures(java.util.Map);
}
customskinloader/fake/FakeSkinManager.class
package customskinloader.fake;
public synchronized class FakeSkinManager {
 private static com.google.common.cache.CacheLoader cacheLoader;
 private static final String KEY = CustomSkinLoaderInfo;
 private static final String SKULL_KEY = CSL$IsSkull;
 public void FakeSkinManager();
 public static void setSkinCacheDir(java.io.File);
 public static void setSkinCacheDir(java.nio.file.Path);
 public static com.google.common.cache.CacheLoader setCacheLoader(com.google.common.cache.CacheLoader);
 public static com.mojang.authlib.properties.Property createProperty(com.mojang.authlib.properties.Property);
 public static Object loadCache(com.google.common.cache.LoadingCache, Object, com.mojang.authlib.GameProfile) throws Exception;
 public static Object[] createThreadDownloadImageData(com.google.common.collect.ImmutableList, com.mojang.authlib.minecraft.MinecraftProfileTexture, com.mojang.authlib.minecraft.MinecraftProfileTexture$Type);
 public static void loadProfileTextures(Runnable, com.mojang.authlib.GameProfile);
 public static Object[] loadProfileTextures(com.google.common.collect.ImmutableList, Object);
 public static java.util.Map getUserProfile(com.mojang.authlib.minecraft.MinecraftSessionService, com.mojang.authlib.GameProfile, boolean);
 public static void loadElytraTexture(net.minecraft.client.resources.SkinManager, java.util.Map, net.minecraft.client.resources.SkinManager$SkinTextureCallback);
public static void setSkullType(com.mojang.authlib.GameProfile);
 public static java.util.Map loadSkinFromCache(com.mojang.authlib.GameProfile);
 public static java.util.Map loadSkinFromCache(com.mojang.authlib.minecraft.MinecraftSessionService, com.mojang.authlib.GameProfile, boolean);
 public static Object loadSkinFromCache(com.mojang.authlib.minecraft.MinecraftSessionService, com.mojang.authlib.properties.Property);
 private static boolean shouldJudgeType(com.mojang.authlib.minecraft.MinecraftProfileTexture);
}
customskinloader/fake/IFakeImageBuffer.class
package customskinloader.fake;
public abstract interface IFakeImageBuffer extends itf.IFakeIImageBuffer {
 public abstract java.awt.image.BufferedImage parseUserSkin(java.awt.image.BufferedImage);
 public abstract com.mojang.blaze3d.platform.NativeImage func_195786_a(com.mojang.blaze3d.platform.NativeImage);
 public abstract void skinAvailable();
}
customskinloader/fake/itf/FakeInterfaceManager.class
package customskinloader.fake.itf;
public synchronized class FakeInterfaceManager {
 public void FakeInterfaceManager();
 public static java.io.InputStream IResource_getInputStream(Object);
 public static java.util.Optional IResourceManager_getResource(Object, net.minecraft.resources.ResourceLocation) throws java.io.IOException;
 public static net.minecraft.server.packs.resources.ResourceManager Minecraft_getResourceManager(Object);
}
customskinloader/fake/itf/IFakeIImageBuffer.class
package customskinloader.fake.itf;
public abstract interface IFakeIImageBuffer extends Runnable {
 public void run();
}
customskinloader/fake/itf/IFakeIResource$V1.class
package customskinloader.fake.itf;
public abstract interface IFakeIResource$V1 {
 public java.io.InputStream m_6679_();
}
customskinloader/fake/itf/IFakeIResource$V2.class
package customskinloader.fake.itf;
public abstract interface IFakeIResource$V2 {
 public java.io.InputStream m_215507_();
}
customskinloader/fake/itf/IFakeIResource.class
package customskinloader.fake.itf;
public abstract interface IFakeIResource {
}
customskinloader/fake/itf/IFakeIResourceManager.class
package customskinloader.fake.itf;
public abstract interface IFakeIResourceManager {
 public net.minecraft.server.packs.resources.Resource m_142591_(net.minecraft.resources.ResourceLocation) throws java.io.IOException;
 public java.util.Optional m_213713_(net.minecraft.resources.ResourceLocation) throws java.io.IOException;
}
customskinloader/fake/itf/IFakeMinecraft.class
package customskinloader.fake.itf;
public abstract interface IFakeMinecraft {
 public net.minecraft.server.packs.resources.ResourceManager m_91098_();
}
customskinloader/fake/itf/IFakeSkinManagerCacheKey.class
package customskinloader.fake.itf;
public abstract interface IFakeSkinManagerCacheKey {
 public com.mojang.authlib.GameProfile f_290972_();
 public abstract com.mojang.authlib.properties.Property f_303729_();
}
customskinloader/fake/texture/FakeBufferedImage.class
package customskinloader.fake.texture;
public synchronized class FakeBufferedImage implements FakeImage {
 private java.awt.image.BufferedImage image;
 private java.awt.Graphics graphics;
 public void FakeBufferedImage(int, int);
 public void FakeBufferedImage(java.awt.image.BufferedImage);
 public java.awt.image.BufferedImage getImage();
 public FakeImage createImage(int, int);
 public FakeImage createImage(java.io.InputStream) throws java.io.IOException;
 public int getWidth();
 public int getHeight();
 public int getRGBA(int, int);
 public void setRGBA(int, int, int);
 public void copyImageData(FakeImage);
 public void fillArea(int, int, int, int);
 public void copyArea(int, int, int, int, int, int, boolean, boolean);
 public void close();
}
customskinloader/fake/texture/FakeImage.class
package customskinloader.fake.texture;
public abstract interface FakeImage {
 public abstract FakeImage createImage(int, int);
 public abstract FakeImage createImage(java.io.InputStream) throws java.io.IOException;
 public abstract int getWidth();
 public abstract int getHeight();
 public abstract int getRGBA(int, int);
 public abstract void setRGBA(int, int, int);
 public abstract void copyImageData(FakeImage);
 public abstract void fillArea(int, int, int, int);
 public abstract void copyArea(int, int, int, int, int, int, boolean, boolean);
 public abstract void close();
}
customskinloader/fake/texture/FakeNativeImage.class
package customskinloader.fake.texture;
public synchronized class FakeNativeImage implements FakeImage {
 private com.mojang.blaze3d.platform.NativeImage image;
 public void FakeNativeImage(int, int);
 public void FakeNativeImage(com.mojang.blaze3d.platform.NativeImage);
 public com.mojang.blaze3d.platform.NativeImage getImage();
 public FakeImage createImage(int, int);
 public FakeImage createImage(java.io.InputStream);
 public int getWidth();
 public int getHeight();
 public int getRGBA(int, int);
 public void setRGBA(int, int, int);
 public void copyImageData(FakeImage);
 public void fillArea(int, int, int, int);
 public void copyArea(int, int, int, int, int, int, boolean, boolean);
 public void close();
}
customskinloader/forge/ForgeMod.class
package customskinloader.forge;
public synchronized class ForgeMod {
 public void ForgeMod();
 private void setExtensionPoint();
}
customskinloader/loader/JsonAPILoader$DefaultProfile.class
package customskinloader.loader;
public abstract synchronized class JsonAPILoader$DefaultProfile implements customskinloader.plugin.ICustomSkinLoaderPlugin$IDefaultProfile {
 protected final JsonAPILoader loader;
 public void JsonAPILoader$DefaultProfile(JsonAPILoader);
 public void updateSkinSiteProfile(customskinloader.config.SkinSiteProfile);
 public abstract String getRoot();
}
customskinloader/loader/JsonAPILoader$ErrorProfile.class
package customskinloader.loader;
public synchronized class JsonAPILoader$ErrorProfile {
 public int errno;
 public String msg;
 public void JsonAPILoader$ErrorProfile();
}
customskinloader/loader/JsonAPILoader$IJsonAPI.class
package customskinloader.loader;
public abstract interface JsonAPILoader$IJsonAPI {
 public abstract java.util.List getDefaultProfiles(JsonAPILoader);
 public abstract String toJsonUrl(String, String);
 public String getPayload(customskinloader.config.SkinSiteProfile);
 public String getPayload(customskinloader.config.SkinSiteProfile, String);
 public abstract customskinloader.profile.UserProfile toUserProfile(String, String, boolean);
 public abstract String getName();
}
customskinloader/loader/JsonAPILoader$ProfileNotFoundException.class
package customskinloader.loader;
public synchronized class JsonAPILoader$ProfileNotFoundException extends RuntimeException {
 public void JsonAPILoader$ProfileNotFoundException();
}
customskinloader/loader/JsonAPILoader.class
package customskinloader.loader;
public synchronized class JsonAPILoader implements customskinloader.plugin.ICustomSkinLoaderPlugin, ProfileLoader$IProfileLoader {
 private final JsonAPILoader$IJsonAPI jsonAPI;
 public void JsonAPILoader(JsonAPILoader$IJsonAPI);
 public ProfileLoader$IProfileLoader getProfileLoader();
 public java.util.List getDefaultProfiles();
 public customskinloader.profile.UserProfile loadProfile(customskinloader.config.SkinSiteProfile, com.mojang.authlib.GameProfile) throws Exception;
 public boolean compare(customskinloader.config.SkinSiteProfile, customskinloader.config.SkinSiteProfile);
 public String getName();
 public void init(customskinloader.config.SkinSiteProfile);
}
customskinloader/loader/LegacyLoader$1.class
package customskinloader.loader;
final synchronized class LegacyLoader$1 extends LegacyLoader$DefaultProfile {
 void LegacyLoader$1(LegacyLoader, String, String, int);
 public String getSkinRoot();
public String getCapeRoot();
 public String getElytraRoot();
 public String getName();
 public int getPriority();
}
customskinloader/loader/LegacyLoader$DefaultProfile.class
package customskinloader.loader;
public abstract synchronized class LegacyLoader$DefaultProfile implements customskinloader.plugin.ICustomSkinLoaderPlugin$IDefaultProfile {
 protected final LegacyLoader loader;
 public void LegacyLoader$DefaultProfile(LegacyLoader);
 public void updateSkinSiteProfile(customskinloader.config.SkinSiteProfile);
 public abstract String getSkinRoot();
 public abstract String getCapeRoot();
 public abstract String getElytraRoot();
}
customskinloader/loader/LegacyLoader$LocalSkin.class
package customskinloader.loader;
public synchronized class LegacyLoader$LocalSkin extends LegacyLoader$DefaultProfile {
 public void LegacyLoader$LocalSkin(LegacyLoader);
 public String getName();
 public int getPriority();
 public String getSkinRoot();
 public String getCapeRoot();
 public String getElytraRoot();
}
customskinloader/loader/LegacyLoader.class
package customskinloader.loader;
public synchronized class LegacyLoader implements customskinloader.plugin.ICustomSkinLoaderPlugin, ProfileLoader$IProfileLoader {
 public static final String USERNAME_PLACEHOLDER = {USERNAME};
 public static final String UUID_PLACEHOLDER = {UUID};
 public static final String STANDARD_UUID_PLACEHOLDER = {STANDARD_UUID};
 public void LegacyLoader();
 public ProfileLoader$IProfileLoader getProfileLoader();
 public java.util.List getDefaultProfiles();
 public static LegacyLoader$DefaultProfile getCapeProfile(LegacyLoader, String, String, int);
 public customskinloader.profile.UserProfile loadProfile(customskinloader.config.SkinSiteProfile, com.mojang.authlib.GameProfile);
 private void getTextureUrl(customskinloader.config.SkinSiteProfile, com.mojang.authlib.GameProfile, String, java.util.function.Consumer);
 public boolean compare(customskinloader.config.SkinSiteProfile, customskinloader.config.SkinSiteProfile);
 public String getName();
 public void init(customskinloader.config.SkinSiteProfile);
 private void initFolder(String);
 private String expandURL(String, String);
}
customskinloader/loader/MojangAPILoader$DefaultProfile.class
package customskinloader.loader;
public abstract synchronized class MojangAPILoader$DefaultProfile implements customskinloader.plugin.ICustomSkinLoaderPlugin$IDefaultProfile {
 protected final MojangAPILoader loader;
 public void MojangAPILoader$DefaultProfile(MojangAPILoader);
 public void updateSkinSiteProfile(customskinloader.config.SkinSiteProfile);
 public abstract String getAPIRoot();
 public abstract String getSessionRoot();
}
customskinloader/loader/MojangAPILoader$Mojang.class
package customskinloader.loader;
public synchronized class MojangAPILoader$Mojang extends MojangAPILoader$DefaultProfile {
 public void MojangAPILoader$Mojang(MojangAPILoader);
 public String getName();
 public int getPriority();
 public String getAPIRoot();
 public String getSessionRoot();
}
customskinloader/loader/MojangAPILoader.class
package customskinloader.loader;
public synchronized class MojangAPILoader implements customskinloader.plugin.ICustomSkinLoaderPlugin, ProfileLoader$IProfileLoader {
 public static final com.google.gson.Gson GSON;
 private static final java.util.Map gameProfileCache;
 private static final String MOJANG_API_ROOT = https://api{DO_NOT_MODIFY}.mojang.com/;
 private static final String MOJANG_SESSION_ROOT = https://sessionserver{DO_NOT_MODIFY}.mojang.com/;
 public void MojangAPILoader();
 public ProfileLoader$IProfileLoader getProfileLoader();
 public java.util.List getDefaultProfiles();
 public customskinloader.profile.UserProfile loadProfile(customskinloader.config.SkinSiteProfile, com.mojang.authlib.GameProfile);
 public static com.mojang.authlib.GameProfile loadGameProfileCached(String, String);
 public static com.mojang.authlib.GameProfile loadGameProfile(String, String);
 public static String getMojangUuidByUsername(String, boolean);
 public static com.mojang.authlib.GameProfile fillGameProfile(String, com.mojang.authlib.GameProfile);
 public static java.util.Map getTextures(com.mojang.authlib.GameProfile);
 public boolean compare(customskinloader.config.SkinSiteProfile, customskinloader.config.SkinSiteProfile);
 public String getName();
 public void init(customskinloader.config.SkinSiteProfile);
 public static String getMojangApiRoot();
 public static String getMojangSessionRoot();
 static void <clinit>();
}
customskinloader/loader/ProfileLoader$IProfileLoader.class
package customskinloader.loader;
public abstract interface ProfileLoader$IProfileLoader {
 public abstract customskinloader.profile.UserProfile loadProfile(customskinloader.config.SkinSiteProfile, com.mojang.authlib.GameProfile) throws Exception;
 public abstract boolean compare(customskinloader.config.SkinSiteProfile, customskinloader.config.SkinSiteProfile);
 public abstract String getName();
 public abstract void init(customskinloader.config.SkinSiteProfile);
}
customskinloader/loader/ProfileLoader.class
package customskinloader.loader;
public synchronized class ProfileLoader {
 public static final java.util.HashMap LOADERS;
 public void ProfileLoader();
 private static java.util.HashMap initLoaders();
 static void <clinit>();
}
customskinloader/loader/jsonapi/CustomSkinAPI$BlessingSkin.class
package customskinloader.loader.jsonapi;
public synchronized class CustomSkinAPI$BlessingSkin extends customskinloader.loader.JsonAPILoader$DefaultProfile {
 public void CustomSkinAPI$BlessingSkin(customskinloader.loader.JsonAPILoader);
 public String getName();
 public int getPriority();
 public String getRoot();
}
customskinloader/loader/jsonapi/CustomSkinAPI$CustomSkinAPIProfile.class
package customskinloader.loader.jsonapi;
synchronized class CustomSkinAPI$CustomSkinAPIProfile {
 public String username;
 public java.util.LinkedHashMap textures;
 public java.util.LinkedHashMap skins;
 public String skin;
 public String cape;
 public String elytra;
 private void CustomSkinAPI$CustomSkinAPIProfile();
}
customskinloader/loader/jsonapi/CustomSkinAPI$LittleSkin.class
package customskinloader.loader.jsonapi;
public synchronized class CustomSkinAPI$LittleSkin extends customskinloader.loader.JsonAPILoader$DefaultProfile {
 public void CustomSkinAPI$LittleSkin(customskinloader.loader.JsonAPILoader);
 public String getName();
 public int getPriority();
 public String getRoot();
}
customskinloader/loader/jsonapi/CustomSkinAPI.class
package customskinloader.loader.jsonapi;
public synchronized class CustomSkinAPI implements customskinloader.loader.JsonAPILoader$IJsonAPI {
 private static final String TEXTURES = textures/;
 private static final String SUFFIX = .json;
 public void CustomSkinAPI();
 public java.util.List getDefaultProfiles(customskinloader.loader.JsonAPILoader);
 public String toJsonUrl(String, String);
 public customskinloader.profile.UserProfile toUserProfile(String, String, boolean);
 public String getName();
}
customskinloader/loader/jsonapi/CustomSkinAPIPlus$CustomSkinAPIPlusPayload.class
package customskinloader.loader.jsonapi;
public synchronized class CustomSkinAPIPlus$CustomSkinAPIPlusPayload {
 String gameVersion;
 String modVersion;
 String serverAddress;
 String clientID;
 void CustomSkinAPIPlus$CustomSkinAPIPlusPayload();
}
customskinloader/loader/jsonapi/CustomSkinAPIPlus.class
package customskinloader.loader.jsonapi;
public synchronized class CustomSkinAPIPlus extends CustomSkinAPI {
 private static String clientID;
 public void CustomSkinAPIPlus();
 public java.util.List getDefaultProfiles(customskinloader.loader.JsonAPILoader);
 public String getPayload(customskinloader.config.SkinSiteProfile);
public String getName();
 static void <clinit>();
}
customskinloader/loader/jsonapi/ElyByAPI$1.class
package customskinloader.loader.jsonapi;
synchronized class ElyByAPI$1 extends com.google.gson.reflect.TypeToken {
 void ElyByAPI$1(ElyByAPI);
}
customskinloader/loader/jsonapi/ElyByAPI$ElyBy.class
package customskinloader.loader.jsonapi;
public synchronized class ElyByAPI$ElyBy extends customskinloader.loader.JsonAPILoader$DefaultProfile {
 public void ElyByAPI$ElyBy(customskinloader.loader.JsonAPILoader);
 public String getName();
 public int getPriority();
 public String getRoot();
}
customskinloader/loader/jsonapi/ElyByAPI$TLauncher.class
package customskinloader.loader.jsonapi;
public synchronized class ElyByAPI$TLauncher extends customskinloader.loader.JsonAPILoader$DefaultProfile {
 public void ElyByAPI$TLauncher(customskinloader.loader.JsonAPILoader);
 public String getName();
 public int getPriority();
 public String getRoot();
}
customskinloader/loader/jsonapi/ElyByAPI.class
package customskinloader.loader.jsonapi;
public synchronized class ElyByAPI implements customskinloader.loader.JsonAPILoader$IJsonAPI {
 public void ElyByAPI();
 public java.util.List getDefaultProfiles(customskinloader.loader.JsonAPILoader);
 public String toJsonUrl(String, String);
 public customskinloader.profile.UserProfile toUserProfile(String, String, boolean);
 public String getName();
}
customskinloader/loader/jsonapi/GlitchlessAPI$GlitchlessApiResponse.class
package customskinloader.loader.jsonapi;
public synchronized class GlitchlessAPI$GlitchlessApiResponse {
 protected java.util.Map textures;
 public void GlitchlessAPI$GlitchlessApiResponse();
}
customskinloader/loader/jsonapi/GlitchlessAPI$GlitchlessGames.class
package customskinloader.loader.jsonapi;
public synchronized class GlitchlessAPI$GlitchlessGames extends customskinloader.loader.JsonAPILoader$DefaultProfile {
 public void GlitchlessAPI$GlitchlessGames(customskinloader.loader.JsonAPILoader);
 public String getName();
 public int getPriority();
 public String getRoot();
}
customskinloader/loader/jsonapi/GlitchlessAPI.class
package customskinloader.loader.jsonapi;
public synchronized class GlitchlessAPI implements customskinloader.loader.JsonAPILoader$IJsonAPI {
 public void GlitchlessAPI();
 public java.util.List getDefaultProfiles(customskinloader.loader.JsonAPILoader);
 public String toJsonUrl(String, String);
 public customskinloader.profile.UserProfile toUserProfile(String, String, boolean);
 public String getName();
}
customskinloader/loader/jsonapi/MinecraftCapesAPI$MinecraftCapes.class
package customskinloader.loader.jsonapi;
public synchronized class MinecraftCapesAPI$MinecraftCapes extends customskinloader.loader.JsonAPILoader$DefaultProfile {
 public void MinecraftCapesAPI$MinecraftCapes(customskinloader.loader.JsonAPILoader);
 public String getName();
 public int getPriority();
 public String getRoot();
}
customskinloader/loader/jsonapi/MinecraftCapesAPI$MinecraftCapesApiResponse$MinecraftCapesApiTexture.class
package customskinloader.loader.jsonapi;
public synchronized class MinecraftCapesAPI$MinecraftCapesApiResponse$MinecraftCapesApiTexture {
 public String cape;
 public String ears;
 public void MinecraftCapesAPI$MinecraftCapesApiResponse$MinecraftCapesApiTexture();
}
customskinloader/loader/jsonapi/MinecraftCapesAPI$MinecraftCapesApiResponse.class
package customskinloader.loader.jsonapi;
public synchronized class MinecraftCapesAPI$MinecraftCapesApiResponse {
 public boolean animatedCape;
 public boolean capeGlint;
 public boolean upsideDown;
 public MinecraftCapesAPI$MinecraftCapesApiResponse$MinecraftCapesApiTexture textures;
 public void MinecraftCapesAPI$MinecraftCapesApiResponse();
}
customskinloader/loader/jsonapi/MinecraftCapesAPI.class
package customskinloader.loader.jsonapi;
public synchronized class MinecraftCapesAPI implements customskinloader.loader.JsonAPILoader$IJsonAPI {
 public void MinecraftCapesAPI();
 public java.util.List getDefaultProfiles(customskinloader.loader.JsonAPILoader);
 public String toJsonUrl(String, String);
 public customskinloader.profile.UserProfile toUserProfile(String, String, boolean);
 public String getName();
}
customskinloader/loader/jsonapi/UniSkinAPI$SkinMe.class
package customskinloader.loader.jsonapi;
public synchronized class UniSkinAPI$SkinMe extends customskinloader.loader.JsonAPILoader$DefaultProfile {
 public void UniSkinAPI$SkinMe(customskinloader.loader.JsonAPILoader);
 public String getName();
 public int getPriority();
 public String getRoot();
}
customskinloader/loader/jsonapi/UniSkinAPI$UniSkinAPIProfile.class
package customskinloader.loader.jsonapi;
synchronized class UniSkinAPI$UniSkinAPIProfile {
 public String player_name;
 public long last_update;
 public java.util.List model_preference;
 public java.util.Map skins;
 public String cape;
 private void UniSkinAPI$UniSkinAPIProfile();
}
customskinloader/loader/jsonapi/UniSkinAPI.class
package customskinloader.loader.jsonapi;
public synchronized class UniSkinAPI implements customskinloader.loader.JsonAPILoader$IJsonAPI {
 private static final String TEXTURES = textures/;
 private static final String SUFFIX = .json;
 public void UniSkinAPI();
 public java.util.List getDefaultProfiles(customskinloader.loader.JsonAPILoader);
 public String toJsonUrl(String, String);
 public customskinloader.profile.UserProfile toUserProfile(String, String, boolean);
 public String getName();
}
customskinloader/loader/jsonapi/WynntilsAPI$Wynntils.class
package customskinloader.loader.jsonapi;
public synchronized class WynntilsAPI$Wynntils extends customskinloader.loader.JsonAPILoader$DefaultProfile {
 public void WynntilsAPI$Wynntils(customskinloader.loader.JsonAPILoader);
 public String getName();
 public int getPriority();
 public String getRoot();
}
customskinloader/loader/jsonapi/WynntilsAPI$WynntilsApiRequest.class
package customskinloader.loader.jsonapi;
public synchronized class WynntilsAPI$WynntilsApiRequest {
 public String uuid;
 public void WynntilsAPI$WynntilsApiRequest();
}
customskinloader/loader/jsonapi/WynntilsAPI$WynntilsApiResponse$User$Cosmetics.class
package customskinloader.loader.jsonapi;
public synchronized class WynntilsAPI$WynntilsApiResponse$User$Cosmetics {
 public boolean hasCape;
 public boolean hasElytra;
 public boolean hasEars;
 public String texture;
 public void WynntilsAPI$WynntilsApiResponse$User$Cosmetics();
}
customskinloader/loader/jsonapi/WynntilsAPI$WynntilsApiResponse$User.class
package customskinloader.loader.jsonapi;
public synchronized class WynntilsAPI$WynntilsApiResponse$User {
 public String accountType;
 public WynntilsAPI$WynntilsApiResponse$User$Cosmetics cosmetics;
 public void WynntilsAPI$WynntilsApiResponse$User();
}
customskinloader/loader/jsonapi/WynntilsAPI$WynntilsApiResponse.class
package customskinloader.loader.jsonapi;
public synchronized class WynntilsAPI$WynntilsApiResponse {
 public WynntilsAPI$WynntilsApiResponse$User user;
 public void WynntilsAPI$WynntilsApiResponse();
}
customskinloader/loader/jsonapi/WynntilsAPI.class
package customskinloader.loader.jsonapi;
public synchronized class WynntilsAPI implements customskinloader.loader.JsonAPILoader$IJsonAPI {
 public void WynntilsAPI();
 public java.util.List getDefaultProfiles(customskinloader.loader.JsonAPILoader);
 public String toJsonUrl(String, String);
 public customskinloader.profile.UserProfile toUserProfile(String, String, boolean);
 public String getPayload(customskinloader.config.SkinSiteProfile, String);
 public String getName();
}
customskinloader/log/LogManager.class
package customskinloader.log;
public synchronized class LogManager {
 private static java.nio.file.Path logFile;
 private static
java.io.Writer logWriter;
 private static final java.util.Map loggers;
 public void LogManager();
 public static void setLogFile(java.nio.file.Path);
 public static Logger getLogger(String);
 static void <clinit>();
}
customskinloader/log/Logger$Level.class
package customskinloader.log;
public final synchronized enum Logger$Level {
 public static final Logger$Level DEBUG;
 public static final Logger$Level INFO;
 public static final Logger$Level WARNING;
 final String name;
 final boolean display;
 public static Logger$Level[] values();
 public static Logger$Level valueOf(String);
 private void Logger$Level(String, int, String, boolean);
 public String getName();
 public boolean display();
 static void <clinit>();
}
customskinloader/log/Logger.class
package customskinloader.log;
public synchronized class Logger {
 private static final java.text.SimpleDateFormat DATE_FORMAT;
 public boolean enableLogStdOut;
 private java.io.Writer writer;
 String loggerName;
 public void setWriter(java.io.Writer);
 public void Logger();
 public void Logger(String);
 public void Logger(java.io.File);
 public void Logger(java.io.File, String);
 public void Logger(java.io.Writer, String);
 public void close();
 private boolean canPrintToStdOut(Logger$Level);
 public void log(Logger$Level, String);
 public void debug(String);
 public transient void debug(String, Object[]);
 public void info(String);
 public transient void info(String, Object[]);
 public void warning(String);
 public transient void warning(String, Object[]);
 public void warning(Throwable);
 static void <clinit>();
}
customskinloader/plugin/ICustomSkinLoaderPlugin$IDefaultProfile.class
package customskinloader.plugin;
public abstract interface ICustomSkinLoaderPlugin$IDefaultProfile {
 public abstract String getName();
 public abstract int getPriority();
 public abstract void updateSkinSiteProfile(customskinloader.config.SkinSiteProfile);
}
customskinloader/plugin/ICustomSkinLoaderPlugin.class
package customskinloader.plugin;
public abstract interface ICustomSkinLoaderPlugin {
 public abstract customskinloader.loader.ProfileLoader$IProfileLoader getProfileLoader();
 public abstract java.util.List getDefaultProfiles();
}
customskinloader/plugin/PluginLoader.class
package customskinloader.plugin;
public synchronized class PluginLoader {
 public static final ICustomSkinLoaderPlugin[] DEFAULT_PLUGINS;
 public static final java.util.ArrayList PLUGINS;
 public void PluginLoader();
 private static java.util.ArrayList loadPlugins();
 static void <clinit>();
}
customskinloader/profile/CachedProfile.class
package customskinloader.profile;
synchronized class CachedProfile {
 public UserProfile profile;
 public long expiryTime;
 public boolean loading;
 void CachedProfile();
}
customskinloader/profile/DynamicSkullManager$SkullTexture.class
package customskinloader.profile;
public synchronized class DynamicSkullManager$SkullTexture {
 public java.util.Map textures;
 public String index;
 public java.util.ArrayList skins;
 public int interval;
 public boolean fromZero;
 public long startTime;
 public int period;
 public void DynamicSkullManager$SkullTexture();
}
customskinloader/profile/DynamicSkullManager.class
package customskinloader.profile;
public synchronized class DynamicSkullManager {
 private java.util.Map dynamicTextures;
 private java.util.Map staticTextures;
 private java.util.List loadingList;
 public void DynamicSkullManager();
 private void parseGameProfile(com.mojang.authlib.GameProfile);
 public java.util.Map parseTextures(java.util.Map);
 public java.util.Map getTexture(com.mojang.authlib.GameProfile);
}
customskinloader/profile/ModelManager0$Model.class
package customskinloader.profile;
public final synchronized enum ModelManager0$Model {
 public static final ModelManager0$Model SKIN_DEFAULT;
 public static final ModelManager0$Model SKIN_SLIM;
 public static final ModelManager0$Model CAPE;
 public static final ModelManager0$Model ELYTRA;
 public static ModelManager0$Model[] values();
 public static ModelManager0$Model valueOf(String);
 private void ModelManager0$Model(String, int);
 static void <clinit>();
}
customskinloader/profile/ModelManager0.class
package customskinloader.profile;
public synchronized class ModelManager0 {
 private static java.util.HashMap models;
 private static com.mojang.authlib.minecraft.MinecraftProfileTexture$Type typeElytra;
 public void ModelManager0();
 public static ModelManager0$Model getEnumModel(String);
 public static boolean isSkin(ModelManager0$Model);
 public static boolean isElytraSupported();
 public static UserProfile toUserProfile(java.util.Map);
 public static java.util.Map fromUserProfile(UserProfile);
 public static com.mojang.authlib.minecraft.MinecraftProfileTexture getProfileTexture(String, java.util.Map);
 static void <clinit>();
}
customskinloader/profile/ProfileCache.class
package customskinloader.profile;
public synchronized class ProfileCache {
 public static java.io.File PROFILE_CACHE_DIR;
 private java.util.Map cachedProfiles;
 private java.util.Map localProfiles;
 private java.util.Map profileLoaders;
 public void ProfileCache();
 public boolean isExist(String);
 public boolean isLoading(String);
 public boolean isReady(String);
 public boolean isExpired(String);
 public UserProfile getProfile(String);
 public long getExpiry(String);
 public UserProfile getLocalProfile(String);
 public java.util.function.Function getLastLoader(String);
 public void setLoading(String, boolean);
 public void updateCache(String, UserProfile);
 public void updateCache(String, UserProfile, boolean);
 public void putLoader(String, java.util.function.Function);
 private CachedProfile getCachedProfile(String);
 private UserProfile loadLocalProfile(String);
 private void saveLocalProfile(String, UserProfile);
 static void <clinit>();
}
customskinloader/profile/UserProfile$1.class
package customskinloader.profile;
synchronized class UserProfile$1 {
 static void <clinit>();
}
customskinloader/profile/UserProfile.class
package customskinloader.profile;
public synchronized class UserProfile {
 public String skinUrl;
 public String model;
 public String capeUrl;
 public String elytraUrl;
 public void UserProfile();
 public void put(ModelManager0$Model, String);
 public String toString();
 public String toString(long);
 public java.util.List toProperties();
 public static UserProfile fromProperties(java.util.Collection);
 private static String nullToValue(String);
 public boolean isEmpty();
 public boolean isFull();
 public boolean hasSkinUrl();
 public void mix(UserProfile);
}
customskinloader/utils/HttpRequestUtil$CacheInfo.class
package customskinloader.utils;
public synchronized class HttpRequestUtil$CacheInfo {
 public String url;
 public String etag;
 public long lastModified;
 public long expire;
 public void HttpRequestUtil$CacheInfo();
}
customskinloader/utils/HttpRequestUtil$HttpRequest.class
package customskinloader.utils;
public synchronized class HttpRequestUtil$HttpRequest {
 public String url;
 public String userAgent;
 public String payload;
 public boolean loadContent;
 public boolean checkPNG;
 public int cacheTime;
 public java.io.File cacheFile;
 public void HttpRequestUtil$HttpRequest(String);
 public HttpRequestUtil$HttpRequest setUserAgent(String);
 public HttpRequestUtil$HttpRequest setPayload(String);
 public HttpRequestUtil$HttpRequest setLoadContent(boolean);
 public HttpRequestUtil$HttpRequest setCheckPNG(boolean);
 public HttpRequestUtil$HttpRequest setCacheTime(int);
 public HttpRequestUtil$HttpRequest setCacheFile(java.io.File);
}
customskinloader/utils/HttpRequestUtil$HttpResponce.class
package customskinloader.utils;
public synchronized class HttpRequestUtil$HttpResponce {
 public String content;
 public int responceCode;
 public boolean success;
 public boolean fromCache;
 public void HttpRequestUtil$HttpResponce();
}
customskinloader/utils/HttpRequestUtil.class
package customskinloader.utils;
public synchronized class HttpRequestUtil {
 public static final java.io.File CACHE_DIR;
 private static final java.util.regex.Pattern MAX_AGE_PATTERN;
 public void HttpRequestUtil();
 public static HttpRequestUtil$HttpResponce makeHttpRequest(HttpRequestUtil$HttpRequest);
 public static HttpRequestUtil$HttpResponce makeHttpRequest(HttpRequestUtil$HttpRequest, int);
 public static java.io.File getCacheFile(String);
 private static HttpRequestUtil$HttpResponce loadFromCache(HttpRequestUtil$HttpRequest, HttpRequestUtil$HttpResponce);
 private static HttpRequestUtil$HttpResponce loadFromCache(HttpRequestUtil$HttpRequest, HttpRequestUtil$HttpResponce, long);
 private static long getExpire(java.net.HttpURLConnection, int);
 static void <clinit>();
}
customskinloader/utils/HttpTextureUtil$HttpTextureInfo.class
package customskinloader.utils;
public synchronized class HttpTextureUtil$HttpTextureInfo {
 public String url;
 public java.io.File cacheFile;
 public String hash;
 public void HttpTextureUtil$HttpTextureInfo();
}
customskinloader/utils/HttpTextureUtil.class
package customskinloader.utils;
public synchronized class HttpTextureUtil {
 private static final String LEGACY_MARK = (LEGACY);
 private static final String LOCAL_MARK = (LOCAL);
 private static final String LOCAL_LEGACY_MARK = (LOCAL_LEGACY);
 private static final String BASE64_MARK = (BASE64);
 public static java.io.File defaultCacheDir;
 public void HttpTextureUtil();
 public static void cleanCacheDir();
 public static java.io.File getCacheDir();
 public static HttpTextureUtil$HttpTextureInfo toHttpTextureInfo(String);
 public static String getLegacyFakeUrl(String);
 public static String getLocalFakeUrl(String);
 public static String getLocalLegacyFakeUrl(String, String);
 public static String getBase64FakeUrl(String);
 public static String getHash(String, long, long);
 public static String getHash(byte[]);
 public static java.io.File getCacheFile(String);
 public static java.io.File getCacheFile(java.io.File, String);
}
customskinloader/utils/HttpUtil0$SSLSocketFactoryFacade.class
package customskinloader.utils;
public synchronized class HttpUtil0$SSLSocketFactoryFacade extends javax.net.ssl.SSLSocketFactory {
 javax.net.ssl.SSLSocketFactory sslsf;
 public void HttpUtil0$SSLSocketFactoryFacade();
 public String[] getDefaultCipherSuites();
 public String[] getSupportedCipherSuites();
 public java.net.Socket createSocket(java.net.Socket, String, int, boolean) throws java.io.IOException;
 public java.net.Socket createSocket(String, int) throws java.io.IOException, java.net.UnknownHostException;
 public java.net.Socket createSocket(String, int, java.net.InetAddress, int) throws java.io.IOException, java.net.UnknownHostException;
 public java.net.Socket createSocket(java.net.InetAddress, int) throws java.io.IOException;
 public java.net.Socket createSocket(java.net.InetAddress, int, java.net.InetAddress, int) throws java.io.IOException;
}
customskinloader/utils/HttpUtil0.class
package customskinloader.utils;
public synchronized class HttpUtil0 {
 public void HttpUtil0();
 public static boolean isLocal(String);
 public static String parseAddress(String);
 public static boolean isLanServer(String);
 public static int getNumIp(String);
}
customskinloader/utils/JavaUtil.class
package customskinloader.utils;
public synchronized class JavaUtil {
 public void JavaUtil();
 public static java.net.URL[] getClasspath();
}
customskinloader/utils/MinecraftUtil.class
package customskinloader.utils;
public synchronized class MinecraftUtil {
 private static String minecraftMainVersion;
 public void MinecraftUtil();
 public static java.io.File getMinecraftDataDir();
 public static net.minecraft.client.renderer.texture.TextureManager getTextureManager();
 public static net.minecraft.client.resources.SkinManager getSkinManager();
 public static String getMinecraftMainVersion();
 public static String getServerAddress();
 public static String getStandardServerAddress();
 public static boolean isLanServer();
 public static String getCredential(com.mojang.authlib.GameProfile);
 static void <clinit>();
}
customskinloader/utils/TextureUtil$AuthlibField.class
package customskinloader.utils;
public final synchronized enum TextureUtil$AuthlibField {
 public static final TextureUtil$AuthlibField PROPERTY_NAME;
 public static final TextureUtil$AuthlibField PROPERTY_VALUE;
 public static final TextureUtil$AuthlibField PROPERTY_SIGNATURE;
 public static final TextureUtil$AuthlibField MINECRAFT_PROFILE_PROPERTIES_RESPONSE_ID;
 public static final TextureUtil$AuthlibField MINECRAFT_PROFILE_PROPERTIES_RESPONSE_NAME;
 public static final TextureUtil$AuthlibField MINECRAFT_PROFILE_PROPERTIES_RESPONSE_PROPERTIES;
 public static final TextureUtil$AuthlibField MINECRAFT_TEXTURES_PAYLOAD_TEXTURES;
 private final invoke.MethodHandle getter;
 private final invoke.MethodHandle setter;
 public static TextureUtil$AuthlibField[] values();
 public static TextureUtil$AuthlibField valueOf(String);
 private void TextureUtil$AuthlibField(String, int, Class, String, Class);
 public Object get(Object);
 public void set(Object, Object);
 static void <clinit>();
}
customskinloader/utils/TextureUtil.class
package customskinloader.utils;
public synchronized class TextureUtil {
 private static final invoke.MethodHandles$Lookup IMPL_LOOKUP;
 public void TextureUtil();
 public static String parseBase64Texture(String);
 public static String fromUUID(java.util.UUID);
 static void <clinit>();
}
customskinloader/utils/TimeUtil.class
package customskinloader.utils;
public synchronized class TimeUtil {
 public void TimeUtil();
 public static long getCurrentUnixTimestamp();
 public static long getUnixTimestamp(long);
 public static long getUnixTimestampRandomDelay(long);
 private static int random(int, int);
}
customskinloader/utils/Version.class
package customskinloader.utils;
public synchronized class Version implements Comparable {
 private String version;
 private int[] sub;
 public void Version(String);
 public static Version of(String);
 public static int compare(String, String);
 public String toString();
 public int compareTo(Object);
}
pack.mcmeta
{
 "pack": {
 "description": "CustomSkinLoader resources",
 "pack_format": 7
 }
}
transformers.js
var ASMAPI = getJavaType('net.minecraftforge.coremod.api.ASMAPI');
var Handle = getJavaType('org.objectweb.asm.Handle');
var Opcodes = getJavaType('org.objectweb.asm.Opcodes');
var Type = getJavaType('org.objectweb.asm.Type');
var FieldInsnNode = getJavaType('org.objectweb.asm.tree.FieldInsnNode');
var InsnNode = getJavaType('org.objectweb.asm.tree.InsnNode');
var IntInsnNode = getJavaType('org.objectweb.asm.tree.IntInsnNode');
var InvokeDynamicInsnNode = getJavaType('org.objectweb.asm.tree.InvokeDynamicInsnNode');
var MethodInsnNode = getJavaType('org.objectweb.asm.tree.MethodInsnNode');
var TypeInsnNode = getJavaType('org.objectweb.asm.tree.TypeInsnNode');
var VarInsnNode = getJavaType('org.objectweb.asm.tree.VarInsnNode');
function getJavaType(name) {
 return Java.type(name);
}
// Compare method and field names.
function checkName(name, srgName) {
 return name.equals(mapName(srgName));
}
// De-obfuscate method and field names.
function mapName(srgName) {
 if (srgName.startsWith("f_")) return ASMAPI.mapField(srgName);
if (srgName.startsWith("m_")) return ASMAPI.mapMethod(srgName);
 return srgName;
}
function initializeCoreMod() {
 return {
 'SkinManagerTransformer': {
 'target': {
 'type': 'CLASS',
 'name': 'net/minecraft/client/resources/SkinManager'
 },
 'transformer': function (cn) {
 cn.methods.forEach(function (mn) {
 if (checkName(mn.name, "<init>") && mn.desc.equals("(Lnet/minecraft/client/renderer/texture/TextureManager;Ljava/io/File;Lcom/mojang/authlib/minecraft/MinecraftSessionService;)V")) { // 1.20.1-
 for (var iterator = mn.instructions.iterator(); iterator.hasNext();) {
 var node = iterator.next();
 if (node.getOpcode() === Opcodes.RETURN) {
 mn.instructions.insertBefore(node, new VarInsnNode(Opcodes.ALOAD, 2));
 mn.instructions.insertBefore(node, new MethodInsnNode(Opcodes.INVOKESTATIC, "customskinloader/fake/FakeSkinManager", "setSkinCacheDir", "(Ljava/io/File;)V", false));
 }
 }
 } else if (checkName(mn.name, "<init>") && mn.desc.equals("(Lnet/minecraft/client/renderer/texture/TextureManager;Ljava/nio/file/Path;Lcom/mojang/authlib/minecraft/MinecraftSessionService;Ljava/util/concurrent/Executor;)V")) { // 1.20.2+
 for (var iterator = mn.instructions.iterator(); iterator.hasNext();) {
 var node = iterator.next();
 if (node.getOpcode() === Opcodes.RETURN) {
 mn.instructions.insertBefore(node, new VarInsnNode(Opcodes.ALOAD, 2));
 mn.instructions.insertBefore(node, new MethodInsnNode(Opcodes.INVOKESTATIC, "customskinloader/fake/FakeSkinManager", "setSkinCacheDir", "(Ljava/nio/file/Path;)V", false));
 } else if (node.getOpcode() === Opcodes.INVOKEVIRTUAL && node.owner.equals("com/google/common/cache/CacheBuilder") && checkName(node.name, "build") && node.desc.equals("(Lcom/google/common/cache/CacheLoader;)Lcom/google/common/cache/LoadingCache;")) {
 mn.instructions.insertBefore(node, new MethodInsnNode(Opcodes.INVOKESTATIC, "customskinloader/fake/FakeSkinManager", "setCacheLoader", "(Lcom/google/common/cache/CacheLoader;)Lcom/google/common/cache/CacheLoader;", false));
 }
 }
 } else if (checkName(mn.name, "m_118828_") && mn.desc.equals("(Lcom/mojang/authlib/minecraft/MinecraftProfileTexture;Lcom/mojang/authlib/minecraft/MinecraftProfileTexture$Type;Lnet/minecraft/client/resources/SkinManager$SkinTextureCallback;)Lnet/minecraft/resources/ResourceLocation;")) { // 1.20.1-
 for (var iterator = mn.instructions.iterator(); iterator.hasNext();) {
 var node = iterator.next();
 if (node.getOpcode() === Opcodes.INVOKESPECIAL && (node.owner.equals("net/minecraft/client/renderer/texture/HttpTexture") && checkName(node.name, "<init>") && node.desc.equals("(Ljava/io/File;Ljava/lang/String;Lnet/minecraft/resources/ResourceLocation;ZLjava/lang/Runnable;)V"))) {
 var s = "(";
 var args = Type.getType(node.desc).getArgumentTypes();
 for (var i = 0; i < args.length; i++) {
 s = s + "Ljava/lang/Object;";
 }
 mn.instructions.insertBefore(node, new InsnNode(Opcodes.SWAP));
 mn.instructions.insertBefore(node, new MethodInsnNode(Opcodes.INVOKESTATIC, "java/lang/Boolean", "valueOf", "(Z)Ljava/lang/Boolean;", false));
 mn.instructions.insertBefore(node, new InsnNode(Opcodes.SWAP));
 mn.instructions.insertBefore(node, new MethodInsnNode(Opcodes.INVOKESTATIC, "com/google/common/collect/ImmutableList", "of", s + ")Lcom/google/common/collect/ImmutableList;", false));
 mn.instructions.insertBefore(node, new VarInsnNode(Opcodes.ALOAD, 1));
 mn.instructions.insertBefore(node, new VarInsnNode(Opcodes.ALOAD, 2));
 mn.instructions.insertBefore(node, new MethodInsnNode(Opcodes.INVOKESTATIC, "customskinloader/fake/FakeSkinManager", "createThreadDownloadImageData", "(Lcom/google/common/collect/ImmutableList;Lcom/mojang/authlib/minecraft/MinecraftProfileTexture;Lcom/mojang/authlib/minecraft/MinecraftProfileTexture$Type;)[Ljava/lang/Object;", false));
 for (var i = 0; i < args.length; i++) {
 mn.instructions.insertBefore(node, new InsnNode(Opcodes.DUP));
 mn.instructions.insertBefore(node, new IntInsnNode(Opcodes.BIPUSH, i));
 mn.instructions.insertBefore(node, new InsnNode(Opcodes.AALOAD));
 if (args[i].getInternalName().equals("Z")) {
 mn.instructions.insertBefore(node, new TypeInsnNode(Opcodes.CHECKCAST, "java/lang/Boolean"));
 mn.instructions.insertBefore(node, new MethodInsnNode(Opcodes.INVOKEVIRTUAL, "java/lang/Boolean", "booleanValue", "()Z", false));
 } else {
 mn.instructions.insertBefore(node, new TypeInsnNode(Opcodes.CHECKCAST, args[i].getInternalName()));
 }
 mn.instructions.insertBefore(node, new InsnNode(Opcodes.SWAP));
 }
 mn.instructions.insertBefore(node, new InsnNode(Opcodes.POP));
 }
 }
 } else if (checkName(mn.name, "m_118817_") && mn.desc.equals("(Lcom/mojang/authlib/GameProfile;Lnet/minecraft/client/resources/SkinManager$SkinTextureCallback;Z)V")) { // 1.20.1-
 for (var iterator = mn.instructions.iterator(); iterator.hasNext();) {
 var node = iterator.next();
 if (node.getOpcode() === Opcodes.INVOKEINTERFACE
 && (node.owner.equals("java/util/concurrent/Executor") // 1.17.1
 || node.owner.equals("java/util/concurrent/ExecutorService")) // 1.18+
 && checkName(node.name, "execute") && node.desc.equals("(Ljava/lang/Runnable;)V")) {
 mn.instructions.insertBefore(node, new VarInsnNode(Opcodes.ALOAD, 1));
 mn.instructions.insert(node, new InsnNode(Opcodes.POP));
 mn.instructions.set(node, new MethodInsnNode(Opcodes.INVOKESTATIC, "customskinloader/fake/FakeSkinManager", "loadProfileTextures", "(Ljava/lang/Runnable;Lcom/mojang/authlib/GameProfile;)V", false));
 }
 }
 } else if (checkName(mn.name, "m_118821_") && mn.desc.equals("(Lcom/mojang/authlib/GameProfile;ZLnet/minecraft/client/resources/SkinManager$SkinTextureCallback;)V")) { // 1.20.1-
 for (var iterator = mn.instructions.iterator(); iterator.hasNext();) {
 var node = iterator.next();
 if (node.getOpcode() === Opcodes.INVOKEINTERFACE && node.owner.equals("com/mojang/authlib/minecraft/MinecraftSessionService") && checkName(node.name, "getTextures") && node.desc.equals("(Lcom/mojang/authlib/GameProfile;Z)Ljava/util/Map;")) {
 mn.instructions.set(node, new MethodInsnNode(Opcodes.INVOKESTATIC, "customskinloader/fake/FakeSkinManager",
"getUserProfile", "(Lcom/mojang/authlib/minecraft/MinecraftSessionService;Lcom/mojang/authlib/GameProfile;Z)Ljava/util/Map;", false));
 break;
 }
 }
 } else if (checkName(mn.name, "m_174849_") && mn.desc.equals("(Ljava/util/Map;Lnet/minecraft/client/resources/SkinManager$SkinTextureCallback;)V")) { // 1.20.1-
 for (var iterator = mn.instructions.iterator(); iterator.hasNext();) {
 var node = iterator.next();
 if (node.getOpcode() === Opcodes.INVOKESTATIC && node.owner.equals("com/google/common/collect/ImmutableList") && checkName(node.name, "of") && node.desc.equals("(Ljava/lang/Object;Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList;")) {
 mn.instructions.insertBefore(node, new InsnNode(Opcodes.POP2));
 mn.instructions.insertBefore(node, new MethodInsnNode(Opcodes.INVOKESTATIC, "com/mojang/authlib/minecraft/MinecraftProfileTexture$Type", "values", "()[Lcom/mojang/authlib/minecraft/MinecraftProfileTexture$Type;"))
 mn.instructions.set(node, new MethodInsnNode(Opcodes.INVOKESTATIC, "com/google/common/collect/ImmutableList", "copyOf", "([Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList;"))
 }
 }
 } else if (checkName(mn.name, "m_118815_") && mn.desc.equals("(Lcom/mojang/authlib/GameProfile;)Ljava/util/Map;")) { // 1.20.1-
 var first = mn.instructions.getFirst();
 mn.instructions.insertBefore(first, new VarInsnNode(Opcodes.ALOAD, 1));
 mn.instructions.insertBefore(first, new MethodInsnNode(Opcodes.INVOKESTATIC, "customskinloader/fake/FakeSkinManager", "loadSkinFromCache", "(Lcom/mojang/authlib/GameProfile;)Ljava/util/Map;", false));
 mn.instructions.insertBefore(first, new InsnNode(Opcodes.ARETURN));
 } else if (checkName(mn.name, "m_293307_") && mn.desc.equals("(Lcom/mojang/authlib/GameProfile;)Lnet/minecraft/client/resources/PlayerSkin;")) { // 1.20.2+
 var first = mn.instructions.getFirst();
 mn.instructions.insertBefore(first, new VarInsnNode(Opcodes.ALOAD, 1));
 mn.instructions.insertBefore(first, new MethodInsnNode(Opcodes.INVOKESTATIC, "customskinloader/fake/FakeSkinManager", "setSkullType", "(Lcom/mojang/authlib/GameProfile;)V", false));
 } else if (checkName(mn.name, "m_293351_") && mn.desc.equals("(Lcom/mojang/authlib/GameProfile;)Ljava/util/concurrent/CompletableFuture;")) { // 1.20.2+
 for (var iterator = mn.instructions.iterator(); iterator.hasNext();) {
 var node = iterator.next();
 if (node.getOpcode() === Opcodes.INVOKESPECIAL && node.owner.equals("net/minecraft/client/resources/SkinManager$CacheKey") && checkName(node.name, "<init>") && node.desc.equals("(Ljava/util/UUID;Lcom/mojang/authlib/properties/Property;)V")) {
 mn.instructions.insertBefore(node, new MethodInsnNode(Opcodes.INVOKESTATIC, "customskinloader/fake/FakeSkinManager", "createProperty", "(Lcom/mojang/authlib/properties/Property;)Lcom/mojang/authlib/properties/Property;", false))
 } else if (node.getOpcode() === Opcodes.INVOKEINTERFACE && node.owner.equals("com/google/common/cache/LoadingCache") && checkName(node.name, "getUnchecked") && node.desc.equals("(Ljava/lang/Object;)Ljava/lang/Object;")) {
 mn.instructions.insertBefore(node, new VarInsnNode(Opcodes.ALOAD, 1));
 mn.instructions.set(node, new MethodInsnNode(Opcodes.INVOKESTATIC, "customskinloader/fake/FakeSkinManager", "loadCache", "(Lcom/google/common/cache/LoadingCache;Ljava/lang/Object;Lcom/mojang/authlib/GameProfile;)Ljava/lang/Object;", false));
 }
 }
 }
 });
 return cn;
 }
 },
 'SkinManager$1Transformer': { // 1.20.2+
 'target': {
 'type': 'CLASS',
 'name': 'net/minecraft/client/resources/SkinManager$1'
 },
 'transformer': function (cn) {
 cn.methods.forEach(function (mn) {
 if (checkName(mn.name, "load") && mn.desc.equals("(Lnet/minecraft/client/resources/SkinManager$CacheKey;)Ljava/util/concurrent/CompletableFuture;")) {
 for (var iterator = mn.instructions.iterator(); iterator.hasNext();) {
 var node = iterator.next();
 if (node.getOpcode() === Opcodes.INVOKESTATIC && node.owner.equals("java/util/concurrent/CompletableFuture") && checkName(node.name, "supplyAsync") && node.desc.equals("(Ljava/util/function/Supplier;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;")) {
 var s = "(";
 var args = Type.getType(node.desc).getArgumentTypes();
 for (var i = 0; i < args.length; i++) {
 s = s + "Ljava/lang/Object;";
 }
 mn.instructions.insertBefore(node, new MethodInsnNode(Opcodes.INVOKESTATIC, "com/google/common/collect/ImmutableList", "of", s + ")Lcom/google/common/collect/ImmutableList;", false));
 mn.instructions.insertBefore(node, new VarInsnNode(Opcodes.ALOAD, 1));
 mn.instructions.insertBefore(node, new MethodInsnNode(Opcodes.INVOKESTATIC, "customskinloader/fake/FakeSkinManager", "loadProfileTextures", "(Lcom/google/common/collect/ImmutableList;Ljava/lang/Object;)[Ljava/lang/Object;", false));
 for (var i = 0; i < args.length; i++) {
 mn.instructions.insertBefore(node, new InsnNode(Opcodes.DUP));
 mn.instructions.insertBefore(node, new IntInsnNode(Opcodes.BIPUSH, i));
 mn.instructions.insertBefore(node, new InsnNode(Opcodes.AALOAD));
 mn.instructions.insertBefore(node, new TypeInsnNode(Opcodes.CHECKCAST, args[i].getInternalName()));
 mn.instructions.insertBefore(node, new InsnNode(Opcodes.SWAP));
 }
 mn.instructions.insertBefore(node, new InsnNode(Opcodes.POP));
 }
 }
 } else if (checkName(mn.name, "m_293645_") && mn.desc.equals("(Lcom/mojang/authlib/minecraft/MinecraftSessionService;Lcom/mojang/authlib/GameProfile;)Lnet/minecraft/client/resources/SkinManager$TextureInfo;")) { // 1.20.2
 for (var iterator = mn.instructions.iterator(); iterator.hasNext();) {
 var node = iterator.next();
 if (node.getOpcode() === Opcodes.INVOKEINTERFACE && node.owner.equals("com/mojang/authlib/minecraft/MinecraftSessionService") && checkName(node.name, "getTextures") && node.desc.equals("(Lcom/mojang/authlib/GameProfile;Z)Ljava/util/Map;")) {
 mn.instructions.set(node, new MethodInsnNode(Opcodes.INVOKESTATIC, "customskinloader/fake/FakeSkinManager", "loadSkinFromCache", "(Lcom/mojang/authlib/minecraft/MinecraftSessionService;Lcom/mojang/authlib/GameProfile;Z)Ljava/util/Map;", false));
 }
 }
 } else if (checkName(mn.name, "m_304063_") && mn.desc.equals("(Lnet/minecraft/client/resources/SkinManager$CacheKey;Lcom/mojang/authlib/minecraft/MinecraftSessionService;)Lcom/mojang/authlib/minecraft/MinecraftProfileTextures;"))
{ // 1.20.3+
 for (var iterator = mn.instructions.iterator(); iterator.hasNext();) {
 var node = iterator.next();
 if (node.getOpcode() === Opcodes.INVOKEINTERFACE && node.owner.equals("com/mojang/authlib/minecraft/MinecraftSessionService") && checkName(node.name, "unpackTextures") && node.desc.equals("(Lcom/mojang/authlib/properties/Property;)Lcom/mojang/authlib/minecraft/MinecraftProfileTextures;")) {
 mn.instructions.insert(node, new TypeInsnNode(Opcodes.CHECKCAST, "com/mojang/authlib/minecraft/MinecraftProfileTextures"));
 mn.instructions.set(node, new MethodInsnNode(Opcodes.INVOKESTATIC, "customskinloader/fake/FakeSkinManager", "loadSkinFromCache", "(Lcom/mojang/authlib/minecraft/MinecraftSessionService;Lcom/mojang/authlib/properties/Property;)Ljava/lang/Object;", false));
 }
 }
 }
 });
 return cn;
 }
 },
 'SkinManager$CacheKeyTransformer': { // 1.20.2+
 'target': {
 'type': 'CLASS',
 'name': 'net/minecraft/client/resources/SkinManager$CacheKey'
 },
 'transformer': function (cn) {
 cn.interfaces.add("customskinloader/fake/itf/IFakeSkinManagerCacheKey");
 return cn;
 }
 },
 'IResourceTransformer': {
 'target': {
 'type': 'CLASS',
 'name': 'net/minecraft/server/packs/resources/Resource'
 },
 'transformer': function (cn) {
 cn.interfaces.add("customskinloader/fake/itf/IFakeIResource$V1");
 cn.interfaces.add("customskinloader/fake/itf/IFakeIResource$V2");
 return cn;
 }
 },
 'IResourceManagerTransformer': {
 'target': {
 'type': 'CLASS',
 'name': 'net/minecraft/server/packs/resources/ResourceManager'
 },
 'transformer': function (cn) {
 cn.interfaces.add("customskinloader/fake/itf/IFakeIResourceManager");
 return cn;
 }
 },
 'MinecraftTransformer': {
 'target': {
 'type': 'CLASS',
 'name': 'net/minecraft/client/Minecraft'
 },
 'transformer': function (cn) {
 cn.interfaces.add("customskinloader/fake/itf/IFakeMinecraft");
 return cn;
 }
 },
 'RenderPlayer_LayerCapeTransformer': {
 'target': {
 'type': 'CLASS',
 'names': function (target) {
 return ['net/minecraft/client/renderer/entity/player/PlayerRenderer', 'net/minecraft/client/renderer/entity/layers/CapeLayer'];
 }
 },
 'transformer': function (cn) {
 cn.methods.forEach(function (mn) {
 if ((checkName(mn.name, "m_117775_") && mn.desc.equals("(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/client/player/AbstractClientPlayer;Lnet/minecraft/client/model/geom/ModelPart;Lnet/minecraft/client/model/geom/ModelPart;)V")) // PlayerRenderer.renderHand
 || (checkName(mn.name, "m_6494_") && mn.desc.equals("(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/client/player/AbstractClientPlayer;FFFFFF)V"))) { // CapeLayer.render
 for (var iterator = mn.instructions.iterator(); iterator.hasNext();) {
 var node = iterator.next();
 if (node.getOpcode() === Opcodes.INVOKESTATIC && node.owner.equals("net/minecraft/client/renderer/RenderType") && checkName(node.name, "m_110446_") && node.desc.equals("(Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/client/renderer/RenderType;")) { // RenderType.entitySolid
 node.name = mapName("m_110473_"); // RenderType.entityTranslucent
 }
 }
 }
 });
 return cn;
 }
 },
 'SkinManager$TextureCacheTransformer': { // 1.20.2+
 'target': {
 'type': 'METHOD',
 'class': 'net/minecraft/client/resources/SkinManager$TextureCache',
 'methodName': 'm_294542_',
 'methodDesc': '(Lcom/mojang/authlib/minecraft/MinecraftProfileTexture;)Ljava/util/concurrent/CompletableFuture;'
 },
 'transformer': function (mn) {
 for (var iterator = mn.instructions.iterator(); iterator.hasNext();) {
 var node = iterator.next();
 if (node.getOpcode() === Opcodes.INVOKESPECIAL && (node.owner.equals("net/minecraft/client/renderer/texture/HttpTexture") && checkName(node.name, "<init>") && node.desc.equals("(Ljava/io/File;Ljava/lang/String;Lnet/minecraft/resources/ResourceLocation;ZLjava/lang/Runnable;)V"))) {
 var s = "(";
 var args = Type.getType(node.desc).getArgumentTypes();
 for (var i = 0; i < args.length; i++) {
 s = s + "Ljava/lang/Object;";
 }
 mn.instructions.insertBefore(node, new InsnNode(Opcodes.SWAP));
 mn.instructions.insertBefore(node, new MethodInsnNode(Opcodes.INVOKESTATIC, "java/lang/Boolean", "valueOf", "(Z)Ljava/lang/Boolean;", false));
 mn.instructions.insertBefore(node, new InsnNode(Opcodes.SWAP));
 mn.instructions.insertBefore(node, new MethodInsnNode(Opcodes.INVOKESTATIC, "com/google/common/collect/ImmutableList", "of", s + ")Lcom/google/common/collect/ImmutableList;", false));
 mn.instructions.insertBefore(node, new VarInsnNode(Opcodes.ALOAD, 1));
 mn.instructions.insertBefore(node, new VarInsnNode(Opcodes.ALOAD, 0));
 mn.instructions.insertBefore(node, new FieldInsnNode(Opcodes.GETFIELD, "net/minecraft/client/resources/SkinManager$TextureCache", mapName("f_291290_"), "Lcom/mojang/authlib/minecraft/MinecraftProfileTexture$Type;"));
 mn.instructions.insertBefore(node, new MethodInsnNode(Opcodes.INVOKESTATIC, "customskinloader/fake/FakeSkinManager", "createThreadDownloadImageData", "(Lcom/google/common/collect/ImmutableList;Lcom/mojang/authlib/minecraft/MinecraftProfileTexture;Lcom/mojang/authlib/minecraft/MinecraftProfileTexture$Type;)[Ljava/lang/Object;", false));
 for (var i = 0; i < args.length; i++) {
 mn.instructions.insertBefore(node, new InsnNode(Opcodes.DUP));
 mn.instructions.insertBefore(node, new IntInsnNode(Opcodes.BIPUSH, i));
 mn.instructions.insertBefore(node, new InsnNode(Opcodes.AALOAD));
 if (args[i].getInternalName().equals("Z")) {
 mn.instructions.insertBefore(node, new TypeInsnNode(Opcodes.CHECKCAST, "java/lang/Boolean"));
 mn.instructions.insertBefore(node, new MethodInsnNode(Opcodes.INVOKEVIRTUAL, "java/lang/Boolean", "booleanValue", "()Z", false));
 } else {
 mn.instructions.insertBefore(node, new TypeInsnNode(Opcodes.CHECKCAST, args[i].getInternalName()));
 }
 mn.instructions.insertBefore(node, new InsnNode(Opcodes.SWAP));
 }
 mn.instructions.insertBefore(node, new InsnNode(Opcodes.POP));
 }
 }
 return mn;
 }
 },
 'HttpTextureTransformer':
{
 'target': {
 'type': 'METHOD',
 'class': 'net/minecraft/client/renderer/texture/HttpTexture',
 'methodName': 'm_118018_',
 'methodDesc': '(Ljava/io/InputStream;)Lcom/mojang/blaze3d/platform/NativeImage;'
 },
 'transformer': function (mn) {
 for (var iterator = mn.instructions.iterator(); iterator.hasNext();) {
 var node = iterator.next();
 if ((node.getOpcode() === Opcodes.INVOKEVIRTUAL || node.getOpcode() === Opcodes.INVOKESPECIAL) && node.owner.equals("net/minecraft/client/renderer/texture/HttpTexture") && checkName(node.name, "m_118032_") && node.desc.equals("(Lcom/mojang/blaze3d/platform/NativeImage;)Lcom/mojang/blaze3d/platform/NativeImage;")) {
 // FakeSkinBuffer.processLegacySkin(image, this.onDownloaded, this::processLegacySkin);
 mn.instructions.insertBefore(node, new InsnNode(Opcodes.SWAP));
 mn.instructions.insertBefore(node, new FieldInsnNode(Opcodes.GETFIELD, "net/minecraft/client/renderer/texture/HttpTexture", mapName("f_117997_"), "Ljava/lang/Runnable;"));
 mn.instructions.insertBefore(node, new VarInsnNode(Opcodes.ALOAD, 0));
 mn.instructions.insertBefore(node, new InvokeDynamicInsnNode("apply", "(Lnet/minecraft/client/renderer/texture/HttpTexture;)Ljava/util/function/Function;",
 /* bsm */ new Handle(Opcodes.H_INVOKESTATIC, "java/lang/invoke/LambdaMetafactory", "metafactory", "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;", false),
 /* bsmArgs */ Type.getType("(Ljava/lang/Object;)Ljava/lang/Object;"),
 /* bsmArgs */ new Handle(Opcodes.H_INVOKEVIRTUAL, "net/minecraft/client/renderer/texture/HttpTexture", mapName("m_118032_"), "(Lcom/mojang/blaze3d/platform/NativeImage;)Lcom/mojang/blaze3d/platform/NativeImage;", false),
 /* bsmArgs */ Type.getType("(Lcom/mojang/blaze3d/platform/NativeImage;)Lcom/mojang/blaze3d/platform/NativeImage;")));
 iterator.set(new MethodInsnNode(Opcodes.INVOKESTATIC, "customskinloader/fake/FakeSkinBuffer", "processLegacySkin", "(Lcom/mojang/blaze3d/platform/NativeImage;Ljava/lang/Runnable;Ljava/util/function/Function;)Lcom/mojang/blaze3d/platform/NativeImage;", false));
 }
 }
 return mn;
 }
 },
 'PlayerTabOverlayTransformer': {
 'target': {
 'type': 'METHOD',
 'class': 'net/minecraft/client/gui/components/PlayerTabOverlay',
 'methodName': 'm_94544_',
 'methodDesc': '(Lcom/mojang/blaze3d/vertex/PoseStack;ILnet/minecraft/world/scores/Scoreboard;Lnet/minecraft/world/scores/Objective;)V'
 },
 'transformer': function (mn) {
 for (var iterator = mn.instructions.iterator(); iterator.hasNext();) {
 var node = iterator.next();
 if (node.getOpcode() === Opcodes.INVOKEVIRTUAL && node.owner.equals("net/minecraft/client/Minecraft") && checkName(node.name, "m_91090_") && node.desc.equals("()Z")) {
 mn.instructions.insertBefore(node, new InsnNode(Opcodes.POP));
 mn.instructions.set(node, new InsnNode(Opcodes.ICONST_1));
 }
 }
 return mn;
 }
 },
 };
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Mais conteúdos dessa disciplina