diff options
| author | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2024-09-21 04:06:24 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-09-21 04:06:24 -0400 |
| commit | f4714fb07798b9900ead21fa6f657a7ab0ec53fc (patch) | |
| tree | 7059c66a523c4f978e6ece84817ec0eb9a09d0d5 /src/main/java | |
| parent | 70f65321d0f1120d4ea714b5c9cee0f74e84adee (diff) | |
| parent | 7f3e17e9f72c97a2de81cc7e396032460e24e6a4 (diff) | |
| download | Skyblocker-f4714fb07798b9900ead21fa6f657a7ab0ec53fc.tar.gz Skyblocker-f4714fb07798b9900ead21fa6f657a7ab0ec53fc.tar.bz2 Skyblocker-f4714fb07798b9900ead21fa6f657a7ab0ec53fc.zip | |
Merge pull request #1004 from AzureAaron/mining-stuff-and-other
Various Fixes
Diffstat (limited to 'src/main/java')
5 files changed, 44 insertions, 31 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemFixerUpper.java b/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemFixerUpper.java index ab748698..e931c7e2 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemFixerUpper.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemFixerUpper.java @@ -180,6 +180,8 @@ public class ItemFixerUpper { private final static Int2ObjectMap<String> SPAWN_EGG_VARIANTS = Int2ObjectMaps.unmodifiable(new Int2ObjectOpenHashMap<>(Map.ofEntries( //This entry 0 is technically not right but Hypixel decided to make it polar bear so well we use that Map.entry(0, "minecraft:polar_bear_spawn_egg"), + //This entry 4 does not actually exist, Hypixel uses it as a placeholder for elder guardians + Map.entry(4, "minecraft:elder_guardian_spawn_egg"), Map.entry(50, "minecraft:creeper_spawn_egg"), Map.entry(51, "minecraft:skeleton_spawn_egg"), Map.entry(52, "minecraft:spider_spawn_egg"), diff --git a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/ProfileViewerScreen.java b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/ProfileViewerScreen.java index d789f5d9..91b569a2 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/ProfileViewerScreen.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/ProfileViewerScreen.java @@ -5,9 +5,10 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.mojang.brigadier.arguments.StringArgumentType; import com.mojang.brigadier.builder.LiteralArgumentBuilder; +import com.mojang.util.UndashedUuid; + import de.hysky.skyblocker.SkyblockerMod; import de.hysky.skyblocker.annotations.Init; -import de.hysky.skyblocker.mixins.accessors.SkullBlockEntityAccessor; import de.hysky.skyblocker.skyblock.profileviewer.collections.CollectionsPage; import de.hysky.skyblocker.skyblock.profileviewer.dungeons.DungeonsPage; import de.hysky.skyblocker.skyblock.profileviewer.inventory.InventoryPage; @@ -22,6 +23,7 @@ import it.unimi.dsi.fastutil.ints.IntList; import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; +import net.minecraft.block.entity.SkullBlockEntity; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; @@ -146,35 +148,46 @@ public class ProfileViewerScreen extends Screen { } }); - CompletableFuture<Void> minecraftProfileFuture = SkullBlockEntityAccessor.invokeFetchProfileByName(username).thenAccept(profile -> { - this.playerName = profile.get().getName(); - entity = new OtherClientPlayerEntity(MinecraftClient.getInstance().world, profile.get()) { - @Override - public SkinTextures getSkinTextures() { - PlayerListEntry playerListEntry = new PlayerListEntry(profile.get(), false); - return playerListEntry.getSkinTextures(); - } + CompletableFuture<Void> playerFuture = CompletableFuture.runAsync(() -> { + String stringifiedUuid = ApiUtils.name2Uuid(username); - @Override - public boolean isPartVisible(PlayerModelPart modelPart) { - return !(modelPart.getName().equals(PlayerModelPart.CAPE.getName())); - } + if (stringifiedUuid.isEmpty()) { + this.playerName = "User not found"; + this.profileNotFound = true; + } + + UUID uuid = UndashedUuid.fromStringLenient(stringifiedUuid); + + //The fetch by name method can sometimes fail in weird cases and return a fake offline player + SkullBlockEntity.fetchProfileByUuid(uuid).thenAccept(profile -> { + this.playerName = profile.get().getName(); + entity = new OtherClientPlayerEntity(MinecraftClient.getInstance().world, profile.get()) { + @Override + public SkinTextures getSkinTextures() { + PlayerListEntry playerListEntry = new PlayerListEntry(profile.get(), false); + return playerListEntry.getSkinTextures(); + } - @Override - public boolean isInvisibleTo(PlayerEntity player) { - return true; - } - }; - entity.setCustomNameVisible(false); - }).exceptionally(ex -> { - this.playerName = "User not found"; - this.profileNotFound = true; - return null; - }); + @Override + public boolean isPartVisible(PlayerModelPart modelPart) { + return !(modelPart.getName().equals(PlayerModelPart.CAPE.getName())); + } - return CompletableFuture.allOf(profileFuture, minecraftProfileFuture); - } + @Override + public boolean isInvisibleTo(PlayerEntity player) { + return true; + } + }; + entity.setCustomNameVisible(false); + }).exceptionally(ex -> { + this.playerName = "User not found"; + this.profileNotFound = true; + return null; + }).join(); + }); + return CompletableFuture.allOf(profileFuture, playerFuture); + } public void onNavButtonClick(ProfileViewerNavButton clickedButton) { if (profileViewerPages[activePage] != null) profileViewerPages[activePage].markWidgetsAsInvisible(); diff --git a/src/main/java/de/hysky/skyblocker/utils/ItemUtils.java b/src/main/java/de/hysky/skyblocker/utils/ItemUtils.java index e6fa3d98..94dc75aa 100644 --- a/src/main/java/de/hysky/skyblocker/utils/ItemUtils.java +++ b/src/main/java/de/hysky/skyblocker/utils/ItemUtils.java @@ -338,7 +338,7 @@ public final class ItemUtils { if (stack.getSkyblockId().equals("PICKONIMBUS")) { int pickonimbusDurability = customData.getInt("pickonimbus_durability"); - return IntIntPair.of(customData.contains("pickonimbus_durability") ? pickonimbusDurability : 5000, 5000); + return IntIntPair.of(customData.contains("pickonimbus_durability") ? pickonimbusDurability : 2000, 2000); } String drillFuel = Formatting.strip(getLoreLineIf(stack, FUEL_PREDICATE)); diff --git a/src/main/java/de/hysky/skyblocker/utils/ws/SkyblockerWebSocket.java b/src/main/java/de/hysky/skyblocker/utils/ws/SkyblockerWebSocket.java index da026209..0c82acee 100644 --- a/src/main/java/de/hysky/skyblocker/utils/ws/SkyblockerWebSocket.java +++ b/src/main/java/de/hysky/skyblocker/utils/ws/SkyblockerWebSocket.java @@ -6,7 +6,6 @@ import de.hysky.skyblocker.debug.Debug; import de.hysky.skyblocker.events.SkyblockEvents; import de.hysky.skyblocker.utils.ApiAuthentication; import de.hysky.skyblocker.utils.Http; -import net.minecraft.util.Util; import org.slf4j.Logger; import java.net.URI; @@ -130,8 +129,7 @@ public class SkyblockerWebSocket { } private void handleWholeMessage(List<CharSequence> parts) { - StringBuilder builder = Util.make(new StringBuilder(), sb -> parts.forEach(sb::append)); - String message = builder.toString(); + String message = String.join("", parts); if (Debug.debugEnabled() && Debug.webSocketDebug()) LOGGER.info("[Skyblocker WebSocket] Received Message: {}", message); diff --git a/src/main/java/de/hysky/skyblocker/utils/ws/WsMessageHandler.java b/src/main/java/de/hysky/skyblocker/utils/ws/WsMessageHandler.java index f4aadbc4..0ca067cb 100644 --- a/src/main/java/de/hysky/skyblocker/utils/ws/WsMessageHandler.java +++ b/src/main/java/de/hysky/skyblocker/utils/ws/WsMessageHandler.java @@ -31,7 +31,7 @@ public class WsMessageHandler { * Useful for sending simple state updates with an optional message */ static void sendSimple(Type type, Service service, String serverId, Optional<Message<? extends Message<?>>> message) { - send(type, service, serverId, message.isPresent() ? Optional.of(encodeMessage(message.get())) : Optional.empty()); + send(type, service, serverId, message.map(WsMessageHandler::encodeMessage)); } private static void send(Type type, Service service, String serverId, Optional<Dynamic<?>> message) { |
