Commit Graph

14 Commits

Author SHA1 Message Date
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 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
Matt d24f7f03a3 kubejs: drop jei_hides.js (wrong API binding), 0.21.1 -> 0.21.2
Two consecutive client_scripts errors traced to jei_hides.js:
1. Array-spread syntax not supported by Rhino (fixed in 0.21.1)
2. JEIEvents global is not defined in KubeJS 2101.7 -- the actual JEI
   event API uses classes like JEIRemoveEntriesKubeEvent but the binding
   name is something different we haven't identified yet.

Rather than ship more guesses, drop the script entirely. Functional
impact is minimal: recipes for waystones + coins are still removed
server-side (recipes_waystones.js, recipes_numismatics.js), so players
cannot craft these items even if they appear in JEI search. The only
loss is some JEI clutter.

When we identify the correct JEI hide API in KubeJS 2101.x, can add
back as kubejs/client_scripts/jei_hides.js with the right binding.
2026-05-23 16:22:01 +00:00
Matt d5fd2c97e9 jei_hides: use .concat instead of array-spread (Rhino compat). 0.21.0 -> 0.21.1.
KubeJS uses Rhino as its JS engine, which doesn't support array-spread
syntax (`[...a, ...b]`). The line `[...WAYSTONE_ITEMS, ...COIN_ITEMS]
.forEach(...)` threw EvaluatorException: syntax error at jei_hides.js:46
on client launch, surfacing the KubeJS client script errors dialog.

Fix: use Array.prototype.concat() which is universal JS. Also extracted
the hide-quietly helper into a named function for readability.
2026-05-23 16:18:50 +00:00
Matt 6264785f2c plots: v1 spawn-commercial-plots system, bump to 0.21.0
/bns plot list|info|buy|release|reload. Single ~316-line file with
clear sections. Hardcoded PLOT_DEFS Map (3 example plots), ownership
state in server.persistentData.bnsPlots, best-effort Numismatics +
FTB Chunks integration (will be verified in playtest). See file
header for full design notes.
2026-05-23 16:01:47 +00:00
Matt aa881bfc65 bns_admin: drop INTEGER range args (KubeJS wrapper doesn't expose them), validate in handler instead. 0.20.0 -> 0.20.1. 2026-05-23 15:41:34 +00:00
Matt c699dcc77b pack: KubeJS tidying + admin commands, bump to 0.20.0
Tidying pass on the KubeJS suite before plot system V1 lands. Sets up
the file structure + conventions + diagnostics so the larger plot
system has a clean foundation.

Changes:

1. NEW kubejs/README.md
   File layout doc + conventions: logging prefix [bns/<module>],
   persistent-data key naming (bns* prefix), one concern per file,
   performance discipline (O(1) lookups, no polling).

2. Split economy_policy.js -> recipes_waystones.js + recipes_numismatics.js
   Single-concern files. recipes_waystones removes ALL waystones
   crafting (welcome.js distributes the only allowed waystone instead).
   recipes_numismatics removes the 5 coin-denomination crafts.

3. NEW kubejs/server_scripts/bns_admin.js
   /bns admin subcommands for OP diagnostics:
     - info                       calling player's flags+counts
     - waystone-count <player>    read stored count
     - waystone-set <player> <n>  override stored count
     - reset-welcome <player>     clear bnsWelcomeGranted -- replays
                                  the welcome grant on next login
   Registered via ServerEvents.commandRegistry with Brigadier tree,
   permission level 2 (OP). No performance cost (operator-triggered only).

4. Logging added to waystones_policy.js + welcome.js
   Every action prints `[bns/<module>] ...` so server logs can be
   filtered with `journalctl ... | grep '\[bns/'`.

Performance discipline applied:
- All event-handler lookups use Set.has (O(1)), not Array.includes
- No periodic tick polling anywhere
- No network calls in event handlers
- console.info is cheap (no string format unless logged)

Bumps to 0.20.0. Plot system V1 follows in v0.21.x as a separate
multi-file submodule under server_scripts/plots/.
2026-05-23 15:39:59 +00:00
Matt 3e1f5c01ed cc: plastic-everywhere + advanced-contains-basic upgrade chains
Two design changes:

1) Every electronic CC item now requires tfmg:plastic_sheet. Plastic is
   the electrical insulator and gates ALL CC tech behind TFMG's full
   oil chain (crude oil -> naphtha -> distillation -> molten plastic
   -> sheet). Even cable -- you can't lay wires without insulation.

2) Advanced items now embed their Basic counterpart in the recipe:
   - computer_advanced  contains  computer_normal
   - monitor_advanced   contains  monitor_normal
   - wireless_modem_advanced  contains  wireless_modem_normal
   - pocket_computer_advanced contains pocket_computer_normal
   - turtle_advanced    contains  computer_advanced  (which contains
                                  computer_normal -- chained upgrade)

   This makes the progression literal -- you can't skip Basic to make
   Advanced. You upgrade through, paying both costs.

Other tweaks:
- Replaced create:railway_casing with create:industrial_iron_block in
  the Advanced Computer recipe. Railway casing is thematically tied to
  trains, not computing -- creates a weird "build trains to make a
  computer" dependency. industrial_iron_block fits the server-rack
  aesthetic and is a more general Create tier-3 material.
