From c680e2463046f4123f6ef3710e5cf9655cf3da57 Mon Sep 17 00:00:00 2001 From: mat Date: Mon, 21 Feb 2022 20:43:55 -0600 Subject: add collections and zones --- src/app.css | 3 ++ src/lib/APITypes.d.ts | 16 +++++++++ src/lib/layout/Loader.svelte | 5 +-- src/lib/minecraft/inventory.ts | 5 +-- src/lib/sections/Collections.svelte | 56 +++++++++++++++++++++++++++++ src/lib/sections/Minions.svelte | 12 ------- src/lib/sections/Zones.svelte | 38 ++++++++++++++++++++ src/routes/__error.svelte | 53 +++++++++++++++++++++++++++ src/routes/index.svelte | 4 +++ src/routes/player/[player]/[profile].svelte | 14 ++++++++ src/routes/player/[player]/index.svelte | 25 +++++++------ 11 files changed, 204 insertions(+), 27 deletions(-) create mode 100644 src/lib/sections/Collections.svelte create mode 100644 src/lib/sections/Zones.svelte create mode 100644 src/routes/__error.svelte (limited to 'src') diff --git a/src/app.css b/src/app.css index abba4bf..6c9576f 100644 --- a/src/app.css +++ b/src/app.css @@ -97,16 +97,19 @@ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; } + body { font-family: 'Atkinson Hyperlegible', sans-serif; color: var(--theme-main-text); background-color: var(--theme-main-background); margin: 0; overflow-x: hidden; + height: 100%; } html { scroll-behavior: smooth; + height: 100%; } /* content is uglier when its max width */ diff --git a/src/lib/APITypes.d.ts b/src/lib/APITypes.d.ts index 2f1c9ff..119e5b6 100644 --- a/src/lib/APITypes.d.ts +++ b/src/lib/APITypes.d.ts @@ -122,3 +122,19 @@ export interface CleanFullProfileBasicMembers extends CleanProfile { minion_count: number maxUniqueMinions: number } + +declare const COLLECTIONS: { + readonly farming: readonly ["wheat", "carrot", "potato", "pumpkin", "melon_slice", "wheat_seeds", "red_mushroom", "cocoa_beans", "cactus", "sugar_cane", "feather", "leather", "porkchop", "chicken", "mutton", "rabbit", "nether_wart"] + readonly mining: readonly ["cobblestone", "coal", "iron_ingot", "gold_ingot", "diamond", "lapis_lazuli", "emerald", "redstone", "quartz", "obsidian", "glowstone_dust", "gravel", "ice", "netherrack", "sand", "end_stone", "mithril_ore", "gemstone", "hard_stone"] + readonly combat: readonly ["rotten_flesh", "bone", "string", "spider_eye", "gunpowder", "ender_pearl", "ghast_tear", "slime_ball", "blaze_rod", "magma_cream"] + readonly foraging: readonly ["oak_log", "spruce_log", "birch_log", "jungle_log", "acacia_log", "dark_oak_log"] + readonly fishing: readonly ["cod", "salmon", "tropical_fish", "pufferfish", "prismarine_shard", "prismarine_crystals", "clay_ball", "lily_pad", "ink_sac", "sponge"] + readonly unknown: readonly [] +} +declare type CollectionCategory = keyof typeof COLLECTIONS +export interface Collection { + name: string + xp: number + level: number + category: CollectionCategory +} diff --git a/src/lib/layout/Loader.svelte b/src/lib/layout/Loader.svelte index 8347e16..524d975 100644 --- a/src/lib/layout/Loader.svelte +++ b/src/lib/layout/Loader.svelte @@ -41,9 +41,10 @@ left: 0px; top: 0px; transition: width 1s cubic-bezier(0.4, 0, 0.2, 1), opacity 100ms linear; - height: 8px; + height: 6px; z-index: 20; /* add a faint glow effect */ - background: -moz-linear-gradient(top, #16e 0%, #16e 50%, #16e5 50%, #16e0 100%); + /* background: -moz-linear-gradient(top, #16e 0%, #16e 50%, #16e5 50%, #16e0 100%); */ + background: linear-gradient(to bottom, #16e 0%, #16e 50%, #16e5 50%, #16e0 100%); } diff --git a/src/lib/minecraft/inventory.ts b/src/lib/minecraft/inventory.ts index faaea85..7b35f0e 100644 --- a/src/lib/minecraft/inventory.ts +++ b/src/lib/minecraft/inventory.ts @@ -58,9 +58,10 @@ export function itemToUrl(item: Item, packName?: string): string { return textureUrl } -export async function skyblockItemToUrl(skyblockItemName: string) { +export function skyblockItemToUrl(skyblockItemName: string) { const item = skyblockItemNameToItem(skyblockItemName) - const itemTextureUrl = await itemToUrl(item, 'packshq') + console.log(skyblockItemName, item) + const itemTextureUrl = itemToUrl(item, 'packshq') return itemTextureUrl } diff --git a/src/lib/sections/Collections.svelte b/src/lib/sections/Collections.svelte new file mode 100644 index 0000000..2e03d3f --- /dev/null +++ b/src/lib/sections/Collections.svelte @@ -0,0 +1,56 @@ + + +{#if data.member.collections} + {#each Object.keys(categories).sort() as categoryName} + {@const collections = categories[categoryName]} +

{cleanId(categoryName)}

+ + {/each} +{/if} + + diff --git a/src/lib/sections/Minions.svelte b/src/lib/sections/Minions.svelte index 2e4483c..63dda51 100644 --- a/src/lib/sections/Minions.svelte +++ b/src/lib/sections/Minions.svelte @@ -24,18 +24,6 @@ {/each} - diff --git a/src/routes/__error.svelte b/src/routes/__error.svelte new file mode 100644 index 0000000..b49d2a1 --- /dev/null +++ b/src/routes/__error.svelte @@ -0,0 +1,53 @@ + + + + + +
+ +
+
+

{status}

+

{error.message}

+ Home +
+
+ + diff --git a/src/routes/index.svelte b/src/routes/index.svelte index 524df13..9bfbd29 100644 --- a/src/routes/index.svelte +++ b/src/routes/index.svelte @@ -1,4 +1,6 @@ @@ -6,6 +8,8 @@ Home +
+

SkyBlock Stats

diff --git a/src/routes/player/[player]/[profile].svelte b/src/routes/player/[player]/[profile].svelte index 1a86b44..e31108b 100644 --- a/src/routes/player/[player]/[profile].svelte +++ b/src/routes/player/[player]/[profile].svelte @@ -37,6 +37,8 @@ import { cleanId } from '$lib/utils' import Collapsible from '$lib/Collapsible.svelte' import Minions from '$lib/sections/Minions.svelte' + import Zones from '$lib/sections/Zones.svelte' + import Collections from '$lib/sections/Collections.svelte' export let data: CleanMemberProfile export let pack: string @@ -127,6 +129,18 @@ +
+ +

Zones

+ +
+
+
+ +

Collections

+ +
+
diff --git a/src/routes/player/[player]/index.svelte b/src/routes/player/[player]/index.svelte index 2ba7ba1..460cd28 100644 --- a/src/routes/player/[player]/index.svelte +++ b/src/routes/player/[player]/index.svelte @@ -36,19 +36,22 @@ let activeProfile: CleanProfile | null = null let activeProfileLastSave: number = 0 - - if (data.profiles) - for (const profile of data.profiles) { - if (profile.members) - for (const member of profile.members) { - if (member.uuid === data.player?.uuid && member.last_save > activeProfileLastSave) { - activeProfile = profile - activeProfileLastSave = member.last_save + let isActiveProfileOnline: boolean + + $: { + if (data.profiles) + for (const profile of data.profiles) { + if (profile.members) + for (const member of profile.members) { + if (member.uuid === data.player?.uuid && member.last_save > activeProfileLastSave) { + activeProfile = profile + activeProfileLastSave = member.last_save + } } - } - } + } - const isActiveProfileOnline = Date.now() / 1000 - 60 < activeProfileLastSave + isActiveProfileOnline = Date.now() / 1000 - 60 < activeProfileLastSave + } // cursed svelte :D $: bodyStyle = data.customization?.backgroundUrl -- cgit