Commit Graph

6 Commits

Author SHA1 Message Date
Matt 2710dce479 pack: v0.31.2 — proper item hiding via c:hidden_from_recipe_viewers tag
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>
2026-06-01 19:48:36 +00:00
Matt 0cd43c8f2d pack: v0.31.1 — restore Capsid recipe override (Shattered Carver)
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>
2026-06-01 19:34:33 +00:00
Matt 1b9e35efea pack: v0.31.0 — replace hacks with Item Obliterator
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>
2026-06-01 19:21:41 +00:00
Matt d259695932 pack: v0.30.3 — fully hide Shattered Dimensional Carver
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>
2026-05-30 21:16:08 +00:00
Matt 77d1cef1d0 fuel: tier lava equivalent to crude oil (8000 ticks/bucket)
Without this entry, lava buckets get the vanilla bucket-burn fallback
of 20000 ticks each — which made lava more powerful than refined
TFMG kerosene/naphtha despite being free and trivially obtainable.

Setting lava to 8000 ticks matches crude_oil exactly: both are the
raw entry-tier fuels you can scoop without any infrastructure, and
the player has to commit to a refining setup to unlock the higher
tiers.

Solid fuels (coal, charcoal, blaze rods, etc.) continue to work via
realisticTrains' chest/barrel pathway -- no datapack entry needed.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 20:46:35 +00:00
Matt e84de6c190 pack: v0.29.0 — train fuel requirement + CBC tier-preserving safety
Two related gameplay tweaks:

1. Train fuel requirement (Steam 'n' Rails)
   - Set realisticTrains = true in railways-server.toml.
     Trains now consume fuel from a Fuel Tank (liquid) or solid fuels
     in chests/barrels on the contraption. realisticFuelTanks stays
     true so tanks won't accept water/junk.
   - Ship a datapack bns-fuel/ that defines TFMG fluids as proper
     liquid fuels at tiered burn rates:
       crude_oil    8000 ticks/bucket   (raw, abundant -- entry)
       furnace_gas 12000 ticks/bucket   (cheap by-product)
       naphtha     24000 ticks/bucket   (mid refined)
       kerosene    24000 ticks/bucket   (mid refined)
       gasoline    36000 ticks/bucket   (top refined)
       diesel      48000 ticks/bucket   (top refined, longest)
     Vanilla lava bucket still works via bucket-burn fallback
     (20000 ticks). Tier curve incentivises building a real refinery.

2. CBC tier-preserving cannon safety
   - Revert the nuclear disableAllCannonFailure=true switch shipped
     in v0.28 hotfix -- it killed the bronze/steel/nethersteel tier
     balance because overloaded cannons fired without consequence.
   - Per-lever config that protects against random RNG losses while
     keeping the tier mechanic intact:
       disableAllCannonFailure = false
       squibChance = 0.0              (no random projectile-stuck)
       barrelChargeBurstChance = 0.0  (forgive misplaced charges)
       interruptedIgnitionChance = 0.0 (forgive gapped loads)
       overloadBurstChance = 1.0      (TIER STRICT -- exceed your
                                       cannon's rated propellant
                                       stress = lose the cannon)
       failureExplosionPower = 0.0    (no collateral blast when it
                                       does die from overload)
   - Effect: a cannon built to spec and used within its
     maxSafePropellantStress is immortal. Overloading dies cleanly
     per the material's failureMode, no fortress damage. User error
     (squib/misplace/gap) doesn't destroy expensive builds.

Stress units NOT supported for trains: verified by inspecting Rails
and Create bytecode, nothing consumes SU for train movement. Liquid
fuel is the supported mechanism.

Verified live: server boots clean, port 25565 binds, KubeJS loads
0 errors, Minecraft auto-enables the bns-fuel datapack, Rails
initializes the LiquidFuelManager reload listener.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 20:42:38 +00:00