- Added plastic to disk_drive, wired_modem, printer, redstone_relay,
  speaker (recipes that previously skipped it).

Bumps to 0.19.3.
2026-05-23 15:20:20 +00:00
Matt ce8304d6cb cc: drop orphan pocket_computer_colour recipe (not a real item, just a state variant of _advanced). Removes startup warning. 0.19.1 -> 0.19.2. 2026-05-23 15:12:12 +00:00
Matt add5803191 pack: full CC recipe overhaul — 19 items across 5 progression tiers
Expands the v0.19.0 recipe set from 10 to 19 items and builds a deliberate
5-tier progression using richer Create + TFMG materials.

Newly overhauled items:
  T1 - cable (8-output, copper_wire-heavy so bulk-laying is viable)
  T3 - redstone_relay
  T3 - turtle_normal
  T4 - turtle_advanced
  T5 - pocket_computer_normal, _advanced, _colour
  Misc - wired_modem_full (block form, derived from wired_modem)

Existing items reworked with better thematic materials:
  computer_normal/advanced  -> now uses create:brass_casing / railway_casing
                                as the chassis instead of bare plastic
  monitor_normal/advanced   -> nixie_tube for the retro CRT, display_link
                                for the advanced data-binding monitor
  wireless_modem_normal     -> tfmg:electromagnetic_coil is the antenna,
                                copper_wire + aluminum_wire signal lines
  wireless_modem_advanced   -> constantan_spool + large_coil for high-Q
                                tuning -- properly end-game wireless
  disk_drive                -> create:cogwheel for the spinning read head
  speaker / printer         -> copper_sheet / cogwheel for thematic flair

Wire usage is the through-line: copper_wire in T1-T2 (cheap, used in
quantity), aluminum_wire in T3 mid-tier signal lines, constantan_wire
+ constantan_spool in T4 for high-frequency wireless. TFMG's electrical
production now genuinely gates CC progression.

Bumps pack to 0.19.1 (point release — same mod set, expanded scripts).
2026-05-23 15:11:11 +00:00
Matt fe5b7ce1ea pack: add Easy NPC + CC: Tweaked + recipe overhaul, bump to 0.19.0
Mods (5 additions):
- Easy NPC 6.16.1 (3 jars: bundle + core + config_ui). Lightweight,
  config-UI-driven NPC mod -- 817k downloads, NOT the heavyweight
  Custom NPCs by Noppes which has no 1.21.1 NeoForge port. Players
  will interact with NPCs at spawn (Plot Office land clerk + future
  shop NPCs) via right-click -> dialogue.
- CC: Tweaked 1.119.0. ComputerCraft tier added for technical displays,
  server stats, and player-built automation. Future plot-system V2
  could use CC monitors as the central kiosk with touch buttons; V1
  uses NPC + signs.
- Computer Craft: ReCreated v1.2 (resource pack, client-only). Styles
  CC's computers + monitors with a brass/wooden Create aesthetic so
  they don't look out of place in the pack.

KubeJS scripts:
- cc_recipes.js: Overhauls 10 CC crafting recipes to require Create
  (electron_tube, precision_mechanism, rose_quartz) + TFMG (plastic
  sheet, steel ingot, silicon ingot). Gates the tech tier behind
  Create+industrial progression. Recipes for cables, peripheral
  blocks, turtles, etc. left at default -- can iterate later.

Plot system V1 deferred to v0.20.0 -- needs its own focused effort
because of the FTB Chunks claim-transfer integration + Numismatics
inventory coin handling. Memory plan already covers the design.
2026-05-23 14:59:55 +00:00
Matt 01e1e4a502 pack: correct Numismatics coin IDs (5 denominations, not 4)
The 0.18.0 economy_policy.js named 'numismatics:sundial' which doesn't
exist -- the real registry IDs are spur, bevel, cog, crown, sun. The
KubeJS warning surfaced this at startup:

  Failed to read ingredient from numismatics:sundial:
  Item with ID numismatics:sundial does not exist!

Updates both economy_policy.js (recipe removal) and jei_hides.js (JEI
hide) to use the correct 5-denomination list. Bumps to 0.18.1.
2026-05-23 14:18:11 +00:00
Matt 2ac4b2f2cd 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.
2026-05-23 14:16:45 +00:00
Matt b064a9f515 pack: KubeJS Waystones policy (1-per-player + ban share/portstones)
Adds pack/overrides/kubejs/server_scripts/waystones_policy.js which:

- Caps regular waystones at 1 per player. Per-player count is stored in
  player.persistentData and decremented on break (works correctly because
  restrictedWaystones = ["PLAYER"] means only owners can break).
- Bans all 16 sharestone variants. They defeat the "build transport"
  intent (solo pair-teleport) and can be placed just outside a claim
  for stealth proximity access.
- Bans all 16 portstone variants pending separate design review.
- Leaves warp plates and warp scrolls untouched.

Bumps to 0.17.0 so launcher re-syncs.
2026-05-23 13:40:29 +00:00