Compare commits

..

11 Commits

Author SHA1 Message Date
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 7eb70bfa78 Merge pull request 'Full CC recipe overhaul (19 items, 5 tiers)' (#18) from feature/cc-recipes-full into main 2026-05-23 15:11:11 +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 e74f123896 Merge pull request 'v0.19.0: Easy NPC + CC: Tweaked + recipe overhaul' (#17) from feature/v0.19.0-npc-cc-plots into main 2026-05-23 14:59:55 +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 d3a9d4e12a Merge pull request 'Fix Numismatics coin IDs (5 denominations)' (#16) from fix/numismatics-coin-ids into main 2026-05-23 14:18:12 +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 e53b4cc868 Merge pull request 'Economy MVP: Numismatics+Patchouli+welcome flow' (#15) from feature/economy-mvp into main 2026-05-23 14:16:45 +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 d60c0176dd Merge pull request 'Waystones policy KubeJS (1/player + ban share/portstones)' (#14) from feature/waystones-policy-kubejs into main 2026-05-23 13:40:30 +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
6 changed files with 585 additions and 1 deletions
@@ -0,0 +1,53 @@
// 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:cog',
'numismatics:crown',
'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.
}
});
});
@@ -0,0 +1,282 @@
// Brass & Sigil — ComputerCraft recipe overhaul (full coverage)
//
// Replaces every craftable CC: Tweaked recipe with a Create + TFMG -gated
// version. Designed as a 5-tier progression that maps onto pack-wide
// industrial advancement:
//
// T1 - Cabling: copper_wire + andesite_casing. Mid-game accessible.
// T2 - Basic CC: brass_casing, electron_tube, precision_mechanism,
// nixie_tube, plastic + steel. Players need Create's tier-2
// production set and TFMG's coke oven + distillation tower.
// T3 - Networking + Robotics: electromagnetic_coil (TFMG late) +
// mechanical_arm/bearing/gantry_shaft (Create kinetic), plus
// constantan_wire (TFMG mid-late metal).
// T4 - Advanced computing: silicon_ingot (TFMG electrolysis chain =
// late game), rose_quartz, display_link, railway_casing, gold.
// T5 - Mobile: pocket computers, miniaturised forms of T2/T4.
//
// Wires are deliberately the connective thread: copper_wire shows up
// EVERYWHERE in early recipes (cables, modems), aluminum_wire is mid,
// constantan_wire is high-tier. TFMG's electrical production becomes
// genuinely useful for CC progression.
ServerEvents.recipes(event => {
// ─── T1 - CABLING ──────────────────────────────────────────────────
// Cable: 8-output craft to make laying networks viable. Heavy
// copper_wire usage so players bulk-produce wire to support CC.
event.remove({ output: 'computercraft:cable' });
event.shaped(Item.of('computercraft:cable', 8), [
'WWW',
'CRC',
'WWW',
], {
W: 'tfmg:copper_wire',
C: 'create:andesite_casing',
R: 'minecraft:redstone',
});
// ─── T2 - BASIC COMPUTING ──────────────────────────────────────────
// Computer (Basic): brass_casing core (the "industrial computer"
// chassis), electron_tube above/below (the retro CPU), steel side
// armour, precision_mech in the heart.
event.remove({ output: 'computercraft:computer_normal' });
event.shaped('computercraft:computer_normal', [
'PEP',
'SBS',
'PMP',
], {
P: 'tfmg:plastic_sheet',
E: 'create:electron_tube',
S: 'tfmg:steel_ingot',
B: 'create:brass_casing',
M: 'create:precision_mechanism',
});
// Monitor (Basic): nixie_tube top + bottom for retro display feel,
// glass pane window, copper sheet trim.
event.remove({ output: 'computercraft:monitor_normal' });
event.shaped('computercraft:monitor_normal', [
'CNC',
'GGG',
'CNC',
], {
C: 'create:copper_sheet',
N: 'create:nixie_tube',
G: 'minecraft:glass_pane',
});
// Disk Drive: cogwheel for the spinning read head, precision_mech
// for the data IO, rose_quartz for the data medium.
event.remove({ output: 'computercraft:disk_drive' });
event.shaped('computercraft:disk_drive', [
'SOS',
'RQR',
'SMS',
], {
S: 'tfmg:steel_ingot',
O: 'create:cogwheel',
R: 'minecraft:redstone',
Q: 'create:rose_quartz',
M: 'create:precision_mechanism',
});
// Floppy Disk: 2 plastic + redstone, shapeless, cheap consumable.
event.remove({ output: 'computercraft:disk' });
event.shapeless('computercraft:disk', [
'tfmg:plastic_sheet',
'tfmg:plastic_sheet',
'minecraft:redstone',
]);
// Wired Modem: copper_wire signal pickup wrapped around a brass
// casing with an electron tube amplifier.
event.remove({ output: 'computercraft:wired_modem' });
event.shaped('computercraft:wired_modem', [
'WBW',
'WEW',
'WBW',
], {
W: 'tfmg:copper_wire',
B: 'create:brass_casing',
E: 'create:electron_tube',
});
// Wired Modem Full: just the block-form. Same recipe but yields the
// full-block variant; CC's default chains them via shapeless.
event.remove({ output: 'computercraft:wired_modem_full' });
event.shapeless('computercraft:wired_modem_full',
['computercraft:wired_modem']);
// Speaker: electron_tube amplifier feeding a note_block, in a
// brass_casing chassis.
event.remove({ output: 'computercraft:speaker' });
event.shaped('computercraft:speaker', [
'CEC',
'PBP',
'CNC',
], {
C: 'create:copper_sheet',
E: 'create:electron_tube',
P: 'tfmg:plastic_sheet',
B: 'create:brass_casing',
N: 'minecraft:note_block',
});
// Printer: ink + precision_mech + cogwheels.
event.remove({ output: 'computercraft:printer' });
event.shaped('computercraft:printer', [
'SSS',
'IMI',
'SOS',
], {
S: 'tfmg:steel_ingot',
I: 'minecraft:ink_sac',
M: 'create:precision_mechanism',
O: 'create:cogwheel',
});
// ─── T3 - NETWORKING + ROBOTICS ────────────────────────────────────
// Wireless Modem (Basic): TFMG electromagnetic_coil is the antenna,
// copper_wire signal lines, brass_casing chassis.
event.remove({ output: 'computercraft:wireless_modem_normal' });
event.shaped('computercraft:wireless_modem_normal', [
'WAW',
'PLP',
'WBW',
], {
W: 'tfmg:copper_wire',
A: 'tfmg:aluminum_wire',
P: 'tfmg:plastic_sheet',
L: 'tfmg:electromagnetic_coil',
B: 'create:brass_casing',
});
// Redstone Relay: brass casing, electron tubes for switching, copper
// wire signal. The CC equivalent of "smart redstone repeater".
event.remove({ output: 'computercraft:redstone_relay' });
event.shaped('computercraft:redstone_relay', [
'WEW',
'RBR',
'WEW',
], {
W: 'tfmg:copper_wire',
E: 'create:electron_tube',
R: 'minecraft:redstone',
B: 'create:brass_casing',
});
// Turtle (Basic): the computer as the brain, mechanical_bearing for
// movement axis, gantry_shaft as the "arms", chest for storage.
// Industrial robot vibe.
event.remove({ output: 'computercraft:turtle_normal' });
event.shaped('computercraft:turtle_normal', [
'SBS',
'GCG',
'SHS',
], {
S: 'tfmg:steel_ingot',
B: 'create:mechanical_bearing',
G: 'create:gantry_shaft',
C: 'computercraft:computer_normal',
H: 'minecraft:chest',
});
// ─── T4 - ADVANCED ─────────────────────────────────────────────────
// Computer (Advanced): silicon + rose_quartz + railway_casing for
// the "premium" chassis. Gold trim.
event.remove({ output: 'computercraft:computer_advanced' });
event.shaped('computercraft:computer_advanced', [
'GQG',
'SMS',
'GRG',
], {
G: 'minecraft:gold_ingot',
Q: 'create:rose_quartz',
S: 'tfmg:silicon_ingot',
M: 'create:precision_mechanism',
R: 'create:railway_casing',
});
// Monitor (Advanced): display_link is Create's literal data-binding
// block - perfect to pair with a CC monitor for showing data.
event.remove({ output: 'computercraft:monitor_advanced' });
event.shaped('computercraft:monitor_advanced', [
'GNG',
'gDg',
'GNG',
], {
G: 'minecraft:gold_ingot',
N: 'create:nixie_tube',
g: 'minecraft:glass_pane',
D: 'create:display_link',
});
// Wireless Modem (Advanced): constantan_spool for high-Q antenna
// tuning, transmitter-style central component.
event.remove({ output: 'computercraft:wireless_modem_advanced' });
event.shaped('computercraft:wireless_modem_advanced', [
'WCW',
'QLQ',
'GBG',
], {
W: 'tfmg:constantan_wire',
C: 'tfmg:constantan_spool',
Q: 'create:rose_quartz',
L: 'tfmg:large_coil',
G: 'minecraft:gold_ingot',
B: 'create:brass_casing',
});
// Turtle (Advanced): gold-trim turtle with computer_advanced brain
// and mechanical_arm for actual robotic manipulation.
event.remove({ output: 'computercraft:turtle_advanced' });
event.shaped('computercraft:turtle_advanced', [
'GAG',
'GCG',
'GHG',
], {
G: 'minecraft:gold_ingot',
A: 'create:mechanical_arm',
C: 'computercraft:computer_advanced',
H: 'minecraft:chest',
});
// ─── T5 - MOBILE (POCKET COMPUTERS) ────────────────────────────────
// Pocket Computer (Normal): miniaturised T2 computer. Electron tube
// brain, silicon for the compact CPU, precision_mech, plastic shell.
event.remove({ output: 'computercraft:pocket_computer_normal' });
event.shaped('computercraft:pocket_computer_normal', [
'PEP',
'SMS',
'PgP',
], {
P: 'tfmg:plastic_sheet',
E: 'create:electron_tube',
S: 'tfmg:silicon_ingot',
M: 'create:precision_mechanism',
g: 'minecraft:glass_pane',
});
// Pocket Computer (Advanced) - the gold variant.
event.remove({ output: 'computercraft:pocket_computer_advanced' });
event.shaped('computercraft:pocket_computer_advanced', [
'PQP',
'SMS',
'PGP',
], {
P: 'tfmg:plastic_sheet',
Q: 'create:rose_quartz',
S: 'tfmg:silicon_ingot',
M: 'create:precision_mechanism',
G: 'minecraft:gold_ingot',
});
// Note: computercraft:pocket_computer_colour appears in the model
// assets but is not a separately-registered item in CC: Tweaked --
// it's a colour-state variant of the advanced pocket computer.
// Don't try to define a recipe for it (KubeJS warns at startup).
});
@@ -0,0 +1,26 @@
// Brass & Sigil — economy policy (recipe removal)
//
// Players can't craft Waystones items (they're distributed by the welcome
// grant -- see welcome.js -- and any replacements come from the bank
// vendor in the future). Players also can't manufacture currency: coins
// only enter circulation through the bank exchange (item-in / coin-out).
//
// Other Numismatics blocks (piggy banks, bank tellers, vendor blocks) stay
// craftable -- those are infrastructure, not currency.
ServerEvents.recipes(event => {
// Block ALL crafting of Waystones items. The welcome-grant script
// gives each new player exactly one regular waystone; any further
// recovery happens via OP /give or future bank vendor.
event.remove({ mod: 'waystones' });
// Block coin manufacturing only -- 5 denominations.
// Real registry IDs: spur, bevel, cog, crown, sun.
[
'numismatics:spur',
'numismatics:bevel',
'numismatics:cog',
'numismatics:crown',
'numismatics:sun',
].forEach(coin => event.remove({ output: coin }));
});
@@ -0,0 +1,93 @@
// Brass & Sigil — Waystones placement policy
//
// Rules:
// - Regular waystones (6 stone variants): 1 per player. Forces players to
// build actual transport infrastructure (trains/roads/canals) for
// long-distance routes instead of waystone-spamming.
// - Sharestones (16 colors): banned. Pair-teleport between solo-placed
// sharestones defeats the "build transport" intent, and a sharestone
// placed just outside someone's claim gives an unrestricted teleport-
// adjacent vector.
// - Portstones (16 colors): banned pending separate design discussion.
// - Warp plates: not restricted (single-block teleport pad; revisit if
// it becomes a workaround).
// - Warp scrolls / warp stones: untouched (consumable / cooldown-bound).
//
// Per-player count lives in player.persistentData.bnsWaystoneCount.
// Decrement on break works because waystones-common.toml has
// restrictedWaystones = ["PLAYER"] -- only the owner can break their own
// waystone, so breaker == owner in normal play.
const WAYSTONE_CAP = 1;
const REGULAR_WAYSTONES = new Set([
'waystones:waystone',
'waystones:mossy_waystone',
'waystones:sandy_waystone',
'waystones:blackstone_waystone',
'waystones:deepslate_waystone',
'waystones:end_stone_waystone',
]);
// Build the colored-block ban list once instead of typing 32 strings.
const COLORS = [
'white', 'orange', 'magenta', 'light_blue', 'yellow', 'lime',
'pink', 'gray', 'light_gray', 'cyan', 'purple', 'blue',
'brown', 'green', 'red', 'black',
];
const BANNED_BLOCKS = new Set();
COLORS.forEach(c => {
BANNED_BLOCKS.add(`waystones:${c}_sharestone`);
BANNED_BLOCKS.add(`waystones:${c}_portstone`);
});
// Helper: replace the just-placed block with air and refund the item.
function refund(event, blockId) {
event.block.set('minecraft:air');
if (event.player) {
event.player.give(Item.of(blockId));
}
}
BlockEvents.placed(event => {
const blockId = event.block.id;
const player = event.player;
// Skip non-player placements (dispensers, mob events) -- nothing to refund.
if (!player) return;
if (BANNED_BLOCKS.has(blockId)) {
refund(event, blockId);
player.tell(Text.red(
'That block is disabled. Use a regular Waystone (1 per player) ' +
'and build transport between distant bases.'
));
return;
}
if (REGULAR_WAYSTONES.has(blockId)) {
const data = player.persistentData;
const current = data.getInt('bnsWaystoneCount');
if (current >= WAYSTONE_CAP) {
refund(event, blockId);
player.tell(Text.red(
`You already have ${WAYSTONE_CAP} waystone. Break your existing one ` +
`to relocate, or build infrastructure to reach distant bases.`
));
return;
}
data.putInt('bnsWaystoneCount', current + 1);
}
});
BlockEvents.broken(event => {
const blockId = event.block.id;
if (!REGULAR_WAYSTONES.has(blockId)) return;
const player = event.player;
if (!player) return; // explosion / world clear -- accept count drift, rare
const data = player.persistentData;
const current = data.getInt('bnsWaystoneCount');
if (current > 0) {
data.putInt('bnsWaystoneCount', current - 1);
}
});
@@ -0,0 +1,53 @@
// Brass & Sigil — first-join welcome grant
//
// Gives each new player exactly 1 Waystone + 1 server manual book on
// first login. Gated by a per-player persistent flag so it fires once
// even if the player relogs.
//
// Future: replace the vanilla written book with a Patchouli book in a
// custom tweak jar once we have enough content to warrant the rich
// formatting. Patchouli is already in the pack so swapping later is
// purely a content+recipe change, no mod-add needed.
const WELCOME_FLAG = 'bnsWelcomeGranted';
const MANUAL_PAGES = [
'Welcome to Brass & Sigil.\n\nThis manual covers the basics. Read it once, then keep it or toss it.',
'WAYSTONES\n\nYou have one Waystone item. Place it at your base -- it is the only one you get.\n\nNeed to travel further? Build trains, roads, or Create Aeronautics planes.',
'MONEY\n\nCoins cannot be crafted.\n\nTake valuables (diamonds etc.) to the bank at spawn. The exchange will trade them for coins.\n\nDynamic rates are planned.',
'SPAWN PLOTS\n\nComing soon: buy a small commercial plot at spawn to set up your shop. One plot per player.\n\nYour home base goes OUT in the world -- claim it with FTB Chunks (free, anywhere).',
'RULES\n\n- Be excellent to each other.\n- No griefing.\n- Lost your Waystone? Ask an OP or buy one from the bank (soon).\n- Report bugs to staff.\n\nHave fun.',
];
function giveManual(player) {
// 1.21 components-based written book: pages are filterable text
// components, title supports the same. Plain strings are accepted.
const book = Item.of('minecraft:written_book');
book.set('minecraft:written_book_content', {
title: { raw: 'Brass & Sigil Manual' },
author: 'Server Staff',
pages: MANUAL_PAGES.map(text => ({ raw: text })),
resolved: true,
});
player.give(book);
}
function giveStarterWaystone(player) {
player.give(Item.of('waystones:waystone'));
}
PlayerEvents.loggedIn(event => {
const player = event.player;
const data = player.persistentData;
if (data.getBoolean(WELCOME_FLAG)) return;
try {
giveStarterWaystone(player);
giveManual(player);
data.putBoolean(WELCOME_FLAG, true);
player.tell(Text.gold('Welcome to Brass & Sigil. Check your inventory for a Waystone and the server manual.'));
} catch (e) {
// If something goes wrong, don't set the flag -- player gets another chance.
console.error(`[bns/welcome] failed for ${player.username}: ${e}`);
}
});
+78 -1
View File
@@ -1,7 +1,7 @@
{ {
"$schema": "Brass-and-Sigil pack.lock.json - generated, do not edit by hand unless you know what you are doing", "$schema": "Brass-and-Sigil pack.lock.json - generated, do not edit by hand unless you know what you are doing",
"name": "Brass and Sigil", "name": "Brass and Sigil",
"version": "0.16.3", "version": "0.19.2",
"minecraft": "1.21.1", "minecraft": "1.21.1",
"loader": { "loader": {
"type": "neoforge", "type": "neoforge",
@@ -481,6 +481,83 @@
"sha1": "488bc70db3730f209e65cbda04c36dbc3918c448", "sha1": "488bc70db3730f209e65cbda04c36dbc3918c448",
"size": 878265, "size": 878265,
"side": "both" "side": "both"
},
{
"source": "modrinth",
"slug": "numismatics",
"versionId": "guON3qvQ",
"version": "1.0.20+neoforge-mc1.21.1",
"path": "mods/CreateNumismatics-1.0.20+neoforge-mc1.21.1.jar",
"url": "https://cdn.modrinth.com/data/Jdbbtt0i/versions/guON3qvQ/CreateNumismatics-1.0.20%2Bneoforge-mc1.21.1.jar",
"sha1": "9883bfd6fef5bd5068f9174ddccba5047849c922",
"size": 693446,
"side": "both"
},
{
"source": "modrinth",
"slug": "patchouli",
"versionId": "BIogJv2D",
"version": "1.21.1-93-neoforge",
"path": "mods/Patchouli-1.21.1-93-NEOFORGE.jar",
"url": "https://cdn.modrinth.com/data/nU0bVIaL/versions/BIogJv2D/Patchouli-1.21.1-93-NEOFORGE.jar",
"sha1": "5413bb9b8fc35ebe46b06b48bf9afafbd8471140",
"size": 646777,
"side": "both"
},
{
"source": "modrinth",
"slug": "easy-npc",
"versionId": "lMxvnRsa",
"version": "6.16.1",
"path": "mods/easy_npc_bundle-neoforge-1.21.1-6.16.1.jar",
"url": "https://cdn.modrinth.com/data/CgGEe1h3/versions/lMxvnRsa/easy_npc_bundle-neoforge-1.21.1-6.16.1.jar",
"sha1": "1df93ad50050ca0550486b424c178a322917ace5",
"size": 25216,
"side": "both"
},
{
"source": "modrinth",
"slug": "easy-npc-core",
"versionId": "Fl75ukL6",
"version": "6.16.1",
"path": "mods/easy_npc-neoforge-1.21.1-6.16.1.jar",
"url": "https://cdn.modrinth.com/data/Epm6R3P2/versions/Fl75ukL6/easy_npc-neoforge-1.21.1-6.16.1.jar",
"sha1": "d978399cd0ddfc9a4eb92f0af1a7de01e3e3c4bf",
"size": 2075308,
"side": "both"
},
{
"source": "modrinth",
"slug": "easy-npc-config-ui",
"versionId": "NDcoVqYE",
"version": "6.16.1",
"path": "mods/easy_npc_config_ui-neoforge-1.21.1-6.16.1.jar",
"url": "https://cdn.modrinth.com/data/uTGjf7vA/versions/NDcoVqYE/easy_npc_config_ui-neoforge-1.21.1-6.16.1.jar",
"sha1": "0cdd37db74ea2e1b20df477d7be6ec51d5ceb681",
"size": 876148,
"side": "both"
},
{
"source": "modrinth",
"slug": "cc-tweaked",
"versionId": "puxJkazX",
"version": "1.119.0",
"path": "mods/cc-tweaked-1.21.1-forge-1.119.0.jar",
"url": "https://cdn.modrinth.com/data/gu7yAYhd/versions/puxJkazX/cc-tweaked-1.21.1-forge-1.119.0.jar",
"sha1": "ba7fd171500afb1a20106cd5c9d62917a2cc11b1",
"size": 3125991,
"side": "both"
},
{
"source": "modrinth",
"slug": "computer-craft-recreated",
"versionId": "3aca9vJw",
"version": "1.2",
"path": "resourcepacks/Computer Craft Recreated v1.2.zip",
"url": "https://cdn.modrinth.com/data/3KLJnXcN/versions/3aca9vJw/Computer%20Craft%20Recreated%20v1.2.zip",
"sha1": "18aa40e1684d1e1833ca53b2a8d7f08548bd7b5b",
"size": 133729,
"side": "client"
} }
], ],
"defaultServer": { "defaultServer": {