Compare commits

...

11 Commits

Author SHA1 Message Date
Matt 42bec33aa1 pack: building-mods batch v0.23.0 (10 mods)
Tier 1 essentials for the spawn-town aesthetic:
- Macaws Roofs 2.3.2          proper sloped roofs (no more staircase hacks)
- Macaws Paths and Pavings 1.1.1  streets + sidewalks + plot boundaries
- Macaws Bridges 3.1.2         covered walkways + market awnings
- Macaws Lights and Lamps 1.1.5  streetlights + decorative lighting
- Supplementaries 3.6.5        vanilla++ decoration (signposts!), needs Moonlight

Tier 2 (skipping Chipped per user -- discuss JEI clutter separately):
- Macaws Windows 2.4.2         window variety
- Macaws Doors 1.1.5           door variety
- Create Deco 2.1.3            Create-aesthetic decoration, fits pack vibe

Bonus:
- Effortless Building 4.1      WorldEdit-lite survival building tool
- Moonlight 3.0.14             required dep for Supplementaries

All side=both. Total added ~25 MB. 62 lockfile entries now.
Pack 0.22.6 -> 0.23.0.
Pre-flight Check-Deps clean: all 87 mod IDs (incl jar-in-jar bundles)
satisfied.
2026-05-23 18:26:18 +00:00
Matt 0d74c9ef97 Merge pull request 'plots: actual coin values (non-uniform chain)' (#39) from fix/coin-values-actual into main 2026-05-23 18:19:37 +00:00
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
4 changed files with 152 additions and 28 deletions
@@ -1,24 +1,22 @@
// Brass & Sigil — Numismatics coin tooltip helper
//
// Numismatics' uniform x8 denomination chain (spur=1, bevel=8, cog=64,
// crown=512, sun=4096) isn't intuitive at a glance -- people expect
// real-world ratios like 1p/10p/20p/50p/£1. Mod values are hardcoded,
// so the next-best thing is putting the conversion crib right on each
// coin's tooltip.
//
// Players hover any coin and instantly see how it relates to the other
// denominations + a reminder that Bank Teller blocks convert on demand.
// 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 CRIBS = {
'numismatics:spur': [ '= 1 Spur (base unit)', 'Bank Teller block converts.' ],
'numismatics:bevel': [ '= 8 Spurs', 'Bank Teller block converts.' ],
'numismatics:cog': [ '= 64 Spurs (8 Bevels)', 'Bank Teller block converts.' ],
'numismatics:crown': [ '= 512 Spurs (8 Cogs, 64 Bevels)', 'Bank Teller block converts.' ],
'numismatics:sun': [ '= 4096 Spurs (8 Crowns)', 'Bank Teller block converts.' ],
};
const COIN_IDS = [
'numismatics:spur',
'numismatics:bevel',
'numismatics:sprocket',
'numismatics:cog',
'numismatics:crown',
'numismatics:sun',
];
ItemEvents.tooltip(event => {
for (const id in CRIBS) {
event.add(id, CRIBS[id].map(line => Text.aqua(line)));
}
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: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;
+111 -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.1",
"version": "0.23.0",
"minecraft": "1.21.1",
"loader": {
"type": "neoforge",
@@ -580,6 +580,116 @@
"sha1": "e977d86eec39d49295df4e2c4265d6710ae065e8",
"size": 428793,
"side": "client"
},
{
"source": "modrinth",
"slug": "macaws-roofs",
"versionId": "jiXRXiSt",
"version": "2.3.2",
"path": "mods/mcw-roofs-2.3.2-mc1.21.1neoforge.jar",
"url": "https://cdn.modrinth.com/data/B8jaH3P1/versions/jiXRXiSt/mcw-roofs-2.3.2-mc1.21.1neoforge.jar",
"sha1": "05806ff152e739ea0c5db86dabd9caf0cfa55b9d",
"size": 1784829,
"side": "both"
},
{
"source": "modrinth",
"slug": "macaws-paths-and-pavings",
"versionId": "tlymsxUG",
"version": "1.1.1",
"path": "mods/mcw-mcwpaths-1.1.1-mc1.21.1neoforge.jar",
"url": "https://cdn.modrinth.com/data/VRLhWB91/versions/tlymsxUG/mcw-mcwpaths-1.1.1-mc1.21.1neoforge.jar",
"sha1": "4bb7e1d28e8b3b5d3a3eaf5e0d3bcc62d1ab57f1",
"size": 777742,
"side": "both"
},
{
"source": "modrinth",
"slug": "macaws-bridges",
"versionId": "aQ7rY7ng",
"version": "3.1.2",
"path": "mods/mcw-bridges-3.1.2-mc1.21.1neoforge.jar",
"url": "https://cdn.modrinth.com/data/GURcjz8O/versions/aQ7rY7ng/mcw-bridges-3.1.2-mc1.21.1neoforge.jar",
"sha1": "71ece28129789a2123cf07e79938f488d8675bb2",
"size": 661387,
"side": "both"
},
{
"source": "modrinth",
"slug": "macaws-lights-and-lamps",
"versionId": "5U2kQZIL",
"version": "1.1.5",
"path": "mods/mcw-lights-1.1.5-mc1.21.1neoforge.jar",
"url": "https://cdn.modrinth.com/data/w4an97C2/versions/5U2kQZIL/mcw-lights-1.1.5-mc1.21.1neoforge.jar",
"sha1": "13c1107caf26b2c60d8626b3658b26cc7f634b38",
"size": 525744,
"side": "both"
},
{
"source": "modrinth",
"slug": "supplementaries",
"versionId": "4XwZg5Dq",
"version": "1.21.1-3.6.5",
"path": "mods/supplementaries-neoforge-1.21.1-3.6.5.jar",
"url": "https://cdn.modrinth.com/data/fFEIiSDQ/versions/4XwZg5Dq/supplementaries-neoforge-1.21.1-3.6.5.jar",
"sha1": "3ed53e2480eea26271f10eff7777feff4af3c415",
"size": 13304373,
"side": "both"
},
{
"source": "modrinth",
"slug": "macaws-windows",
"versionId": "rQUE4LCz",
"version": "2.4.2",
"path": "mods/mcw-mcwwindows-2.4.2-mc1.21.1neoforge.jar",
"url": "https://cdn.modrinth.com/data/C7I0BCni/versions/rQUE4LCz/mcw-mcwwindows-2.4.2-mc1.21.1neoforge.jar",
"sha1": "eb1d3c118acb450cc2fe14c2ce7ce247a1bca60c",
"size": 1261268,
"side": "both"
},
{
"source": "modrinth",
"slug": "macaws-doors",
"versionId": "u7BRX44F",
"version": "1.1.5",
"path": "mods/mcw-doors-1.1.5-mc1.21.1neoforge.jar",
"url": "https://cdn.modrinth.com/data/kNxa8z3e/versions/u7BRX44F/mcw-doors-1.1.5-mc1.21.1neoforge.jar",
"sha1": "c127904f23db1a641dd9e065ec51c5c177cb4cd7",
"size": 1190404,
"side": "both"
},
{
"source": "modrinth",
"slug": "create-deco",
"versionId": "qrcMVoBD",
"version": "2.1.3",
"path": "mods/createdeco-2.1.3.jar",
"url": "https://cdn.modrinth.com/data/sMvUb4Rb/versions/qrcMVoBD/createdeco-2.1.3.jar",
"sha1": "93d9eff58b46c6953e907d071e6be4e3ce07be38",
"size": 3328498,
"side": "both"
},
{
"source": "modrinth",
"slug": "effortless-building",
"versionId": "cWLJgpqR",
"version": "4.1",
"path": "mods/effortlessbuilding-4.1+1.21.1.jar",
"url": "https://cdn.modrinth.com/data/DYtfQEYj/versions/cWLJgpqR/effortlessbuilding-4.1%2B1.21.1.jar",
"sha1": "10188c088c3e32d21275fd02d1aa31ffb6dd9f86",
"size": 810119,
"side": "both"
},
{
"source": "modrinth",
"slug": "moonlight",
"versionId": "er7S98Q1",
"version": "1.21.1-3.0.14",
"path": "mods/moonlight-neoforge-1.21.1-3.0.14.jar",
"url": "https://cdn.modrinth.com/data/twkfQtEc/versions/er7S98Q1/moonlight-neoforge-1.21.1-3.0.14.jar",
"sha1": "a865d9a00a595038d35b908c42565930189be68a",
"size": 1578765,
"side": "both"
}
],
"defaultServer": {
+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)
}
}
}