From 35cbd84146ea33277768b7363a30bfd7852eebcd Mon Sep 17 00:00:00 2001 From: Matt Date: Mon, 8 Jun 2026 17:20:09 +0000 Subject: [PATCH] =?UTF-8?q?pack:=20v0.40.0=20=E2=80=94=20drop=20Alex's=20M?= =?UTF-8?q?obs=20+=20bounty=20board=20fix=20+=20Numismatics=20polish?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Drops Alex's Mobs from the pack (105 -> 103 mods total). The 4 AM-mob bounty entries are replaced with vanilla 1.21.x mob bounties (Breeze, Bogged, Evoker, Vindicator, Piglin Brute, Ravager). Bounty board bug fix: KubeJS PlayerEvents.loggedIn now ensures the daily pool is rolled on first login. Previously the pool only rolled when a player ran /bns bounty list, so the bounty board screen showed empty for anyone who'd never typed that command. /bns tier upgrade now uses combined cash+bank deduction via NumismaticsBridge.spend (Java). Players who've sold a fortune into their bank can now spend it on tier upgrades directly. Every player gets a bound white_card on first login — no more "I need to craft + bind a card before I can spend at a Vendor block" friction. bnstoolkit 0.6.2 -> 0.7.0. Co-Authored-By: Claude Opus 4.7 --- .../economy/03_bounty_engine.js | 24 +++++++++++++----- .../economy/04_player_commands.js | 19 +++++++------- ...toolkit-0.6.2.jar => bnstoolkit-0.7.0.jar} | Bin 126004 -> 128157 bytes pack/pack.lock.json | 15 ++--------- 4 files changed, 30 insertions(+), 28 deletions(-) rename pack/overrides/mods/{bnstoolkit-0.6.2.jar => bnstoolkit-0.7.0.jar} (85%) diff --git a/pack/overrides/kubejs/server_scripts/economy/03_bounty_engine.js b/pack/overrides/kubejs/server_scripts/economy/03_bounty_engine.js index e29fb43..625ca63 100644 --- a/pack/overrides/kubejs/server_scripts/economy/03_bounty_engine.js +++ b/pack/overrides/kubejs/server_scripts/economy/03_bounty_engine.js @@ -59,12 +59,14 @@ const BOUNTY_POOL = [ { id: 'b_wither_skel_3', name: 'Slay 3 Wither Skeletons', target: 'minecraft:wither_skeleton', count: 3, type: 'kill', reward: 150, source: "Adventurer's Guild" }, { id: 'b_shulker_3', name: 'Slay 3 Shulkers', target: 'minecraft:shulker', count: 3, type: 'kill', reward: 200, source: "Adventurer's Guild" }, - // ── Boss tier (rare picks) ── - { id: 'b_warden_1', name: 'Slay the Warden', target: 'minecraft:warden', count: 1, type: 'kill', reward: 800, source: "Adventurer's Guild" }, - { id: 'b_voidworm_1', name: 'Destroy a Void Worm', target: 'alexsmobs:void_worm', count: 1, type: 'kill', reward: 1200, source: "Adventurer's Guild" }, - { id: 'b_warped_mosco_1', name: 'Slay a Warped Mosco', target: 'alexsmobs:warped_mosco', count: 1, type: 'kill', reward: 700, source: "Adventurer's Guild" }, - { id: 'b_farseer_1', name: 'Slay the Farseer', target: 'alexsmobs:farseer', count: 1, type: 'kill', reward: 900, source: "Adventurer's Guild" }, - { id: 'b_skreecher_1', name: 'Slay a Skreecher', target: 'alexsmobs:skreecher', count: 1, type: 'kill', reward: 400, source: "Adventurer's Guild" }, + // ── Boss tier (rare picks) — all vanilla 1.21.x ── + { id: 'b_warden_1', name: 'Slay the Warden', target: 'minecraft:warden', count: 1, type: 'kill', reward: 800, source: "Adventurer's Guild" }, + { id: 'b_breeze_3', name: 'Hunt 3 Breezes', target: 'minecraft:breeze', count: 3, type: 'kill', reward: 250, source: "Adventurer's Guild" }, + { id: 'b_bogged_5', name: 'Slay 5 Bogged', target: 'minecraft:bogged', count: 5, type: 'kill', reward: 120, source: "Adventurer's Guild" }, + { id: 'b_evoker_2', name: 'Slay 2 Evokers', target: 'minecraft:evoker', count: 2, type: 'kill', reward: 350, source: "Adventurer's Guild" }, + { id: 'b_vindicator_4', name: 'Slay 4 Vindicators', target: 'minecraft:vindicator', count: 4, type: 'kill', reward: 180, source: "Adventurer's Guild" }, + { id: 'b_piglin_brute_2', name: 'Slay 2 Piglin Brutes', target: 'minecraft:piglin_brute', count: 2, type: 'kill', reward: 400, source: "Adventurer's Guild" }, + { id: 'b_ravager_1', name: 'Hunt down a Ravager', target: 'minecraft:ravager', count: 1, type: 'kill', reward: 500, source: "Adventurer's Guild" }, ]; // Index pool by id for O(1) lookup @@ -344,4 +346,14 @@ ServerEvents.commandRegistry(event => { event.register(bountyCmd); }); +// ─── First-login pool roll ───────────────────────────────────────── +// Without this, new players see an empty Bounty Board until they type +// /bns bounty list (which triggers ensurePoolFresh). The board reads +// bnsBountyPool from NBT; bnsBountyPool stays empty until rollDailyPool +// runs. This hook closes the gap so the screen is populated the first +// time it's opened. +PlayerEvents.loggedIn(event => { + ensurePoolFresh(event.player); +}); + console.info('[bns/bounty_engine] loaded — ' + BOUNTY_POOL.length + ' bounties in catalogue'); diff --git a/pack/overrides/kubejs/server_scripts/economy/04_player_commands.js b/pack/overrides/kubejs/server_scripts/economy/04_player_commands.js index 1d5afd8..86b9c5d 100644 --- a/pack/overrides/kubejs/server_scripts/economy/04_player_commands.js +++ b/pack/overrides/kubejs/server_scripts/economy/04_player_commands.js @@ -109,19 +109,20 @@ ServerEvents.commandRegistry(event => { } const nextTier = cur + 1; const nextCfg = bnsTier.config(nextTier); - const balance = countCoins(player); - if (balance < nextCfg.cost) { + + // Combined cash+bank deduction via bnstoolkit Java bridge. + // Pulls inventory coins first, then bank for the remainder. + const Bridge = Java.loadClass('uk.sijbers.bnstoolkit.economy.NumismaticsBridge'); + const ok = Bridge.spend(player, nextCfg.cost); + if (!ok) { + const cash = countCoins(player); + const bank = Bridge.balanceOf(player); player.tell(Text.red( - 'Upgrade to ' + nextCfg.name + ' costs ' + nextCfg.cost + ' spurs. You have ' + balance + '.' + 'Upgrade to ' + nextCfg.name + ' costs ' + nextCfg.cost + ' spurs. ' + + 'You have ' + cash + ' cash + ' + bank + ' bank = ' + (cash + bank) + ' total.' )); return 0; } - const took = takeCoins(player, nextCfg.cost); - if (took < nextCfg.cost) { - giveCoins(player, took); - player.tell(Text.red('Coin removal failed — refunded. Try again.')); - return 0; - } // Promote via FTB Ranks const rankId = TIER_RANK_ID[nextTier]; Utils.server.runCommandSilent('ftbranks add ' + player.username + ' ' + rankId); diff --git a/pack/overrides/mods/bnstoolkit-0.6.2.jar b/pack/overrides/mods/bnstoolkit-0.7.0.jar similarity index 85% rename from pack/overrides/mods/bnstoolkit-0.6.2.jar rename to pack/overrides/mods/bnstoolkit-0.7.0.jar index 4fe9e3c7161ed07b99e09f8239e492144a738a23..3207bb1151e8892b9b46f151685313f2f0a5e47f 100644 GIT binary patch delta 11007 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 E7Yem9-2eap diff --git a/pack/pack.lock.json b/pack/pack.lock.json index f534e5a..af4fbaa 100644 --- a/pack/pack.lock.json +++ b/pack/pack.lock.json @@ -1,13 +1,13 @@ { "$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.39.2", + "version": "0.40.0", "minecraft": "1.21.1", "loader": { "type": "neoforge", "version": "21.1.228" }, - "lockedAt": "2026-06-08T16:19:08Z", + "lockedAt": "2026-06-08T17:18:54Z", "mods": [ { "source": "modrinth", @@ -1054,17 +1054,6 @@ "size": 193381, "side": "both" }, - { - "source": "modrinth", - "slug": "alexs-mobs(1.21.1)", - "versionId": "KSgki4uc", - "version": "1.22.17", - "path": "mods/alexsmobs-1.22.17.jar", - "url": "https://cdn.modrinth.com/data/EmNhnNnt/versions/KSgki4uc/alexsmobs-1.22.17.jar", - "sha1": "5070e8070f60650d773bfd9f1d031496f8f50259", - "size": 26620546, - "side": "both" - }, { "source": "modrinth", "slug": "item-obliterator", -- 2.52.0