From 9f0c9e262aa42b90bdf9cb4625b0381b4afc2894 Mon Sep 17 00:00:00 2001 From: Matt Date: Sun, 24 May 2026 22:42:32 +0000 Subject: [PATCH] pack: content + storage batch v0.24.0 -> v0.26.0 Mods added (in lockfile): v0.24.0 YUNG's structure mods (9): - Better Dungeons, Better Mineshafts, Better Ocean Monuments, Better Nether Fortresses, Better End Island, Better Witch Huts, Better Desert Temples, Better Jungle Temples, Bridges, Extras v0.24.1 Create: Radars (Aeronautics-compatible from v0.4.5.1+) v0.24.2 Ars Creo + Create Ars Compact (the latter removed in 0.25.0) v0.24.3 FallingTree (whole-tree chop on axe hit) v0.24.4 Copycats+, Create: Connected, Create: Interiors v0.24.5 Create: Power Loader (Aeronautics-airship chunkloading) v0.24.6 -- KubeJS bridges only (see below) v0.24.7 -- Patchouli welcome book attempt 1 (kubejs/data) -- failed v0.24.8 -- Patchouli attempt 2 (assets/data split) -- failed v0.24.9 -- Patchouli attempt 3 (patchouli_books/ root path) -- worked v0.25.0 REMOVED Create Ars Compact (broken sauce:source_fluid recipes, no public tracker, half-finished compat layer); added Create: Dragons Plus, Create: Enchantment Industry v0.26.0 Sophisticated Core/Storage/Backpacks/Create-Integration, Create: Additional Logistics KubeJS additions: - supplementaries_bridges.js: flax -> 2x string via Create Press, Plunderer drops 1-3 spurs via EntityEvents.drops - recipes_numismatics.js: renamed COIN_IDS -> COIN_RECIPE_REMOVE_IDS to avoid Rhino global-scope collision with numismatics_tooltips.js, added sprocket to the removal list (was missing) - welcome.js: migrated from vanilla written_book (broken Filterable codec in 1.21) to Patchouli book at patchouli_books/manual/ Patchouli manual: - 5 entries (Welcome, Waystones, Money, Plots, Rules) under one "Server Basics" category - Lives at pack/overrides/patchouli_books/ (root path) -- this is the modpack-author path per Patchouli docs, NOT data/+assets/ which is for mods bundled in jars - Book id: patchouli:manual (default namespace in this mode) All v0.24-v0.26 work has been live on the server and tested. Co-Authored-By: Claude Opus 4.7 --- .../server_scripts/recipes_numismatics.js | 9 +- .../server_scripts/supplementaries_bridges.js | 46 +++ .../kubejs/server_scripts/welcome.js | 39 +-- .../patchouli_books/manual/book.json | 11 + .../manual/en_us/categories/main.json | 6 + .../manual/en_us/entries/money.json | 18 ++ .../manual/en_us/entries/plots.json | 18 ++ .../manual/en_us/entries/rules.json | 27 ++ .../manual/en_us/entries/waystones.json | 17 ++ .../manual/en_us/entries/welcome.json | 14 + pack/pack.lock.json | 281 +++++++++++++++++- 11 files changed, 446 insertions(+), 40 deletions(-) create mode 100644 pack/overrides/kubejs/server_scripts/supplementaries_bridges.js create mode 100644 pack/overrides/patchouli_books/manual/book.json create mode 100644 pack/overrides/patchouli_books/manual/en_us/categories/main.json create mode 100644 pack/overrides/patchouli_books/manual/en_us/entries/money.json create mode 100644 pack/overrides/patchouli_books/manual/en_us/entries/plots.json create mode 100644 pack/overrides/patchouli_books/manual/en_us/entries/rules.json create mode 100644 pack/overrides/patchouli_books/manual/en_us/entries/waystones.json create mode 100644 pack/overrides/patchouli_books/manual/en_us/entries/welcome.json diff --git a/pack/overrides/kubejs/server_scripts/recipes_numismatics.js b/pack/overrides/kubejs/server_scripts/recipes_numismatics.js index d8f34a3..1ee0a85 100644 --- a/pack/overrides/kubejs/server_scripts/recipes_numismatics.js +++ b/pack/overrides/kubejs/server_scripts/recipes_numismatics.js @@ -10,15 +10,18 @@ // depositors, bank cards) stay craftable -- those are infrastructure, // not currency. -const COIN_IDS = [ +// Renamed to avoid collision with COIN_IDS in numismatics_tooltips.js +// (KubeJS server_scripts share a single Rhino global scope). +const COIN_RECIPE_REMOVE_IDS = [ 'numismatics:spur', 'numismatics:bevel', + 'numismatics:sprocket', 'numismatics:cog', 'numismatics:crown', 'numismatics:sun', ]; ServerEvents.recipes(event => { - COIN_IDS.forEach(coin => event.remove({ output: coin })); - console.info(`[bns/recipes_numismatics] removed crafting recipes for ${COIN_IDS.length} coin denominations`); + COIN_RECIPE_REMOVE_IDS.forEach(coin => event.remove({ output: coin })); + console.info(`[bns/recipes_numismatics] removed crafting recipes for ${COIN_RECIPE_REMOVE_IDS.length} coin denominations`); }); diff --git a/pack/overrides/kubejs/server_scripts/supplementaries_bridges.js b/pack/overrides/kubejs/server_scripts/supplementaries_bridges.js new file mode 100644 index 0000000..a7bd908 --- /dev/null +++ b/pack/overrides/kubejs/server_scripts/supplementaries_bridges.js @@ -0,0 +1,46 @@ +// Brass & Sigil -- Supplementaries cross-mod bridges +// +// Supplementaries already does tag work (c:crops/flax, c:fiber/flax, +// c:drinks/lumisene, etc.) and Create auto-generates Millstone + +// 9x packing recipes from those tags. So most integration is done. +// +// What's left -- two small bridges: +// 1. Flax -> String via Mechanical Press (Create doesn't map +// c:fiber -> string natively; this fills the gap so flax becomes +// a viable string-source for textile builds). +// 2. Plunderer drops 1-3 Numismatics spurs so the hostile NPC pulls +// into the server economy. Plunderers are rare so this is a +// mild bounty, not a farmable currency source. +// +// Lumisene -> Ars Source was on the list but Ars Nouveau 5.11.x's +// sourcelink recipe schema needs verification before we add it. +// Parked for a follow-up. + +ServerEvents.recipes(event => { + // 2 flax pressed -> 1 string. Cheaper than wool->4 string but + // requires a Press (kinetic infrastructure) -- balanced. + // + // KubeJS's event.recipes.create.pressing(out, in) signature + // doesn't match Create 6.x's two-arg form, so build the recipe + // via custom() with the raw JSON schema. + event.custom({ + type: 'create:pressing', + ingredients: [{ item: 'supplementaries:flax' }], + results: [{ id: 'minecraft:string', count: 2 }], + }).id('bns:press_flax_to_string'); + console.info('[bns/supplementaries_bridges] added flax -> string press recipe'); +}); + +// Plunderer is a hostile mob that raids unprotected chests. Adding +// a small spur bounty makes them a mini-event rather than a pure +// nuisance. Range tuned low: 1-3 spurs = trivial vs. the player +// economy but creates a "go hunt the plunderer" hook. +// +// KubeJS 2101.7.2 doesn't expose ServerEvents.entityLootTables on +// NeoForge -- we use EntityEvents.drops (filtered by entity id) and +// add items via event.addDrop instead. +EntityEvents.drops('supplementaries:plunderer', event => { + const count = 1 + Math.floor(Math.random() * 3); + event.addDrop(Item.of('numismatics:spur', count)); +}); +console.info('[bns/supplementaries_bridges] registered plunderer -> spur drops handler'); diff --git a/pack/overrides/kubejs/server_scripts/welcome.js b/pack/overrides/kubejs/server_scripts/welcome.js index ce8f709..df7a807 100644 --- a/pack/overrides/kubejs/server_scripts/welcome.js +++ b/pack/overrides/kubejs/server_scripts/welcome.js @@ -1,34 +1,27 @@ -// Brass & Sigil — first-join welcome grant +// Brass & Sigil -- first-join welcome grant // -// Gives each new player exactly 1 Waystone + 1 server manual book on +// Gives each new player exactly 1 Waystone + 1 Patchouli manual 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. +// The manual is a Patchouli book ("patchouli:manual") shipped in the +// pack's root patchouli_books/ folder (the modpack-author path that +// Patchouli's docs recommend for non-mod books). +// Folder layout: +// patchouli_books/manual/book.json +// patchouli_books/manual/en_us/categories/.json +// patchouli_books/manual/en_us/entries/.json +// Namespace defaults to "patchouli" in this mode -- the book id is +// "patchouli:manual". 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, - }); + // Patchouli's guide_book uses the "patchouli:book" data component + // (1.21 component system) to identify which book to open. Plain + // resource location string is the expected value type. + const book = Item.of('patchouli:guide_book'); + book.set('patchouli:book', 'patchouli:manual'); player.give(book); } diff --git a/pack/overrides/patchouli_books/manual/book.json b/pack/overrides/patchouli_books/manual/book.json new file mode 100644 index 0000000..4d03589 --- /dev/null +++ b/pack/overrides/patchouli_books/manual/book.json @@ -0,0 +1,11 @@ +{ + "name": "Brass & Sigil Manual", + "landing_text": "Welcome to Brass & Sigil. This manual covers the essentials -- read it once, then keep it or toss it.", + "subtitle": "The Server Handbook", + "creative_tab": "minecraft:tools_and_utilities", + "model": "patchouli:guide_book", + "show_progress": false, + "show_advancements": false, + "book_texture": "patchouli:textures/gui/book_brown.png", + "version": 1 +} diff --git a/pack/overrides/patchouli_books/manual/en_us/categories/main.json b/pack/overrides/patchouli_books/manual/en_us/categories/main.json new file mode 100644 index 0000000..248e445 --- /dev/null +++ b/pack/overrides/patchouli_books/manual/en_us/categories/main.json @@ -0,0 +1,6 @@ +{ + "name": "Server Basics", + "description": "The essentials for life in Brass & Sigil.", + "icon": "minecraft:writable_book", + "sortnum": 0 +} diff --git a/pack/overrides/patchouli_books/manual/en_us/entries/money.json b/pack/overrides/patchouli_books/manual/en_us/entries/money.json new file mode 100644 index 0000000..1cd8971 --- /dev/null +++ b/pack/overrides/patchouli_books/manual/en_us/entries/money.json @@ -0,0 +1,18 @@ +{ + "name": "Money", + "icon": "numismatics:cog", + "category": "patchouli:main", + "sortnum": 2, + "pages": [ + { + "type": "patchouli:text", + "title": "Coins & Trade", + "text": "Coins $(bold)cannot be crafted$(0). They enter circulation only through the bank at spawn.$(br2)Take valuables -- diamonds, emeralds, rare loot -- to the exchange. It trades them for coins at fixed rates." + }, + { + "type": "patchouli:text", + "title": "Denominations", + "text": "$(li)$(item)Spur$() = 1$(li)$(item)Bevel$() = 8 spurs$(li)$(item)Sprocket$() = 16 spurs$(li)$(item)Cog$() = 64 spurs$(li)$(item)Crown$() = 512 spurs$(li)$(item)Sun$() = 4 096 spurs$(br2)Use a $(item)Bank Teller$() block to convert between denominations." + } + ] +} diff --git a/pack/overrides/patchouli_books/manual/en_us/entries/plots.json b/pack/overrides/patchouli_books/manual/en_us/entries/plots.json new file mode 100644 index 0000000..ee9f164 --- /dev/null +++ b/pack/overrides/patchouli_books/manual/en_us/entries/plots.json @@ -0,0 +1,18 @@ +{ + "name": "Plots & Claims", + "icon": "ftbchunks:map", + "category": "patchouli:main", + "sortnum": 3, + "pages": [ + { + "type": "patchouli:text", + "title": "Spawn Plots", + "text": "Buy a small commercial plot at spawn to set up your shop or stall. $(bold)One plot per player$(0).$(br2)Plots are limited and rented from the Plot Office at spawn -- pay in $(item)cog$()s, or trade rare items for the upgrade." + }, + { + "type": "patchouli:text", + "title": "Your Home Base", + "text": "Your $(bold)home base$(0) lives out in the world -- not on a spawn plot. Pick a spot you like and claim it with $(item)FTB Chunks$(): open the map ($(item)m$()), click chunks to claim and force-load.$(br2)FTB Chunks claims are $(bold)free$(0) and protect against grief from other players." + } + ] +} diff --git a/pack/overrides/patchouli_books/manual/en_us/entries/rules.json b/pack/overrides/patchouli_books/manual/en_us/entries/rules.json new file mode 100644 index 0000000..1d0b42b --- /dev/null +++ b/pack/overrides/patchouli_books/manual/en_us/entries/rules.json @@ -0,0 +1,27 @@ +{ + "name": "Rules", + "icon": "minecraft:shield", + "category": "patchouli:main", + "sortnum": 4, + "pages": [ + { + "type": "patchouli:text", + "title": "House Rules", + "text": "$(li)Be excellent to each other.$(li)No griefing.$(li)Don't break others' contraptions or fly through their bases.$(li)Lost your Waystone? Ask an op or buy one from the bank.$(li)Report bugs and crashes to staff." + }, + { + "type": "patchouli:text", + "title": "PvP & Combat", + "text": "PvP is $(bold)allowed$(0) outside claimed chunks. Claim your base with $(item)FTB Chunks$() to protect it.$(br2)Airships flying through unclaimed chunks are $(bold)fair game$(0) -- if you take it out beyond your claim, expect cannons." + }, + { + "type": "patchouli:text", + "title": "Griefing vs PvP", + "text": "PvP and griefing are $(bold)not the same$(0).$(br2)Allowed: combat, raiding contested ground, sinking each other's airships in open air.$(br2)$(bold)Not allowed -- ban-worthy:$()$(li)Repeated targeted harassment of a player$(li)Destruction of unclaimed builds purely to ruin them$(li)Camping someone's claim border to grief them$(li)Stealing keys/coins via social engineering or exploit$(br2)If unsure, ask staff first." + }, + { + "type": "patchouli:text", + "text": "$(bold)Have fun.$(0)$(br2)This manual is a living document -- expect new pages as the server grows. To re-read at any time, hold the manual and right-click." + } + ] +} diff --git a/pack/overrides/patchouli_books/manual/en_us/entries/waystones.json b/pack/overrides/patchouli_books/manual/en_us/entries/waystones.json new file mode 100644 index 0000000..b6322bd --- /dev/null +++ b/pack/overrides/patchouli_books/manual/en_us/entries/waystones.json @@ -0,0 +1,17 @@ +{ + "name": "Waystones", + "icon": "waystones:waystone", + "category": "patchouli:main", + "sortnum": 1, + "pages": [ + { + "type": "patchouli:text", + "title": "Waystones", + "text": "You have one $(item)Waystone$() in your starter kit. $(bold)Place it at your base$() -- it is the only one you get from the server." + }, + { + "type": "patchouli:text", + "text": "Need to travel further? Build:$(br)$(li)$(item)Create$() trains and tracks$(li)Roads with the $(item)brass road sign$()$(li)$(item)Create Aeronautics$() planes and airships$(br2)Once Quests are live, additional Waystones will be purchasable at the bank." + } + ] +} diff --git a/pack/overrides/patchouli_books/manual/en_us/entries/welcome.json b/pack/overrides/patchouli_books/manual/en_us/entries/welcome.json new file mode 100644 index 0000000..205df58 --- /dev/null +++ b/pack/overrides/patchouli_books/manual/en_us/entries/welcome.json @@ -0,0 +1,14 @@ +{ + "name": "Welcome", + "icon": "minecraft:cake", + "category": "patchouli:main", + "priority": true, + "sortnum": 0, + "pages": [ + { + "type": "patchouli:text", + "title": "Welcome", + "text": "Welcome to $(bold)Brass & Sigil$(0)!$(br2)This manual covers the basics. Skim it now, then keep it on you or toss it in a chest -- you can always craft another by combining a $(item)book$() with a server-issued $(item)sigil$()." + } + ] +} diff --git a/pack/pack.lock.json b/pack/pack.lock.json index c243f39..6014df3 100644 --- a/pack/pack.lock.json +++ b/pack/pack.lock.json @@ -1,7 +1,7 @@ { "$schema": "Brass-and-Sigil pack.lock.json - generated, do not edit by hand unless you know what you are doing", "name": "Brass and Sigil", - "version": "0.23.0", + "version": "0.26.0", "minecraft": "1.21.1", "loader": { "type": "neoforge", @@ -53,6 +53,17 @@ "size": 3715787, "side": "both" }, + { + "source": "modrinth", + "slug": "create-radars", + "versionId": "3MbtX7qD", + "version": "0.4.8-1.21.1", + "path": "mods/create_radar-0.4.8-1.21.1.jar", + "url": "https://cdn.modrinth.com/data/BLu2Yqfq/versions/3MbtX7qD/create_radar-0.4.8-1.21.1.jar", + "sha1": "e33b4957cf831e4ee76c5cb334119270e057c529", + "size": 16462408, + "side": "both" + }, { "source": "modrinth", "slug": "create-tfmg", @@ -64,6 +75,50 @@ "size": 4924243, "side": "both" }, + { + "source": "modrinth", + "slug": "copycats", + "versionId": "kecZ0sl7", + "version": "3.0.4+mc.1.21.1-neoforge", + "path": "mods/copycats-3.0.4+mc.1.21.1-neoforge.jar", + "url": "https://cdn.modrinth.com/data/UT2M39wf/versions/kecZ0sl7/copycats-3.0.4%2Bmc.1.21.1-neoforge.jar", + "sha1": "6a11d5806bcf521e08faba1ee6ef5f31af55ca0f", + "size": 1791747, + "side": "both" + }, + { + "source": "modrinth", + "slug": "create-connected", + "versionId": "EHyCRpCV", + "version": "1.1.16-mc1.21.1", + "path": "mods/create_connected-1.1.16-mc1.21.1.jar", + "url": "https://cdn.modrinth.com/data/Vg5TIO6d/versions/EHyCRpCV/create_connected-1.1.16-mc1.21.1.jar", + "sha1": "11fafde06b25b872f8d5c4e927516188b831cf1a", + "size": 6608605, + "side": "both" + }, + { + "source": "modrinth", + "slug": "interiors", + "versionId": "gBrfZy6S", + "version": "0.6.1", + "path": "mods/interiors-1.21.1-neoforge-0.6.1.jar", + "url": "https://cdn.modrinth.com/data/r4Knci2k/versions/gBrfZy6S/interiors-1.21.1-neoforge-0.6.1.jar", + "sha1": "a558777ef4510da2f4d32ca3da6ac7384c9a9940", + "size": 486912, + "side": "both" + }, + { + "source": "modrinth", + "slug": "create-power-loader", + "versionId": "3Y4r0ItR", + "version": "2.0.5-mc1.21.1", + "path": "mods/create_power_loader-2.0.5-mc1.21.1.jar", + "url": "https://cdn.modrinth.com/data/wPQ6GgFE/versions/3Y4r0ItR/create_power_loader-2.0.5-mc1.21.1.jar", + "sha1": "5bd3ecef6fc66985e6fdf416706c98fb774ba03d", + "size": 442369, + "side": "both" + }, { "source": "modrinth", "slug": "distanthorizons", @@ -240,6 +295,94 @@ "size": 20689115, "side": "both" }, + { + "source": "modrinth", + "slug": "ars-creo", + "versionId": "l9IAhn9x", + "version": "5.3.1", + "path": "mods/ars_creo-1.21.1-5.3.1.jar", + "url": "https://cdn.modrinth.com/data/fZ324GMc/versions/l9IAhn9x/ars_creo-1.21.1-5.3.1.jar", + "sha1": "296ea073e2976360a626b1dc30a392318a0ca522", + "size": 87005, + "side": "both" + }, + { + "source": "modrinth", + "slug": "create-dragons-plus", + "versionId": "r0TIh2nX", + "version": "1.10.1", + "path": "mods/CreateDragonsPlus-1.10.1.jar", + "url": "https://cdn.modrinth.com/data/dzb1a5WV/versions/r0TIh2nX/CreateDragonsPlus-1.10.1.jar", + "sha1": "0759898cc7ca22ece49e7d7a210db8becfd79cdf", + "size": 759631, + "side": "both" + }, + { + "source": "modrinth", + "slug": "sophisticated-core", + "versionId": "xLeCYw3D", + "version": "1.21.1-1.4.41.1867", + "path": "mods/sophisticatedcore-1.21.1-1.4.41.1867.jar", + "url": "https://cdn.modrinth.com/data/nmoqTijg/versions/xLeCYw3D/sophisticatedcore-1.21.1-1.4.41.1867.jar", + "sha1": "c5880807715abf1cf276be0afdd1351a3cc747e0", + "size": 1607780, + "side": "both" + }, + { + "source": "modrinth", + "slug": "sophisticated-storage", + "versionId": "dMp3ZwPO", + "version": "1.21.1-1.5.50.1743", + "path": "mods/sophisticatedstorage-1.21.1-1.5.50.1743.jar", + "url": "https://cdn.modrinth.com/data/hMlaZH8f/versions/dMp3ZwPO/sophisticatedstorage-1.21.1-1.5.50.1743.jar", + "sha1": "aafe9fa35429b42073ba7dac22318aa5b22c83cb", + "size": 1689268, + "side": "both" + }, + { + "source": "modrinth", + "slug": "sophisticated-storage-create-integration", + "versionId": "cxMKWFFD", + "version": "1.21.1-0.1.17.132", + "path": "mods/sophisticatedstoragecreateintegration-1.21.1-0.1.17.132.jar", + "url": "https://cdn.modrinth.com/data/MJ0hdevs/versions/cxMKWFFD/sophisticatedstoragecreateintegration-1.21.1-0.1.17.132.jar", + "sha1": "afabee69117b0cd50184579af33d80d096f4a9c6", + "size": 133451, + "side": "both" + }, + { + "source": "modrinth", + "slug": "sophisticated-backpacks", + "versionId": "tqDekk0k", + "version": "1.21.1-3.25.49.1788", + "path": "mods/sophisticatedbackpacks-1.21.1-3.25.49.1788.jar", + "url": "https://cdn.modrinth.com/data/TyCTlI4b/versions/tqDekk0k/sophisticatedbackpacks-1.21.1-3.25.49.1788.jar", + "sha1": "bf46106f0e2df9a9749891735440c357550a3d4a", + "size": 1056463, + "side": "both" + }, + { + "source": "modrinth", + "slug": "create-additional-logistics", + "versionId": "soesZiME", + "version": "1.4.5", + "path": "mods/createadditionallogistics-1.21.1-1.4.5.jar", + "url": "https://cdn.modrinth.com/data/CZaz7aje/versions/soesZiME/createadditionallogistics-1.21.1-1.4.5.jar", + "sha1": "6acf4d30516b6bf66928aa5d79d6bac6283de44e", + "size": 953230, + "side": "both" + }, + { + "source": "modrinth", + "slug": "create-enchantment-industry", + "versionId": "zjSKnkVT", + "version": "2.3.1", + "path": "mods/create-enchantment-industry-2.3.1.jar", + "url": "https://cdn.modrinth.com/data/JWGBpFUP/versions/zjSKnkVT/create-enchantment-industry-2.3.1.jar", + "sha1": "e9a57b322459bda9905e4287d2582ad600909b11", + "size": 684729, + "side": "both" + }, { "source": "modrinth", "slug": "terralith", @@ -262,6 +405,116 @@ "size": 461244, "side": "server" }, + { + "source": "modrinth", + "slug": "yungs-better-dungeons", + "versionId": "D6aZn0Em", + "version": "1.21.1-NeoForge-5.1.4", + "path": "mods/YungsBetterDungeons-1.21.1-NeoForge-5.1.4.jar", + "url": "https://cdn.modrinth.com/data/o1C1Dkj5/versions/D6aZn0Em/YungsBetterDungeons-1.21.1-NeoForge-5.1.4.jar", + "sha1": "73a660c13063450e555e5e2c015ae24d606b32b4", + "size": 782160, + "side": "server" + }, + { + "source": "modrinth", + "slug": "yungs-better-mineshafts", + "versionId": "Go3nbneL", + "version": "1.21.1-NeoForge-5.1.1", + "path": "mods/YungsBetterMineshafts-1.21.1-NeoForge-5.1.1.jar", + "url": "https://cdn.modrinth.com/data/HjmxVlSr/versions/Go3nbneL/YungsBetterMineshafts-1.21.1-NeoForge-5.1.1.jar", + "sha1": "6a14e1d8201f068ca87ef8333e471c5378955906", + "size": 493967, + "side": "server" + }, + { + "source": "modrinth", + "slug": "yungs-better-ocean-monuments", + "versionId": "yFjEcj2g", + "version": "1.21.1-NeoForge-4.1.2", + "path": "mods/YungsBetterOceanMonuments-1.21.1-NeoForge-4.1.2.jar", + "url": "https://cdn.modrinth.com/data/3dT9sgt4/versions/yFjEcj2g/YungsBetterOceanMonuments-1.21.1-NeoForge-4.1.2.jar", + "sha1": "fba629defdb92ad99ec4f411895afb6e19555a18", + "size": 1025571, + "side": "server" + }, + { + "source": "modrinth", + "slug": "yungs-better-nether-fortresses", + "versionId": "iopJiJQp", + "version": "1.21.1-NeoForge-3.1.5", + "path": "mods/YungsBetterNetherFortresses-1.21.1-NeoForge-3.1.5.jar", + "url": "https://cdn.modrinth.com/data/Z2mXHnxP/versions/iopJiJQp/YungsBetterNetherFortresses-1.21.1-NeoForge-3.1.5.jar", + "sha1": "4061ece2141475227646649046fc14c2da505922", + "size": 609639, + "side": "server" + }, + { + "source": "modrinth", + "slug": "yungs-better-end-island", + "versionId": "I52NZ1qK", + "version": "1.21.1-NeoForge-3.1.2", + "path": "mods/YungsBetterEndIsland-1.21.1-NeoForge-3.1.2.jar", + "url": "https://cdn.modrinth.com/data/2BwBOmBQ/versions/I52NZ1qK/YungsBetterEndIsland-1.21.1-NeoForge-3.1.2.jar", + "sha1": "832f2c17425debe74a9f267f4136f1a0f0221d19", + "size": 398130, + "side": "server" + }, + { + "source": "modrinth", + "slug": "yungs-better-witch-huts", + "versionId": "AvedwcIe", + "version": "1.21.1-NeoForge-4.1.1", + "path": "mods/YungsBetterWitchHuts-1.21.1-NeoForge-4.1.1.jar", + "url": "https://cdn.modrinth.com/data/t5FRdP87/versions/AvedwcIe/YungsBetterWitchHuts-1.21.1-NeoForge-4.1.1.jar", + "sha1": "bbf6c91f4a2829c58bc024eaaab821986bc93de6", + "size": 174789, + "side": "server" + }, + { + "source": "modrinth", + "slug": "yungs-better-desert-temples", + "versionId": "GQ9iNWkI", + "version": "1.21.1-NeoForge-4.1.5", + "path": "mods/YungsBetterDesertTemples-1.21.1-NeoForge-4.1.5.jar", + "url": "https://cdn.modrinth.com/data/XNlO7sBv/versions/GQ9iNWkI/YungsBetterDesertTemples-1.21.1-NeoForge-4.1.5.jar", + "sha1": "90529257dbd92558998c65178294bc7b2fd16a64", + "size": 905839, + "side": "server" + }, + { + "source": "modrinth", + "slug": "yungs-better-jungle-temples", + "versionId": "P00i2hJn", + "version": "1.21.1-NeoForge-3.1.2", + "path": "mods/YungsBetterJungleTemples-1.21.1-NeoForge-3.1.2.jar", + "url": "https://cdn.modrinth.com/data/z9Ve58Ih/versions/P00i2hJn/YungsBetterJungleTemples-1.21.1-NeoForge-3.1.2.jar", + "sha1": "d6b7ce6cf351b09cbd23147ff166c35cfdc572e8", + "size": 795839, + "side": "server" + }, + { + "source": "modrinth", + "slug": "yungs-bridges", + "versionId": "urkCzBf6", + "version": "1.21.1-NeoForge-5.1.1", + "path": "mods/YungsBridges-1.21.1-NeoForge-5.1.1.jar", + "url": "https://cdn.modrinth.com/data/Ht4BfYp6/versions/urkCzBf6/YungsBridges-1.21.1-NeoForge-5.1.1.jar", + "sha1": "18099c2d54acd16bb8ab90a66f40fa16496d065e", + "size": 136820, + "side": "server" + }, + { + "source": "modrinth", + "slug": "yungs-extras", + "versionId": "N2EpMhR7", + "version": "1.21.1-NeoForge-5.1.1", + "path": "mods/YungsExtras-1.21.1-NeoForge-5.1.1.jar", + "url": "https://cdn.modrinth.com/data/ZYgyPyfq/versions/N2EpMhR7/YungsExtras-1.21.1-NeoForge-5.1.1.jar", + "sha1": "62833733aaf407f36bdacf648ed4b2ef9940662b", + "size": 198183, + "side": "both" + }, { "source": "modrinth", "slug": "lithostitched", @@ -588,7 +841,7 @@ "version": "2.3.2", "path": "mods/mcw-roofs-2.3.2-mc1.21.1neoforge.jar", "url": "https://cdn.modrinth.com/data/B8jaH3P1/versions/jiXRXiSt/mcw-roofs-2.3.2-mc1.21.1neoforge.jar", - "sha1": "05806ff152e739ea0c5db86dabd9caf0cfa55b9d", + "sha1": "05806ff152fab56f7c1b4b215d772ea73611283d", "size": 1784829, "side": "both" }, @@ -599,7 +852,7 @@ "version": "1.1.1", "path": "mods/mcw-mcwpaths-1.1.1-mc1.21.1neoforge.jar", "url": "https://cdn.modrinth.com/data/VRLhWB91/versions/tlymsxUG/mcw-mcwpaths-1.1.1-mc1.21.1neoforge.jar", - "sha1": "4bb7e1d28e8b3b5d3a3eaf5e0d3bcc62d1ab57f1", + "sha1": "4bb7e1d28eef19f87438881b0f582a15297b95ae", "size": 777742, "side": "both" }, @@ -658,17 +911,6 @@ "size": 1190404, "side": "both" }, - { - "source": "modrinth", - "slug": "create-deco", - "versionId": "qrcMVoBD", - "version": "2.1.3", - "path": "mods/createdeco-2.1.3.jar", - "url": "https://cdn.modrinth.com/data/sMvUb4Rb/versions/qrcMVoBD/createdeco-2.1.3.jar", - "sha1": "93d9eff58b46c6953e907d071e6be4e3ce07be38", - "size": 3328498, - "side": "both" - }, { "source": "modrinth", "slug": "effortless-building", @@ -680,6 +922,17 @@ "size": 810119, "side": "both" }, + { + "source": "modrinth", + "slug": "fallingtree", + "versionId": "wxGXaJMA", + "version": "1.21.1-1.21.1.11", + "path": "mods/FallingTree-1.21.1-1.21.1.11.jar", + "url": "https://cdn.modrinth.com/data/Fb4jn8m6/versions/wxGXaJMA/FallingTree-1.21.1-1.21.1.11.jar", + "sha1": "7e1b3ee0ba89b556d5a468797bb1b5f4e2b8ccb7", + "size": 496356, + "side": "both" + }, { "source": "modrinth", "slug": "moonlight",