diff --git a/src/app/components/ItemTooltip.tsx b/src/app/components/ItemTooltip.tsx index 7fb2edb8..cf9d06dd 100644 --- a/src/app/components/ItemTooltip.tsx +++ b/src/app/components/ItemTooltip.tsx @@ -21,6 +21,7 @@ export function ItemTooltip({ id, tag, advanced, offset = [0, 0], swap }: Props) const name = displayName ? JSON.parse(displayName) : (translatedName ?? fakeTranslation(id)) const maxDamage = MaxDamageItems.get(id) + const enchantments = (id === 'minecraft:enchanted_book' ? tag?.StoredEnchantments : tag?.Enchantments) ?? [] return
- {tag?.Enchantments?.map(({ id, lvl }: { id: string, lvl: number }) => { + {enchantments.map(({ id, lvl }: { id: string, lvl: number }) => { const ench = getEnchantmentData(id) const component: any[] = [{ translate: `enchantment.${id.replace(':', '.')}`, color: ench?.curse ? 'red' : 'gray' }] if (lvl !== 1 || ench?.maxLevel !== 1) { diff --git a/src/app/components/previews/LootTablePreview.tsx b/src/app/components/previews/LootTablePreview.tsx index cdef22cd..d91f89d7 100644 --- a/src/app/components/previews/LootTablePreview.tsx +++ b/src/app/components/previews/LootTablePreview.tsx @@ -25,6 +25,7 @@ export const LootTablePreview = ({ data }: PreviewProps) => { const state = JSON.stringify(table) useEffect(() => { const items = generateLootTable(table, { version, seed, luck, daytime, weather, stackMixer: mixItems ? 'container' : 'default' }) + console.log('Generated loot', items) setItems(items) }, [version, seed, luck, daytime, weather, mixItems, state]) diff --git a/src/app/previews/LootTable.ts b/src/app/previews/LootTable.ts index 0137e2bb..ca58dfda 100644 --- a/src/app/previews/LootTable.ts +++ b/src/app/previews/LootTable.ts @@ -271,22 +271,33 @@ const LootFunctions: Record LootFunction> = { return data.discoverable && (isBook || data.canEnchant(item.id)) }) } - const id = enchantments[ctx.random.nextInt(enchantments.length)] - const data = getEnchantmentData(id) - const lvl = ctx.random.nextInt(data.maxLevel - data.minLevel + 1) + data.minLevel - enchantItem(item, { id, lvl }) + if (enchantments.length > 0) { + const id = enchantments[ctx.random.nextInt(enchantments.length)] + const data = getEnchantmentData(id) + const lvl = ctx.random.nextInt(data.maxLevel - data.minLevel + 1) + data.minLevel + if (isBook) { + item.tag = {} + item.count = 1 + } + enchantItem(item, { id, lvl }) + if (isBook) { + item.id = 'minecraft:enchanted_book' + } + } }, enchant_with_levels: ({ levels, treasure }) => (item, ctx) => { const enchants = selectEnchantments(ctx.random, item, computeInt(levels, ctx), treasure) const isBook = item.id === 'minecraft:book' if (isBook) { - item.id = 'minecraft:enchanted_book' item.count = 1 item.tag = {} } for (const enchant of enchants) { enchantItem(item, enchant) } + if (isBook) { + item.id = 'minecraft:enchanted_book' + } }, limit_count: ({ limit }) => (item, ctx) => { const { min, max } = prepareIntRange(limit, ctx) diff --git a/src/styles/global.css b/src/styles/global.css index fa0eb96b..21fa7aa3 100644 --- a/src/styles/global.css +++ b/src/styles/global.css @@ -1238,7 +1238,7 @@ hr { .item-display > .item-glint, .item-display > .item-glint::after { background: url(/images/glint.png) repeat; - filter: brightness(1.4) blur(1px) opacity(0.8); + filter: brightness(1.6) blur(1px) opacity(0.7); animation: glint 20s linear 0s infinite; background-size: 400%; background-blend-mode: overlay;