From a308e0ce96b6580d621374f4ecb54e6471730364 Mon Sep 17 00:00:00 2001 From: Matthew Messinger Date: Mon, 3 Sep 2018 16:31:28 -0400 Subject: [PATCH] Improve the stream to reload skins. Hopefully it's more readable this time. --- .../voxelmodpack/hdskins/HDSkinManager.java | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/src/hdskins/java/com/voxelmodpack/hdskins/HDSkinManager.java b/src/hdskins/java/com/voxelmodpack/hdskins/HDSkinManager.java index 2682b6ce..24200df0 100644 --- a/src/hdskins/java/com/voxelmodpack/hdskins/HDSkinManager.java +++ b/src/hdskins/java/com/voxelmodpack/hdskins/HDSkinManager.java @@ -29,7 +29,6 @@ import com.voxelmodpack.hdskins.util.PlayerUtil; import com.voxelmodpack.hdskins.util.ProfileTextureUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.AbstractClientPlayer; -import net.minecraft.client.network.NetHandlerPlayClient; import net.minecraft.client.network.NetworkPlayerInfo; import net.minecraft.client.renderer.ThreadDownloadImageData; import net.minecraft.client.renderer.texture.ITextureObject; @@ -279,22 +278,21 @@ public final class HDSkinManager implements IResourceManagerReloadListener { } public void reloadSkins() { - Stream playerList = Stream.empty(); Minecraft mc = Minecraft.getMinecraft(); - if (mc.world != null) { - playerList = mc.world.playerEntities.stream() - .filter(AbstractClientPlayer.class::isInstance) - .map(AbstractClientPlayer.class::cast) - .map(PlayerUtil::getInfo); - } - NetHandlerPlayClient playClient = mc.getConnection(); - if (playClient != null) { - playerList = Stream.concat(playerList, playClient.getPlayerInfoMap().stream()); - } - - playerList.filter(Objects::nonNull).distinct() + Stream.concat( + // in-world players (+NPCs) + Streams.stream(Optional.ofNullable(mc.world)) + .flatMap(w -> w.playerEntities.stream()) + .filter(AbstractClientPlayer.class::isInstance) + .map(p -> PlayerUtil.getInfo((AbstractClientPlayer) p)), + // tab list players + Streams.stream(Optional.ofNullable(mc.getConnection())) + .flatMap(c -> c.getPlayerInfoMap().stream())) + // filter nulls and clear skins + .filter(Objects::nonNull) + .distinct() .forEach(this::clearNetworkSkin); clearListeners.removeIf(this::onSkinCacheCleared);