mirror of
https://github.com/MineLittlePony/MineLittlePony.git
synced 2024-12-02 00:37:59 +01:00
Asynchronous fetch preview textures
This commit is contained in:
parent
b12567b033
commit
1ea7ed0c6b
3 changed files with 23 additions and 6 deletions
|
@ -88,7 +88,7 @@ public final class HDSkinManager implements IResourceManagerReloadListener {
|
||||||
private Class<? extends GuiSkins> skinsClass = null;
|
private Class<? extends GuiSkins> skinsClass = null;
|
||||||
|
|
||||||
public static PreviewTextureManager getPreviewTextureManager(GameProfile profile) {
|
public static PreviewTextureManager getPreviewTextureManager(GameProfile profile) {
|
||||||
return new PreviewTextureManager(INSTANCE.getGatewayServer().getPreviewTextures(profile));
|
return new PreviewTextureManager(profile);
|
||||||
}
|
}
|
||||||
|
|
||||||
private HDSkinManager() {
|
private HDSkinManager() {
|
||||||
|
|
|
@ -76,7 +76,9 @@ public class LocalTexture {
|
||||||
public void setRemote(PreviewTextureManager ptm, SkinAvailableCallback callback) {
|
public void setRemote(PreviewTextureManager ptm, SkinAvailableCallback callback) {
|
||||||
clearRemote();
|
clearRemote();
|
||||||
|
|
||||||
remote = ptm.getPreviewTexture(remoteResource, type, blank.getBlankSkin(type), callback);
|
ptm.getPreviewTexture(remoteResource, type, blank.getBlankSkin(type), callback).thenAccept(texture -> {
|
||||||
|
remote = texture;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setLocal(File file) {
|
public void setLocal(File file) {
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
package com.voxelmodpack.hdskins;
|
package com.voxelmodpack.hdskins;
|
||||||
|
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
|
import com.mojang.authlib.GameProfile;
|
||||||
import com.mojang.authlib.minecraft.MinecraftProfileTexture;
|
import com.mojang.authlib.minecraft.MinecraftProfileTexture;
|
||||||
import com.mojang.authlib.minecraft.MinecraftProfileTexture.Type;
|
import com.mojang.authlib.minecraft.MinecraftProfileTexture.Type;
|
||||||
|
import com.voxelmodpack.hdskins.skins.CallableFutures;
|
||||||
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.renderer.IImageBuffer;
|
import net.minecraft.client.renderer.IImageBuffer;
|
||||||
|
@ -10,6 +12,7 @@ import net.minecraft.client.resources.SkinManager.SkinAvailableCallback;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
|
@ -19,14 +22,26 @@ import javax.annotation.Nullable;
|
||||||
*/
|
*/
|
||||||
public class PreviewTextureManager {
|
public class PreviewTextureManager {
|
||||||
|
|
||||||
private final Map<Type, MinecraftProfileTexture> textures;
|
private final GameProfile profile;
|
||||||
|
|
||||||
PreviewTextureManager(Map<Type, MinecraftProfileTexture> textures) {
|
private Map<Type, MinecraftProfileTexture> textures = null;
|
||||||
this.textures = textures;
|
|
||||||
|
PreviewTextureManager(GameProfile profile) {
|
||||||
|
this.profile = profile;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CompletableFuture<PreviewTexture> getPreviewTexture(ResourceLocation location, Type type, ResourceLocation def, @Nullable SkinAvailableCallback callback) {
|
||||||
|
return CallableFutures.asyncFailableFuture(() ->
|
||||||
|
loadPreviewTexture(location, type, def, callback)
|
||||||
|
, HDSkinManager.skinUploadExecutor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public PreviewTexture getPreviewTexture(ResourceLocation location, Type type, ResourceLocation def, @Nullable SkinAvailableCallback callback) {
|
private PreviewTexture loadPreviewTexture(ResourceLocation location, Type type, ResourceLocation def, @Nullable SkinAvailableCallback callback) {
|
||||||
|
if (textures == null) {
|
||||||
|
textures = HDSkinManager.INSTANCE.getGatewayServer().getPreviewTextures(profile);
|
||||||
|
}
|
||||||
|
|
||||||
if (!textures.containsKey(type)) {
|
if (!textures.containsKey(type)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue