diff options
author | nea <nea@nea.moe> | 2023-05-27 23:39:49 +0200 |
---|---|---|
committer | nea <nea@nea.moe> | 2023-05-27 23:41:18 +0200 |
commit | 25371b340dee50b7178cf42b4ca159ce2ca0757e (patch) | |
tree | f850fc4af54d5baa10111649f689cc8b5f553669 /src/lib/minecraft/ItemIcon.svelte | |
parent | 67683c76bbee8adfc6cc1900a2462d77e5a9e5ae (diff) | |
download | skyblock-stats-feat/backpacks.tar.gz skyblock-stats-feat/backpacks.tar.bz2 skyblock-stats-feat/backpacks.zip |
Add backpacks to inventoriesfeat/backpacks
Diffstat (limited to 'src/lib/minecraft/ItemIcon.svelte')
-rw-r--r-- | src/lib/minecraft/ItemIcon.svelte | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/src/lib/minecraft/ItemIcon.svelte b/src/lib/minecraft/ItemIcon.svelte new file mode 100644 index 0000000..b5506e2 --- /dev/null +++ b/src/lib/minecraft/ItemIcon.svelte @@ -0,0 +1,75 @@ +<script lang="ts"> + import type { MatcherFile } from 'skyblock-assets' + import { itemToUrl } from './inventory' + import { removeFormattingCode } from '$lib/utils' + + export let isslot = true + export let item: any | null + export let pack: MatcherFile | undefined = undefined + export let headSize: number | undefined = undefined + let imageUrl: string | null + $: imageUrl = item ? itemToUrl(item, pack, headSize) : null +</script> + +{#if item} + <span class="item" class:item-slot={isslot}> + {#if imageUrl} + <img + loading="lazy" + src={imageUrl} + alt={removeFormattingCode(item.display.name)} + class:item-custom-head={imageUrl.startsWith('https://mc-heads.net/head/')} + /> + {/if} + {#if item.count !== undefined && item.count !== 1} + <span class="item-count">{item.count}</span> + {/if} + </span> +{:else} + <!-- don't do all that if the item doesn't actually exist --> + <span class="item" class:item-slot={isslot} /> +{/if} + +<style> + .item-count { + font-size: 0.45em; + float: right; + position: relative; + top: 1.21em; + right: 0.1em; + font-family: Minecraft, 'Atkinson Hyperlegible', sans-serif; + } + .item-slot { + border: 1px solid #888; + border-radius: 0.1em; + margin: 0.05em; + } + + .item { + display: inline-block; + font-size: 32px; + width: 1.2em; + height: 1.2em; + transition-property: font-size; + transition-duration: 500ms; + } + .item img { + position: absolute; + margin-top: 0.075em; + margin-left: 0.075em; + width: 1em; + height: 1em; + } + /* only pixelate items if they're not a head */ + .item img:not(.item-custom-head) { + image-rendering: crisp-edges; + image-rendering: pixelated; + } + + img.item-custom-head { + width: 0.75em; + height: 0.75em; + margin-top: 0.1875em; + margin-left: 0.1875em; + } +</style> |