Create: Tracks+ 1.0.5 (Modrinth slug create-tracks+) adds Trackwork-
style caterpillar/tank tracks to Create contraptions. Fork of qwxon's
original Create:Tracks, the only 1.21.1 NeoForge port. Required deps
(Create, Create Aeronautics, Sable) are all already in the pack.
Use case: tracked vehicles / tanks built with Create — caterpillar
treads for moving contraptions over uneven terrain, military
aesthetic, or just heavy industrial movers.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Pre-wipe consolidation. After this, the seed pick is unblocked.
bnstoolkit 0.4.1 → 0.5.0 — village supply/demand throttle
- 64×64 block tiles each have a finite demand pool per cost item
- Spur-paying trades decrement their tile's pool; pool refills over 1
hour real-time (lazy refresh, no scheduled tick, no perf overhead)
- Saturated trades show vanilla "out of stock" in the UI until the
villager restocks AND the tile's demand has refilled
- ~150 spurs/hour cap per tile in a fully-stocked multi-profession hall
- 50-librarian-hall exploit dies; players who want more income must
build halls in distant tiles (overworld logistics) OR diversify
professions (each item type has its own pool)
- Anyone with /bns admin can inspect a tile's state — full picture
lives in server.persistentData.bnsVillageDemand
New worldgen mods (Modrinth — both NeoForge 1.21.1):
- Structory 1.3.16 — 15 small thematic ruins: chapels, graveyards,
fire-watch towers, abandoned camps, boats, outcast huts
- Structory: Towers 1.0.16 — 21 mid/rare-tier towers: lighthouses,
engineer's tower, ocean pillars, wizard towers, end towers
Density assessment (per earlier audit): pack goes from ~52 to ~88
generating structure types. Towers are mostly rare-tier (40-80 chunk
spacing) so they read as discoveries, not clutter. Loot is in line
with vanilla bastion/mansion tier — finite chest pool that the
diminishing-returns sell shop and village supply system already
balance against.
Pack mods: 102 → 104.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Post-review consolidation PR. All four open issues from the parallel
code/security/hotkey/NPC audits resolved in one ship.
Key user-facing changes:
UI
- Single keybind: B opens a hub screen with buttons to the 5 sub-screens.
- K/J/N/H/M direct shortcuts default to UNBOUND so they no longer
compete with the ~100 other mods. Rebindable in vanilla controls menu.
- M used to clash with vanilla Social Interactions + FTB Chunks
fullscreen map; fully resolved.
NPC dialogue + scripting integration
- New /bns open <screen> command. Easy NPC dialogue COMMAND actions
can now open any bnstoolkit screen on the clicking player.
- FTB Quests reward commands, command blocks, and /trigger objectives
can all route into bnstoolkit screens via the same command.
- config/easy_npc/security.cfg ships with executeAsUserCommandAllowList
.ALL=bns so dialogue-triggered /bns commands actually run.
Bug fix (this is the load-bearing item)
- Bounty board + plot office screens were reading NBT keys that don't
exist in KubeJS, so they always showed "no active bounties" and "all
plots free" no matter what was actually in the world. Fixed by reading
the real per-player keys (bnsBountyPool/Active/Completed) and the
server-scope bnsPlots compound via KubeJS' MinecraftServer mixin
(reflective, no compileOnly dep on KubeJS).
Hardening (no behavior change, defense-in-depth)
- Per-player token bucket on C2S packets (10/s sustain, 20 burst).
- All STRING_UTF8 codec fields capped at sane sizes (≤80 chars).
- Verb whitelist replaced with structured parse + per-verb regex
validation + rebuilt command. No prefix-startsWith surprises.
- Tier-upgrade in-flight guard closes the concurrent-packet
double-spend race window.
- Log lines sanitised to prevent control-char injection.
Plus the nits caught by review:
- Per-player tick counter for HUD push (was a shared static)
- VillagerTradeRebalance try/catch + null-cost-A passthrough +
round-to-nearest denom split (was floor — ~10% silent price haircut)
- SpurHud component cache (was allocating per frame)
- BountyBoardScreen dead branch removed
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The original handoff doc described an empty M0 scaffold with placeholder
screens to "discuss tomorrow". 0.3.1 actually ships the full UI plus
villager trade rebalance, so the doc now is a testing guide for the
working features rather than a discussion-points list.
Includes the architecture diagram for how Java + KubeJS interact, the
key bindings table, a step-by-step testing path, and a known-gaps list
for future iteration.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The previous commit deleted 0.1.1 from the gitignored mods dir but
git swallowed the add for 0.3.1 because pack/overrides/mods is
ignored. Re-adding with -f.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
bnstoolkit jumps from M0 (empty scaffold) straight to feature complete:
UI screens (all FTB Library widgets, opens via keybinds):
K Civic tier ladder + upgrade
J Bounty board (accept/cancel/turn-in)
N Plot office (buy/release)
H Bazaar sell shop (1/16/64 quick-sell)
M Quest log (status overview)
HUD: top-left tier + spurs balance overlay, refreshed 1Hz server-side.
Villager trade rebalance (NEW): the mod now hooks VillagerTradesEvent
+ WandererTradesEvent and swaps every emerald cost/result for the
Numismatics equivalent (1..7 emeralds -> spurs, 8..63 -> bevels, 64+
-> cogs). This was the blocked Modrinth dep — the third-party mod
options either required a NeoForge bump (numismatics-villager-currency
1.1.0 wants 21.1.230+, we're on 21.1.228) or hand-written JSON for
every trade (data-trades). The in-tree wrapper is cleaner.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Surfaces the server-needs-Start state and the fix details up top so
when matt wakes up he doesn't have to scroll past the M1+ planning
to find out the box is down.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
0.1.0 brought the dedicated server down during construct-mods because
the @Mod constructor called NeoForge.EVENT_BUS.register(this) without
any @SubscribeEvent methods on the class — which NeoForge 21.1 treats
as a fatal IllegalArgumentException.
Caught only after live-deploy (gradle build doesn't simulate the
construct-mods step). 0.1.1 removes the bogus register call. The
@SubscribeEvent listeners will come back in M1 alongside the first
real event handler.
Server has been brought down by the crash and is waiting for a manual
start via the web admin panel. The fixed jar is staged in
/srv/fast/brass-sigil-server/server/mods/ already.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Ships the empty bnstoolkit companion mod (0.1.0) into the pack. The mod
loads cleanly on client and server with zero visible surface — it just
proves the deploy pipeline end-to-end so M1-M4 only have to add code,
not figure out tooling.
Per-milestone scope locked in docs/bnstoolkit-discussion-points-2026-06-07.md.
Source: http://10.16.5.102:3000/minecraft/bnstoolkit
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Tomorrow-evening testing guide for the command-driven economy
shipped in PR #67. Covers: what works, how to test each system,
quick reference of every /bns command, what's deferred and why,
recovery steps if anything bricks.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Foundation economy stack — fully command-driven, ready for the custom
UI mod to layer on top later. Built tonight as a single feature batch.
KubeJS scripts:
pack/overrides/kubejs/server_scripts/economy/
00_tier_system.js — 13-tier ladder + admin commands
02_sell_shop.js — /bns sell, 9 items, DR + tier-fee
03_bounty_engine.js — /bns bounty, 20 bounties, state machine
04_player_commands.js — /bns help, /bns me, /bns tier upgrade
plots.js: updated to support multi-plot ownership based on tier slots
- plotsOwnedBy() returns list, slot cap from TIER_PLOT_SLOTS table
- /bns plot release now requires plot id (multiple plots possible)
- /bns plot mine added
FTB Ranks server config:
pack/overrides/world/serverconfig/ftbranks/ranks.snbt
13 ranks with ftbchunks.max_claimed_chunks scaling per tier:
Peasant 9 -> Sovereign 1500 (chunks)
Peasant 1 -> Sovereign 200 (force-loaded)
Name format colour codes match the design doc.
Player command surface (everything callable from chat or Telegram bridge):
/bns help full command listing
/bns me tier, balance, plots, bounties
/bns tier upgrade pay spurs, advance to next tier
/bns plot list|info|buy|release|mine
/bns sell list|<item> [count]
/bns bounty list|active|accept|cancel|turnin|completed
/bns admin tier get|set|list (op level 2)
/bns admin info|waystone-*|reset-welcome (pre-existing)
Tier upgrade flow:
1. Player runs /bns tier upgrade
2. KubeJS takes spurs from inventory
3. KubeJS sets player.persistentData.bnsTier += 1
4. KubeJS runs `ftbranks add <player> <rank>` so FTB Ranks applies
the permission nodes (chunk allowance auto-flips)
Cross-file scope: KubeJS 2101 runs all server_scripts in shared Rhino
global scope. Constants (TIER_CONFIG, COIN_VALUES, bnsTier object,
shared functions like giveCoins/countCoins/takeCoins) are declared
once in their owning file and referenced from siblings. Don't redeclare.
Blocked tonight (deferred):
- Villager trade rebalance: KubeJS 2101.7.2 doesn't ship a
villagerTrades event. ServerEvents only exposes command/loaded/
recipes/registry/tags/tick/unloaded. Verified by grepping the
KubeJS jar's ServerEvents class. No KubeJS-villager-trade addon
on Modrinth for NeoForge 1.21.1. Either build into the custom
mod or add a third-party trade-overrides mod (research pending).
- Custom mod UI screens: no Java toolchain on host, and these
need visual iteration with the user anyway.
Verified live: server boots clean, all 4 economy scripts log loaded,
port 25565 binds, no EcmaError or EvaluatorException in KubeJS log.
FTB Ranks reload via rcon confirms "Ranks reloaded from disk!"
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
KubeJS module that owns the 13-tier civic ladder per economy doc §4a.
Authoritative source for TIER_CONFIG (per-tier perks: cost, wilderness
chunks, plot slots, daily bounty slots, shop fee discount, chat
colour, join broadcast).
Player tier stored as int in player.persistentData.bnsTier; default
1 (Peasant), set on first login.
Admin commands (op level 2):
/bns admin tier get <player>
/bns admin tier set <player> <1-13>
/bns admin tier list
Module-local pattern (KubeJS Rhino runs scripts in strict mode -- no
globalThis, no bare-assignment globals). Other economy scripts will
duplicate TIER_CONFIG and use player.persistentData.bnsTier directly
to read tier rather than trying to import. See feedback-kubejs-rhino-
gotchas memory.
FTB Ranks will mirror this once the bnstoolkit mod ships -- ranks
will carry the FTB Chunks permission nodes. For now the NBT is the
single source of truth and admin promotes manually with /bns admin
tier set.
Verified: server boots clean, KubeJS loads with 0 errors. First-join
hook initialises new players to tier 1.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Mods added (Phase 0a substrate for the bnstoolkit economy work):
- FTB Quests 2101.1.25 (progression quest UI for Phase 5+)
- FTB XMod Compat 21.1.8 (KubeJS hooks for FTB Chunks/Quests events)
- FTB Ranks 2101.1.3 (tier system via permission nodes)
Design revision: restrictive travel.
This is a Create Aeronautics pack — the journey is the point. Removed
all instant-teleport perks from the tier ladder. Players get one
starter Waystone and use it for spawn↔base; further travel means
building airships, trains, vehicles. Pressure on real movement is
intentional.
Removed perks: sethomes, /back after death.
Removed system: the full sethome subsystem (commands, SavedData,
cooldowns) from the bnstoolkit mod scope.
Tier table reduced from 10 columns to 8: cost, wilderness chunks,
plot slots, daily bounties, shop fee, chat colour, join broadcast.
Mod phasing collapsed from 7 phases to 6 (M2 sethome system removed,
later phases shift up).
Future perk dimensions list updated with two waystone-related
candidates (slot cap, XP cost reduction) as the natural travel-
progression hooks for later tier-perk revisions.
Verified live: all 3 mods discovered + loaded, port 25565 binds,
no FATAL/Crashed/Exception lines in startup log. Server resumed
to 0.32.0 cleanly.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
New companion-mod design doc covering:
Architecture
- Purpose & scope (what's in the mod vs what stays in KubeJS)
- High-level diagram showing client/server/KubeJS/FTB-stack roles
- Full Java package layout under uk.sijbers.bnstoolkit
- Six GUI screens specified individually with layouts + network calls
(Quest Log, Bounty Board, Tier Upgrade, Plot Purchase, Shop Browser,
Quest Progress HUD)
- Three mixin targets into FTB Chunks' ChunkScreenPanel (drawBackground,
ChunkButton.addMouseOverText, ChunkButton.onClicked) -- no FTB fork
- Network packet contract (7 S2C + 5 C2S packets, versioned)
- Data persistence model (SavedData for plots + sethomes, in-memory
for death locations, KubeJS for quest state)
- Two config files documented (tiers.json + plots.json) with example
JSON5 schemas
- KubeJS integration surface (8 /bnstoolkit_internal commands)
- Build & release setup (separate Gitea repo, standard NeoForge
ModDevGradle, semver)
- 6 mod implementation phases (M0-M6), each independently shippable
Detailed perk specifications
- Wilderness chunks: FTB Ranks permission node, native FTB Chunks
enforcement, no mod-side work
- Plot slots: SavedData-backed ownership tracking, 50% refund on
release
- Sethomes: full sethome system built in bnstoolkit (no other sethome
mod exists in pack). Per-tier cap, 30s cooldown, /sethome /home
/delhome /listhomes commands
- Daily bounty slots: enforced in KubeJS engine, UI greys Accept when
at cap
- Shop fee discount: base 25% Bazaar fee reduced by tier discount.
Only applies to NPC Bazaar shop, not player-to-player Numismatics.
Worked example showing -25% Sovereign = 0% fee = full 10 spurs/diamond
- Chat colour: full colour ladder per tier (grey to rainbow at
Sovereign with character-by-character cycling)
- Join broadcast: 6 levels documented (none, simple, fancy, epic,
epic+particles, epic+spectacular) with example ASCII
- /back after death: in-memory storage, 60s cooldown, dimension-aware
- Future perk dimensions: 7 candidates the schema supports without
code changes (particle trails, custom join sounds, custom title
prefix, priority bounty access, tier-gated vendors, daily login
bonus, keep-inventory chance)
Six open implementation questions flagged for resolution during
build, none blocking.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Tier ladder extended from 8 -> 13 tiers, with cleaner historical
progression. Replaces the previous Peasant/Citizen/Patron/Notable/
Baron/Noble/Lord/Sovereign ladder which mixed commoner-economic terms
with noble terms.
New 13-tier ladder (Civic + British peerage):
1 Peasant free
2 Farmer 200
3 Citizen 750
4 Merchant 2,500
5 Knight 6,500 (gentry threshold)
6 Baron 15,000 (lowest noble)
7 Viscount 35,000
8 Earl 75,000
9 Marquess 150,000
10 Duke 300,000
11 Archduke 700,000
12 Grand Duke 1,500,000
13 Sovereign 10,000,000 (apex, "finished the game")
Rationale:
- Yeoman -> Farmer, Burgher -> Merchant: both replaced with
recognizable terms while keeping the period feel.
- Earl kept as the British equivalent of Count (Viscount sits below
Earl correctly because Viscount = vice-count).
- Top tier extended above Duke with Archduke -> Grand Duke ->
Sovereign. Avoids singular-feeling Emperor/King/Prince titles.
- Sovereign at 10M is intentionally extreme -- months of dedicated
play to reach, properly mythical.
Full perk table updated to spread cleanly across 13 tiers:
- Plot slots: 0/0/1/1/2/2/3/3/4/5/6/7/10
- Sethomes: 1/1/2/3/4/5/6/8/10/12/16/20/unlimited
- Daily bounties: 3/3/3/4/4/5/5/6/6/7/7/8/10
- Shop fee: 0% down to -25% at Sovereign
- Chat colours: grey -> white -> yellow -> green -> cyan -> blue
-> purple -> gold -> orange -> red -> bright red -> rainbow
Knight (tier 5) is the gentry threshold -- the first meaningful
"I'm somebody" upgrade with colored chat, join broadcast, and /back.
Founder cosmetic flag added for matt (server owner). Permanent chat
prefix [Founder] alongside the normal rank. No gameplay perks; just
identification. Founder still grinds the regular ladder.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Architectural revisions:
- UI approach: custom companion mod (working name 'bnstoolkit') built
on FTB Library's UI framework. Polished GUI screens for Quest Log,
Bounty Board, Tier upgrade, Shop browser, Plot purchase. Quest
progress as a custom HUD render layer (no stacked vanilla bossbars).
All player interaction through GUI + NPC dialogue, no chat commands
to memorise. FTB Library UI chosen for visual consistency with the
rest of the FTB stack already in the pack.
- Tier ladder locked: 8 tiers, Civic theme, starting at Peasant.
Peasant -> Citizen -> Patron -> Notable -> Baron -> Noble -> Lord
-> Sovereign. Replaced Burgess with Baron; reordered ascending.
- Tier perks: full table with chunks claimable, spawn plot slots,
sethome count, daily bounty slots, shop fee, chat colour, join
broadcast tier, /back access. JSON-configured at
config/bnstoolkit/tiers.json, hot-reloadable. Easy to tune any
column without code changes.
- Spawn plots clarified as distinct from wilderness chunk claims:
predefined regions at spawn, purchased individually for spurs,
primary use is shops, slot-limited by tier. Purchase happens
inside the FTB Chunks map UI via custom mod mixin. Plot data
lives in the custom mod, not in FTB Chunks.
- Wilderness chunk claims: tier-allocated, free within allowance,
refused above. NO per-chunk pricing (dropped from v0.2). Powered
by FTB Ranks -> FTB Chunks permission nodes.
- Phasing updated to add Phase 0c (mod scaffolding) and reorder
Phases 1-7 to fit the mod-supplied UI work.
- Implementation notes: KubeJS script layout, custom mod package
layout, state data locations, config file locations all
documented.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Final architecture for the economy + quest system. No more V1/V2/V3
iteration cycles. Resolved against actual mod source code and verified
APIs via research spike.
Key decisions locked:
- Bounty UI: custom (bossbar + /quests commands + Easy NPC dialog).
NOT FTB Quests -- it lacks per-player visibility, has no abandon
event, and cooldown is per-team. Confirmed via FTBQ source review.
- Progression UI: FTB Quests (right tool for long-form content where
per-team cooldowns and one-shot rewards are fine).
- Numismatics: direct Java.loadClass access (no events shipped, no
KubeJS bindings). Documented exact API surface and call patterns.
- FTB Chunks claim cost: FTBChunksEvents.before('claim') with
event.setResult() to refuse. Requires adding FTB XMod Compat.
- Tier system: FTB Ranks (CurseForge only) + permission-driven chunk
limits + KubeJS-mediated upgrades via runCommandSilent('ftbranks add').
- Per-player HUD: bossbars, not scoreboards. Vanilla scoreboards are
global; bossbars natively per-player.
- Custom mod for V1: NOT NEEDED. Re-evaluate if blocked.
Mods to add in Phase 0a (one PR before any implementation):
- FTB Quests 2101.1.25
- FTB XMod Compat (latest)
- FTB Ranks 2101.1.3
Phasing updated: Phase 0a (mod additions) blocks the rest. Phase 0b
(spawn build) is non-blocking and user-paced; all systems can be
built and verified before spawn exists.
KubeJS file layout documented for clean implementation:
pack/overrides/kubejs/server_scripts/economy/{01..99}_*.js
11 open decisions resolved. 3 remain non-blocking.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Three-layer visibility plan:
V1 (Phase 3): /quests, /quests info, /quests cancel commands.
Mobile-friendly via the bridge, no extra mods.
V2 (Phase 3.5): Quest Log book item with dynamic pages.
V3 (later): optional sidebar HUD via vanilla scoreboards.
3-slot active-quest cap so cancellation is a real choice:
- Prevents accept-all-then-cancel-easy-ones RNG shopping
- Keeps state files small
- READY frees the slot so turn-in backlogs are workable
State storage schema documented (active + completed/cooldown).
Phase 3.5 added to the roadmap for the book item.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Full design for the unified spawn economy:
- Seven themed guild buildings (Adventurer's, Merchant's, Civic,
Library, Tavern, Foundry, Mint)
- Universal accept → complete → return quest pattern
- Villagers moved fully to spurs with rebalance principles +
initial price guidance
- Money flow architecture (bounded inflows, scaling sinks)
- Phasing plan (8 phases, each independently shippable)
- Mod stack confirmed (we have everything we need for V1)
- Risk register + open decisions to make before implementation
Status: design, not yet implemented. Phase 0 (spawn skeleton)
is the next concrete deliverable.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Stop hacking around the problem -- use the standard cross-recipe-
viewer hide convention that both NeoForge and JEI define.
Source-level confirmation:
mezz/JustEnoughItems @ 1.21.1
CommonApi/.../api/constants/Tags.java
HIDDEN_FROM_RECIPE_VIEWERS = c:hidden_from_recipe_viewers
Library/.../ingredients/IngredientVisibility.java
isIngredientVisible() calls
ingredientHelper.isHiddenFromRecipeViewersByTags(typedIngredient)
-> any item carrying this tag is hidden from JEI.
neoforged/NeoForge @ 1.21.x
common/Tags.java
Tags.Items.HIDDEN_FROM_RECIPE_VIEWERS = c:hidden_from_recipe_viewers
-> same tag, NeoForge agrees with JEI.
EMI / REI also respect this tag (common convention).
So the proper modpack-shippable fix is a single datapack file:
pack/overrides/world/datapacks/bns-fuel/data/c/tags/item/
hidden_from_recipe_viewers.json
{
"replace": false,
"values": [
"alexsmobs:shattered_dimensional_carver",
"alexsmobs:transmutation_table"
]
}
No mod, no KubeJS, no CraftTweaker, no Item Obliterator JEI integration
(which doesn't exist for 1.21.1 NeoForge anyway). Just the tag the
recipe-viewer ecosystem agreed on years ago.
Item Obliterator + Necronomicon stay in the pack for what they actually
deliver on 1.21.1: inventory-pickup block + villager-trade removal +
right-click cancellation. The Capsid recipe override stays too as the
creation block.
The full disable stack now:
- Tag (this commit) -> Hidden from JEI / REI / EMI
- Datapack capsid recipe -> Can't be created in-world
- Item Obliterator -> Can't be picked up / right-clicked
if obtained via /give or creative
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
I removed this datapack override in v0.31.0 on the (incorrect)
assumption that Item Obliterator would also handle Alex's Mobs'
custom capsid_recipes recipe type. It doesn't -- Item Obliterator
intercepts vanilla and some common modded recipes, but the Capsid
uses its own SimpleJsonResourceReloadListener bound to the
"capsid_recipes" folder, and that listener still loaded the
default shipped recipe.
The visible bug: a player could put a regular Dimensional Carver
into a Capsid -- the recipe matched, the Dimensional Carver was
consumed, and the Capsid spat out a Shattered Dimensional Carver.
Item Obliterator then refused the pickup. Net result:
- Player loses their hard-earned regular Carver
- Player can never pick up the Shattered one
- World has an unrecoverable floating item entity
Restore the override at:
pack/overrides/world/datapacks/bns-fuel/data/alexsmobs/
capsid_recipes/shattered_dimensional_carver.json
This swaps the recipe's input from `alexsmobs:dimensional_carver` to
`minecraft:barrier`, which is unobtainable in survival. The recipe
loads cleanly but can never match. The Capsid transformation for
the Shattered Carver effectively no longer exists.
Item Obliterator still handles the JEI / creative tab / inventory /
trade removal -- both layers complement each other.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Replace the v0.30.x ad-hoc disable mechanisms (KubeJS server script,
datapack recipe override, KubeJS client-side JEI hide -- which was
broken on this KubeJS build) with a single proper tool:
- **Item Obliterator 2.3.0** + dep **Necronomicon API 1.6.0**
Declarative JSON config to remove items from inventories,
creative tabs, all recipes (including modded custom recipe
types), villager trades, and JEI. Exactly the missing capability.
Config: pack/overrides/defaultconfigs/item_obliterator.json5
Blacklists:
alexsmobs:transmutation_table
alexsmobs:shattered_dimensional_carver
Removed (no longer needed):
- pack/overrides/kubejs/server_scripts/disable_alexsmobs_features.js
(Item Obliterator handles transmutation_table recipe removal
and right-click cancel automatically)
- pack/overrides/world/datapacks/bns-fuel/data/alexsmobs/
capsid_recipes/shattered_dimensional_carver.json
(Item Obliterator handles modded recipe removal too)
Both items now correctly:
- Don't appear in JEI search / item list
- Don't appear in creative tabs
- Have no working recipe path
- Can't be right-clicked / used
- Get scrubbed from inventories on join
The Void Worm boss + regular Dimensional Carver still work --
nothing else in Alex's Mobs is affected.
Verified live: both mods discovered, Necronomicon read our config
file successfully ("File exists, reading config"), Item Obliterator
loaded with the blacklist.
Note: config schema is v2; v1 configs get overwritten by the mod's
default. Always write configVersion: 2.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The hide_disabled_items.js client script I added in v0.30.3 used
`JEIEvents.hideItems(...)` -- a namespace that does NOT exist in
KubeJS 2101.7.2 on NeoForge 1.21.1. There is no kubejs-jei bridge
mod for 1.21.1 NeoForge published on Modrinth at this time.
Client launchers were showing:
KubeJS client script errors
hide_disabled_items.js#8
ReferenceError: \"JEIEvents\" is not defined.
Removing the script entirely. The Shattered Dimensional Carver
still:
- Cannot be produced (Capsid recipe override with barrier input)
- Does nothing on use (server-side right-click cancel)
Tradeoff: the item will still appear as a recipe-less entry in JEI
search if players type its name. Cosmetic only; no gameplay path
to obtain or use it.
If a JEI-hide approach becomes available in a future KubeJS update
or via a new bridge mod, we can revisit.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Replaces v0.30.2's right-click intercept with two cleaner layers:
1. Datapack override of the Capsid recipe
pack/overrides/world/datapacks/bns-fuel/data/alexsmobs/
capsid_recipes/shattered_dimensional_carver.json
Changes the input from `alexsmobs:dimensional_carver` to
`minecraft:barrier`, which players cannot obtain in survival.
The recipe loads cleanly but never matches, so the item is
never produced through normal play.
2. Client-side KubeJS JEI hide
pack/overrides/kubejs/client_scripts/hide_disabled_items.js
Hides `alexsmobs:shattered_dimensional_carver` from JEI search
and the item list, so it doesn't appear as a recipe-less ghost.
The right-click intercept in server_scripts/disable_alexsmobs_features.js
stays in place as a safety net for /give cases. Transmutation Table
recipe removal also stays as-is.
Net effect: the Shattered Dimensional Carver effectively does not
exist on this server. Void Worm fight + regular Dimensional Carver
return-home item both stay intact.
Verified live: pack synced to 0.30.3, Alex's Mobs registered its
capsid_recipes datapack listener (which reads our override file).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
KubeJS server script that:
1. Removes the crafting recipe for alexsmobs:transmutation_table.
The Transmutation Table converts items freely with XP cost,
which competes with Ars Nouveau's depth and undermines the
Numismatics-based plot economy. No new tables can be made;
no existing tables exist on the world yet.
2. Cancels the right-click action on
alexsmobs:shattered_dimensional_carver. The item teleports the
user 1,000,000 blocks in a random direction -- breaks any
server-side world-boundary assumption, drops the player into
unloaded chunks far from the rest of the world. The item can
still be produced (the Capsid-shatters-Carver interaction is
a block reaction, not a recipe we can remove cleanly), but it
does nothing on use and sends an explanation to the player.
The Void Worm boss + regular Dimensional Carver (return-home
teleport) stay enabled. Players can still fight the boss and earn
the home-recall item, just not the world-bounding-breaking variant.
Verified live: KubeJS loaded script in 3ms, removed recipe at
recipe-event time, server bound to 25565.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Client launcher reported on startup:
Mod improved_village_placement requires lithostitched 1.4 or above
Currently, lithostitched is not installed
Cause: lithostitched was flagged side=server in pack.lock and the
live manifest, so the client launcher skipped it during sync. But
Improved Village Placement (added in v0.29.1) declares lithostitched
as a runtime dependency and IVP itself is side=both, so the client
loaded IVP and then failed the dep check.
Lithostitched is a worldgen library — many mods that use it need it
on both sides (client renders modded structures using its hooks).
Flipping to side=both is the safer default for any library mod.
The other server-side flagged entries (Yung's Better X, noisium,
async-locator, servercore) are genuinely server-only and stay as-is.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>