From 2c4a03d74bfedece9dd0bacb88ef145a5bbd9871 Mon Sep 17 00:00:00 2001 From: Sollace Date: Tue, 4 Sep 2018 22:49:40 +0200 Subject: [PATCH] For god's sake space your code out. I can't stand these cramped conditions --- .../com/voxelmodpack/hdskins/HDSkinManager.java | 12 +++++++++--- .../hdskins/mixin/MixinNetworkPlayerInfo.java | 14 ++++++++++---- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/hdskins/java/com/voxelmodpack/hdskins/HDSkinManager.java b/src/hdskins/java/com/voxelmodpack/hdskins/HDSkinManager.java index 24200df0..7cf63c57 100644 --- a/src/hdskins/java/com/voxelmodpack/hdskins/HDSkinManager.java +++ b/src/hdskins/java/com/voxelmodpack/hdskins/HDSkinManager.java @@ -93,7 +93,6 @@ public final class HDSkinManager implements IResourceManagerReloadListener { private List skinParsers = Lists.newArrayList(); private SkinResourceManager resources = new SkinResourceManager(); - // private ExecutorService executor = Executors.newCachedThreadPool(); private Function, GuiSkins> skinsGuiFunc = GuiSkins::new; @@ -189,6 +188,7 @@ public final class HDSkinManager implements IResourceManagerReloadListener { callback.skinAvailable(type, resource, texture); } } else { + // schedule texture loading on the main thread. TextureLoader.loadTexture(resource, new ThreadDownloadImageData( new File(LiteLoader.getAssetsDirectory(), "hd/" + skinDir + texture.getHash().substring(0, 2) + "/" + texture.getHash()), @@ -200,26 +200,30 @@ public final class HDSkinManager implements IResourceManagerReloadListener { } }))); } + return resource; } public Map getTextures(GameProfile profile) { - Map map = new HashMap<>(); + for (Map.Entry e : loadProfileTextures(profile).getNow(Collections.emptyMap()).entrySet()) { map.put(e.getKey(), loadTexture(e.getKey(), e.getValue(), null)); } - return map; + return map; } private void addSkinServerType(Class type) { Preconditions.checkArgument(!type.isInterface(), "type cannot be an interface"); Preconditions.checkArgument(!Modifier.isAbstract(type.getModifiers()), "type cannot be abstract"); + ServerType st = type.getAnnotation(ServerType.class); + if (st == null) { throw new IllegalArgumentException("class is not annotated with @ServerType"); } + this.skinServerTypes.put(st.value(), type); } @@ -336,9 +340,11 @@ public final class HDSkinManager implements IResourceManagerReloadListener { private static CompletableFuture getUntilNonnull(Supplier getter) { return CompletableFuture.supplyAsync(() -> { T res = null; + while (res == null) { res = getter.get(); } + return res; }); } diff --git a/src/hdskins/java/com/voxelmodpack/hdskins/mixin/MixinNetworkPlayerInfo.java b/src/hdskins/java/com/voxelmodpack/hdskins/mixin/MixinNetworkPlayerInfo.java index 583f9c8a..69221eea 100644 --- a/src/hdskins/java/com/voxelmodpack/hdskins/mixin/MixinNetworkPlayerInfo.java +++ b/src/hdskins/java/com/voxelmodpack/hdskins/mixin/MixinNetworkPlayerInfo.java @@ -26,11 +26,17 @@ public abstract class MixinNetworkPlayerInfo implements INetworkPlayerInfo { private Map customTextures = new HashMap<>(); private Map customProfiles = new HashMap<>(); - @Shadow @Final private GameProfile gameProfile; - @Shadow private boolean playerTexturesLoaded; - @Shadow private String skinType; + @Shadow @Final + private GameProfile gameProfile; - @Shadow private Map playerTextures; + @Shadow + private boolean playerTexturesLoaded; + + @Shadow + private String skinType; + + @Shadow + private Map playerTextures; @SuppressWarnings("InvalidMemberReference") // mc-dev bug? @Redirect(method = { "getLocationSkin", "getLocationCape", "getLocationElytra" },