pack: economy MVP -- Numismatics + Patchouli + welcome flow, bump to 0.18.0
Adds the currency layer and the first-join experience.
Mods:
- Create: Numismatics 1.0.20 (currency, vendor blocks, piggy banks)
- Patchouli 1.21.1-93 (kept in pack for future rich manual book)
KubeJS scripts (server_scripts/):
- economy_policy.js remove ALL Waystones recipes; remove coin recipes
only (piggy banks etc. stay craftable for now)
- welcome.js first-login grant: 1 waystone + vanilla written-book
"Brass & Sigil Manual v1" (5 pages: welcome,
waystones, money, spawn plots, rules). Per-player
flag bnsWelcomeGranted in persistentData gates it.
KubeJS scripts (client_scripts/):
- jei_hides.js hide all Waystones items + 4 coin denominations from
the JEI ingredient list. Combined with the recipe
removal players never encounter these items via
normal play -- only via the welcome grant or the
bank exchange.
The written-book manual is the MVP placeholder. When more content lands
(plot system, dynamic exchange, etc.) it'll be replaced by a proper
Patchouli book authored as a tweak jar -- Patchouli's already in the
lockfile so no mod-add will be needed at that point.
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
// Brass & Sigil — JEI hides
|
||||
//
|
||||
// Hides all Waystones items + all Numismatics coin items from the JEI
|
||||
// item list. Combined with the server-side recipe removal in
|
||||
// economy_policy.js, players don't see crafting recipes OR the item
|
||||
// icons in the JEI ingredient list -- they only ever encounter these
|
||||
// items through the welcome grant or the bank exchange.
|
||||
|
||||
const COLORS = [
|
||||
'white', 'orange', 'magenta', 'light_blue', 'yellow', 'lime',
|
||||
'pink', 'gray', 'light_gray', 'cyan', 'purple', 'blue',
|
||||
'brown', 'green', 'red', 'black',
|
||||
];
|
||||
|
||||
const WAYSTONE_ITEMS = [
|
||||
// regular waystone variants
|
||||
'waystones:waystone',
|
||||
'waystones:mossy_waystone',
|
||||
'waystones:sandy_waystone',
|
||||
'waystones:blackstone_waystone',
|
||||
'waystones:deepslate_waystone',
|
||||
'waystones:end_stone_waystone',
|
||||
// handheld + plate
|
||||
'waystones:warp_stone',
|
||||
'waystones:warp_scroll',
|
||||
'waystones:bound_scroll',
|
||||
'waystones:return_scroll',
|
||||
'waystones:warp_plate',
|
||||
// sharestones (16 colors) + shards
|
||||
'waystones:sharestone', // base id if registered
|
||||
];
|
||||
COLORS.forEach(c => {
|
||||
WAYSTONE_ITEMS.push(`waystones:${c}_sharestone`);
|
||||
WAYSTONE_ITEMS.push(`waystones:${c}_portstone`);
|
||||
});
|
||||
|
||||
const COIN_ITEMS = [
|
||||
'numismatics:spur',
|
||||
'numismatics:bevel',
|
||||
'numismatics:sundial',
|
||||
'numismatics:sun',
|
||||
];
|
||||
|
||||
JEIEvents.hideItems(event => {
|
||||
[...WAYSTONE_ITEMS, ...COIN_ITEMS].forEach(id => {
|
||||
try { event.hide(id); } catch (e) {
|
||||
// Some IDs may not exist (e.g. base 'waystones:sharestone' isn't
|
||||
// registered if only colored variants are). Swallow per-item
|
||||
// failures so one bad id doesn't break the whole pass.
|
||||
}
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user