aboutsummaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authormat <github@matdoes.dev>2022-02-17 00:19:51 -0600
committermat <github@matdoes.dev>2022-02-17 00:19:51 -0600
commita6cff35351d418272d137013cd536c26e978b6f6 (patch)
tree6df48609fe09c844e5874bdd94f4e01f113703c9 /src/lib
parentcd982e64595ab47a5fa71a40f8249893dbf867df (diff)
downloadskyblock-stats-a6cff35351d418272d137013cd536c26e978b6f6.tar.gz
skyblock-stats-a6cff35351d418272d137013cd536c26e978b6f6.tar.bz2
skyblock-stats-a6cff35351d418272d137013cd536c26e978b6f6.zip
move some stuff and change how constants are done
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/Header.svelte2
-rw-r--r--src/lib/minecraft/Inventory.svelte45
-rw-r--r--src/lib/minecraft/Item.svelte32
-rw-r--r--src/lib/minecraft/Username.svelte (renamed from src/lib/Username.svelte)0
-rw-r--r--src/lib/minecraft/heads/Head2d.svelte (renamed from src/lib/heads/Head2d.svelte)0
-rw-r--r--src/lib/minecraft/heads/Head3d.svelte (renamed from src/lib/heads/Head3d.svelte)0
-rw-r--r--src/lib/profile.ts6
-rw-r--r--src/lib/sections/Armor.svelte7
-rw-r--r--src/lib/sections/Infobox.svelte3
-rw-r--r--src/lib/utils.ts3
10 files changed, 91 insertions, 7 deletions
diff --git a/src/lib/Header.svelte b/src/lib/Header.svelte
index a5ec702..48f5167 100644
--- a/src/lib/Header.svelte
+++ b/src/lib/Header.svelte
@@ -6,7 +6,7 @@
</script>
<header id="main-header">
- <a href={backArrowHref} class="back-arrow-anchor" aria-label="back">
+ <a href={backArrowHref} class="back-arrow-anchor" aria-label="back" sveltekit:prefetch>
<svg class="back-arrow" height="33" width="23">
<path d="M 14 0 l -13 13 l 13 13" stroke-width="2" fill="none" />
</svg>
diff --git a/src/lib/minecraft/Inventory.svelte b/src/lib/minecraft/Inventory.svelte
new file mode 100644
index 0000000..3d3b9c0
--- /dev/null
+++ b/src/lib/minecraft/Inventory.svelte
@@ -0,0 +1,45 @@
+<script lang="ts">
+ import Item from './Item.svelte'
+
+ export let items
+ export let name = ''
+ export let pack = ''
+
+ if (name === 'inventory')
+ // in the inventory, the first 9 items are the hotbar and should be at the end
+ items = items.slice(9).concat(items.slice(0, 9))
+
+ // each item group has 9 items
+ let itemGroups = []
+ $: {
+ itemGroups = []
+ for (let i = 0; i < items.length; i += 9) {
+ itemGroups.push(items.slice(i, i + 9))
+ }
+ }
+</script>
+
+<div class:inventory-container-{name}={name !== ''}>
+ {#each itemGroups as itemGroup, groupIndex}
+ <div>
+ {#each itemGroup as item}
+ <Item {item} {pack} isslot />
+ {/each}
+ </div>
+ {/each}
+</div>
+
+<!-- {%- macro inventory(items, name='', pack='') -%}
+ <div{% if name %} class="inventory-container-{{ name }}"{% endif %}>
+ {%- if name == 'inventory' -%}
+ {%- set items = items|slice(9)|append(items|slice(0, 9)) -%}
+ {%- endif -%}
+
+ {%- for itemData in items -%}
+ {%- if loop.index0 > 0 and loop.index0 % 9 == 0 %}</div>{%- endif -%}
+ {%- if loop.index0 % 9 == 0 %}<div>{%- endif -%}
+ {{- item(itemData, slot=true, pack=pack) -}}
+ {%- endfor -%}
+ </div>
+ </div>
+{%- endmacro -%} -->
diff --git a/src/lib/minecraft/Item.svelte b/src/lib/minecraft/Item.svelte
new file mode 100644
index 0000000..86bd8f1
--- /dev/null
+++ b/src/lib/minecraft/Item.svelte
@@ -0,0 +1,32 @@
+<script lang="ts">
+ import { formattingCodeToHtml } from '$lib/utils'
+
+ export let item: any | null
+ export let isslot = true
+ export let pack = ''
+
+ $: itemLoreHtml = item.display.lore.map(l => formattingCodeToHtml(l)).join('<br>')
+ $: itemNameHtml = formattingCodeToHtml(item.display.name)
+</script>
+
+<!-- {#if data}{/if} -->
+
+<!-- {%- macro item(data, slot=true, pack='') -%}
+ {%- if data -%}
+ {%- set itemLoreHtml -%}
+ {%- for line in data.display.lore -%}
+ {{- line|formattingCodeToHtml -}}{% if not loop.last %}<br>{% endif %}
+ {%- endfor -%}
+ {%- endset -%}
+ {%- set itemNameHtml = data.display.name|formattingCodeToHtml -%}
+ {%- endif -%}
+ <span class="item{% if slot %} item-slot{% endif %}"{% if data %} data-lore-html="{{- itemLoreHtml -}}" data-name-html="{{- itemNameHtml -}}"{% endif %}>
+ {%- if data -%}
+ {%- set imageUrl = data|itemToUrl(pack) -%}
+ {%- if imageUrl -%}
+ <img loading="lazy" src="{{ imageUrl }}" alt="{{ data.display.name|removeFormattingCode }}"{% if imageUrl|startsWith('https://mc-heads.net/head/') %} class="item-custom-head"{% endif %}>
+ {%- endif -%}
+ {%- if data.count != 1 %}<span class="item-count">{{ data.count }}</span>{% endif -%}
+ {%- endif -%}
+ </span>
+{%- endmacro -%} -->
diff --git a/src/lib/Username.svelte b/src/lib/minecraft/Username.svelte
index d415511..d415511 100644
--- a/src/lib/Username.svelte
+++ b/src/lib/minecraft/Username.svelte
diff --git a/src/lib/heads/Head2d.svelte b/src/lib/minecraft/heads/Head2d.svelte
index d4e9ca8..d4e9ca8 100644
--- a/src/lib/heads/Head2d.svelte
+++ b/src/lib/minecraft/heads/Head2d.svelte
diff --git a/src/lib/heads/Head3d.svelte b/src/lib/minecraft/heads/Head3d.svelte
index f8d2657..f8d2657 100644
--- a/src/lib/heads/Head3d.svelte
+++ b/src/lib/minecraft/heads/Head3d.svelte
diff --git a/src/lib/profile.ts b/src/lib/profile.ts
index 973a6da..320a5dc 100644
--- a/src/lib/profile.ts
+++ b/src/lib/profile.ts
@@ -10,16 +10,16 @@ export function prettyTimestamp(ms: number) {
return timeAsString
}
-export function generateInfobox(data, constants, opts: { meta: boolean }): string[] {
+export function generateInfobox(data, opts: { meta: boolean }): string[] {
const result: string[] = []
result.push(`💾 Last save: ${prettyTimestamp(data.member.last_save * 1000)}`)
result.push(`🚶 Profile created: ${prettyTimestamp(data.member.first_join * 1000)}`)
- result.push(`✨ Fairy souls: ${data.member.fairy_souls.total}/${constants.max_fairy_souls}`)
+ result.push(`✨ Fairy souls: ${data.member.fairy_souls.total}/${data.member.fairy_souls.max}`)
- if (data.profile.minion_count >= constants.max_minions)
+ if (data.profile.minion_count >= data.profile.maxUniqueMinions)
result.push(`🤖 Minion count: ${data.profile.minion_count}`)
let mostSignificantKillsStat = null
diff --git a/src/lib/sections/Armor.svelte b/src/lib/sections/Armor.svelte
new file mode 100644
index 0000000..c4e7950
--- /dev/null
+++ b/src/lib/sections/Armor.svelte
@@ -0,0 +1,7 @@
+<script lang="ts">
+ import Inventory from '$lib/minecraft/Inventory.svelte'
+ export let data
+ export let pack
+</script>
+
+<Inventory items={data.member.inventories.armor} name="armor" {pack} />
diff --git a/src/lib/sections/Infobox.svelte b/src/lib/sections/Infobox.svelte
index eda7d22..c5c3454 100644
--- a/src/lib/sections/Infobox.svelte
+++ b/src/lib/sections/Infobox.svelte
@@ -4,7 +4,6 @@
import Emoji from '$lib/Emoji.svelte'
export let data
- export let constants
</script>
<!-- <div id="infobox">
@@ -33,7 +32,7 @@
<div id="infobox">
<h2><Username player={data.member} prefix /> ({data.member.profileName})</h2>
- {#each generateInfobox(data, constants, { meta: false }) as item}
+ {#each generateInfobox(data, { meta: false }) as item}
<p><Emoji value={item} /></p>
{/each}
</div>
diff --git a/src/lib/utils.ts b/src/lib/utils.ts
index c2a955a..ae0c5f0 100644
--- a/src/lib/utils.ts
+++ b/src/lib/utils.ts
@@ -61,7 +61,8 @@ export function formattingCodeToHtml(formatted: string): string {
reset()
}
} else {
- htmlOutput += character
+ // no xss!
+ htmlOutput += character.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;')
}
}
reset()