Compare commits

...

11 Commits

Author SHA1 Message Date
Matt a41ae52d9b plots: AUTHORITATIVE coin values (non-uniform), 0.22.5 -> 0.22.6
User confirmed in-game tooltip values:
  spur=1, bevel=8, sprocket=16, cog=64, crown=512, sun=4096.

Chain is non-uniform (x8, x2, x4, x8, x8). My earlier guesses
(uniform x8, assuming Sun=64 Cogs) gave consistent but wrong
intermediate values. Now sourced from the mod's own tooltip, not
triangulated.

Plot prices at 100/250/600 spurs now mean roughly:
  100 spurs = 6 bevels + 4 spurs (1 sprocket + 5 bevels + 4 spurs)
  250 spurs = 3 cogs + 3 bevels + 2 spurs
  600 spurs = 9 cogs + 3 bevels (... still small change tier)

User-side: edit PLOT_DEFS in plots.js to set real prices once the
spawn marketplace and economy scale are decided.
2026-05-23 18:19:37 +00:00
Matt 59d50c9ee6 Merge pull request 'plots: correct coin chain (6 denoms incl sprocket)' (#38) from fix/coin-values-with-sprocket into main 2026-05-23 17:59:58 +00:00
Matt b85eef04bd plots: correct Numismatics coin chain (6 denoms incl sprocket), 0.22.4 -> 0.22.5
Was: 5-denom x8 chain (spur=1, bevel=8, cog=64, crown=512, sun=4096).
Now: 6-denom x8 chain with sprocket inserted between bevel and cog.

Verified in-game (user reported Sun = 64 Cogs, which only fits these
values: spur=1, bevel=8, sprocket=64, cog=512, crown=4096, sun=32768).

Plot purchase math (countCoins, takeCoins, giveCoins) was using the
old 5-denom map: cog would have been counted as 64 spurs when it's
actually 512, and sprockets weren't counted at all. Plot prices remain
at 100/250/600 spurs which are still appropriate small-change amounts;
user can edit PLOT_DEFS to raise once playtesting confirms desired
economy scale.
2026-05-23 17:59:57 +00:00
Matt 179486bd2c Merge pull request 'Simplify coin tooltips + include sprocket' (#37) from fix/coin-tooltips-simplify into main 2026-05-23 17:55:44 +00:00
Matt fad867976f tooltips: simplify coin tooltips (Numismatics already shows value), include sprocket, 0.22.3 -> 0.22.4
Three corrections per user feedback:
1. Drop the conversion-crib lines -- Numismatics' built-in tooltip
   already shows 'Value: N spurs' so our added lines were duplicate.
2. Include sprocket (numismatics:sprocket) -- the 6th denomination
   I missed when first writing the script. Full set: spur, bevel,
   sprocket, cog, crown, sun.
3. Keep only the actually-useful hint: 'Right-click a Bank Teller
   block to convert denominations' -- the one piece of info that
   isn't on the mod's own tooltip.

Decision punted (deliberately): no 8-spurs-shapeless-to-1-bevel
crafting recipes. The Bank Teller is the spawn-economy anchor;
crafting recipes would let players bypass the bank entirely. Players
who want local conversion can place their own Teller -- which is the
intended Numismatics design.
2026-05-23 17:55:44 +00:00
Matt 858fa690ba Merge pull request 'Build-Pack: tweak jars default to side=server (urgent client fix)' (#36) from fix/tweak-jars-server-only into main 2026-05-23 17:40:35 +00:00
Matt 135ecf4a5a Build-Pack: default tweak jars to side=server, 0.22.2 -> 0.22.3
URGENT client-side fix. brassandsigil_tweaks-1.0.0.jar (built from
pack/tweaks/ into pack/overrides/mods/) declares lithostitched as a
hard dependency in its mods.toml. lithostitched is tagged side=server
in the lockfile because it's worldgen-only. brassandsigil_tweaks had
no explicit side tag so Build-Pack defaulted it to side=both. Clients
downloaded the tweak jar but not the dep -> NeoForge refused to start
with 'Mod brassandsigil_tweaks requires lithostitched 1.7 or above'.

Fix: Build-Pack now injects side='server' on any local-override file
under mods/. All tweak jars are data-only (worldgen modifiers, recipe
overrides) and pure server-side. If a future tweak is actually client-
relevant, this rule will need a per-file exception.

Tested in build output -- the brassandsigil_tweaks entry now shows
side='server' in the generated manifest.
2026-05-23 17:40:34 +00:00
Matt 5813c7555e Merge pull request 'tooltips: correct event name to modifyTooltips' (#35) from fix/tooltip-event-name into main 2026-05-23 17:37:31 +00:00
Matt e1a77d2e19 tooltips: ItemEvents.tooltip -> ItemEvents.modifyTooltips, 0.22.1 -> 0.22.2
KubeJS 2101.x has ModifyItemTooltipsKubeEvent (the modify-tooltips API);
the older 'tooltip' event name doesn't exist in this version.
2026-05-23 17:37:30 +00:00
Matt 31f7d5428c Merge pull request 'Numismatics: conversion-crib coin tooltips' (#34) from feature/numismatics-tooltips into main 2026-05-23 17:36:03 +00:00
Matt f19e7b187e numismatics: add conversion-crib tooltip to each coin, 0.22.0 -> 0.22.1
Numismatics' x8 uniform chain isn't intuitive. Mod values are
hardcoded so we cant fix the ratios, but we can put the conversion
table directly on each coins tooltip via KubeJS ItemEvents.tooltip.
Players hover any coin -> see how it relates to the others + a hint
to use Bank Teller for on-the-fly conversion.

~25 lines, ItemEvents.tooltip hot path is cached per item-id so no
performance concern.
2026-05-23 17:36:02 +00:00
4 changed files with 47 additions and 9 deletions
@@ -0,0 +1,22 @@
// Brass & Sigil — Numismatics coin tooltip helper
//
// Numismatics ships its own "Value: N spurs" tooltip on each coin --
// don't duplicate that. The one piece players need that ISN'T there is:
// where do I convert these? Answer: Bank Teller block. Add that hint
// to each of the 6 coin denominations (spur, bevel, sprocket, cog,
// crown, sun -- including sprocket which we missed in v0.22.1).
const COIN_IDS = [
'numismatics:spur',
'numismatics:bevel',
'numismatics:sprocket',
'numismatics:cog',
'numismatics:crown',
'numismatics:sun',
];
ItemEvents.modifyTooltips(event => {
COIN_IDS.forEach(function(id) {
event.add(id, Text.aqua('Right-click a Bank Teller block to convert denominations.'));
});
});
@@ -64,15 +64,18 @@ const PLOT_DEFS = new Map([
const REFUND_FRACTION = 0.5; // released plots refund 50% of purchase price
// ─── Numismatics coin handling ────────────────────────────────────────
// Authoritative values from in-game tooltips (verified by user 2026-05-23).
// Chain is NON-uniform (x8, x2, x4, x8, x8) -- don't assume otherwise.
const COIN_VALUES = {
'numismatics:spur': 1,
'numismatics:bevel': 8,
'numismatics:cog': 64,
'numismatics:crown': 512,
'numismatics:sun': 4096,
'numismatics:spur': 1,
'numismatics:bevel': 8,
'numismatics:sprocket': 16,
'numismatics:cog': 64,
'numismatics:crown': 512,
'numismatics:sun': 4096,
};
const DENOMS_DESC = ['numismatics:sun', 'numismatics:crown', 'numismatics:cog',
'numismatics:bevel', 'numismatics:spur'];
'numismatics:sprocket', 'numismatics:bevel', 'numismatics:spur'];
function countCoins(player) {
let total = 0;
+1 -1
View File
@@ -1,7 +1,7 @@
{
"$schema": "Brass-and-Sigil pack.lock.json - generated, do not edit by hand unless you know what you are doing",
"name": "Brass and Sigil",
"version": "0.22.0",
"version": "0.22.6",
"minecraft": "1.21.1",
"loader": {
"type": "neoforge",
+15 -2
View File
@@ -107,14 +107,27 @@ if ($LocalPackSource -and (Test-Path $LocalPackSource)) {
Get-ChildItem -Path $rootDir -Recurse -File | ForEach-Object {
$rel = $_.FullName.Substring($sourceFull.Length).TrimStart('\','/') -replace '\\','/'
$sha1 = (Get-FileHash -Algorithm SHA1 -Path $_.FullName).Hash.ToLowerInvariant()
$files += [pscustomobject]@{
# Tweak jars (built by Build-Tweaks.ps1 into pack/overrides/mods/)
# are pure data-only NeoForge mods -- worldgen modifiers, recipe
# overrides, etc. They typically depend on server-only libraries
# (Lithostitched, etc.) and have no client-side rendering. Default
# them to side="server" so the client doesn't try to load them
# without their server-only deps -> the loader otherwise refuses to
# start with "Mod X requires Y or above" errors. If a future tweak
# is genuinely client-relevant, override by editing this rule.
$entry = [ordered]@{
path = $rel
url = "$base/$rel"
sha1 = $sha1
size = $_.Length
}
if ($root -eq 'mods') { $entry.side = 'server' }
$files += [pscustomobject]$entry
$totalBytes += $_.Length
Write-Host (" [local] {0}" -f $rel)
$sideTag = if ($entry.side) { " [$($entry.side)]" } else { '' }
Write-Host (" [local] {0}{1}" -f $rel, $sideTag)
}
}
}