From d59f73b1ee27640253b3c285fae05ab66ae11d6a Mon Sep 17 00:00:00 2001 From: GameStar <56610486+BlueBoat29@users.noreply.github.com> Date: Tue, 26 Aug 2025 18:09:54 -0500 Subject: [PATCH] Feature/sandworm, sacks, soulbind (#1710) * stuff * Create wraptor.json * Update tags.js * fix wool * eggs * Update constants.js * more recipe stuff * doing tooltips the correct way * oops Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com> * oops * eater mixin stuff * add sandworm+dep to pakku * new configs I think * soulbind recipes * thumper * Update main_server_script.js * Update pakku-lock.json * sack configs * Update sns-server.toml * Update sns-server.toml * sack recipes and stuff * Create soulbinding-common.toml * soulbind fix * Update pakku-lock.json Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com> * Update recipes.js * Update recipes.js * Delete EffekseerNativeForJava.dll Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com> * Update .gitignore --------- Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com> --- .gitignore | 1 + config/lodestone-client.toml | 23 ++ config/sns-client.toml | 8 + config/sns-common.toml | 3 + config/soulbinding-common.toml | 60 ++++ defaultconfigs/sns-server.toml | 264 +++++++++++++++ kubejs/server_scripts/main_server_script.js | 6 + kubejs/server_scripts/sacksnstuff/recipes.js | 231 +++++++++++++ kubejs/server_scripts/sacksnstuff/tags.js | 11 + kubejs/server_scripts/sandworm/recipes.js | 15 + kubejs/server_scripts/soulbound/recipes.js | 25 ++ kubejs/server_scripts/soulbound/tags.js | 10 + .../server_scripts/wan_ancient_beasts/tags.js | 9 + .../startup_scripts/sacksnsuch/constants.js | 11 + kubejs/startup_scripts/soulbind/constants.js | 6 + pakku-lock.json | 316 +++++++++++++++++- 16 files changed, 998 insertions(+), 1 deletion(-) create mode 100644 config/lodestone-client.toml create mode 100644 config/sns-client.toml create mode 100644 config/sns-common.toml create mode 100644 config/soulbinding-common.toml create mode 100644 defaultconfigs/sns-server.toml create mode 100644 kubejs/server_scripts/sacksnstuff/recipes.js create mode 100644 kubejs/server_scripts/sacksnstuff/tags.js create mode 100644 kubejs/server_scripts/sandworm/recipes.js create mode 100644 kubejs/server_scripts/soulbound/recipes.js create mode 100644 kubejs/server_scripts/soulbound/tags.js create mode 100644 kubejs/startup_scripts/sacksnsuch/constants.js create mode 100644 kubejs/startup_scripts/soulbind/constants.js diff --git a/.gitignore b/.gitignore index fcc49d182..301acdcbf 100644 --- a/.gitignore +++ b/.gitignore @@ -124,3 +124,4 @@ icon.png .pakku/server-overrides/user_jvm_args.txt /tacz/tacz_default_gun +EffekseerNativeForJava.dll diff --git a/config/lodestone-client.toml b/config/lodestone-client.toml new file mode 100644 index 000000000..0f1521a9c --- /dev/null +++ b/config/lodestone-client.toml @@ -0,0 +1,23 @@ + +[graphics] + #Should lodestone use experimental fabulous graphics layering? You pretty much never wanna turn this on at the moment unless you're a developer. + experimental_fabulous_layering = false + + [graphics.particle] + #Should particles render on the delayed buffer? This means they will properly render after clouds & water do, but could cause issues with mods like sodium. + buffer_particles = true + + [graphics.fire] + #Downwards offset of Minecraft's first-person fire overlay. Higher numbers cause it to visually display lower and free up more screen space. + #Range: 0.0 ~ 1.0 + fire_overlay_offset = 0.0 + +[screenshake] + #Intensity of screenshake. Higher numbers increase amplitude. Disable to turn off screenshake. + #Range: 0.0 ~ 5.0 + screenshake_intensity = 1.0 + +[screen_particles] + #Are screen particles enabled? + enable_screen_particles = true + diff --git a/config/sns-client.toml b/config/sns-client.toml new file mode 100644 index 000000000..70356c31a --- /dev/null +++ b/config/sns-client.toml @@ -0,0 +1,8 @@ +#Swaps the enchant glint from when auto pickup is enabled to when it's disabled +voidGlint = true +#When enabled sacks will display their contents like how TFC vessels do +displayItemContentsAsImages = true +#Config for which hiking boots model is used. FANCY for the full 3D model, NO_FLOOF for only toes and VANILLA for the vanilla style model +#Allowed Values: FANCY, NO_FLOOF, VANILLA +bootModelType = "FANCY" + diff --git a/config/sns-common.toml b/config/sns-common.toml new file mode 100644 index 000000000..1df959fd7 --- /dev/null +++ b/config/sns-common.toml @@ -0,0 +1,3 @@ +#Do pick block for Item Container. Server will trump client config! +doPickBlock = true + diff --git a/config/soulbinding-common.toml b/config/soulbinding-common.toml new file mode 100644 index 000000000..8f89ce0dd --- /dev/null +++ b/config/soulbinding-common.toml @@ -0,0 +1,60 @@ + +["Professions that can sell Binding Chains"] + Armorer = false + Butcher = false + Cartographer = false + Cleric = false + Farmer = false + Fisherman = false + Fletcher = false + Leatherworker = false + Librarian = false + Mason = false + Shepherd = false + Toolsmith = false + Weaponsmith = false + +["Profession Settings"] + #Range: 0 ~ 5 + "Profession Level needed to sell Binding Chains" = 1 + #Range: 0 ~ 999999 + "Max Binding Chains that a Villager can sell per day" = 10 + #Item Needed must be lowercase and spelt correctly. If not, the Binding Chains WILL NOT appear in trades. + "Item needed for Trade" = "minecraft:emerald" + #Range: 0 ~ 64 + "Amount of Trade Items Needed" = 16 + +["Wandering Trader Settings"] + "Wandering Trader can Sell Binding Chains" = true + #The Wandering Trader randomly picks a few trades from the Generic Trade List and a single trade from Rare List. + "Binding Chains are in the Rare List" = true + "Binding Chains are in the Generic List" = false + #Range: 0 ~ 999999 + "Max Binding Chains that the Trader can sell" = 3 + #Item Needed must be lowercase and spelt correctly. If not, the Binding Chains WILL NOT appear in trades. + "Item needed for Trade" = "minecraft:emerald" + #Range: 0 ~ 64 + "Amount of Trade Items Needed" = 16 + +["Anvil Settings"] + #The way that the Anvil is coded requires at least 1 Experience Level to successfully alter an item outside of Creative Mode! + #Range: 1 ~ 999999 + "Experience Levels Needed to Attach Binding Chains to an Item" = 1 + +["Drop Settings"] + #Chances are set as decimals. 1.0 is the same as 100%, 0.01 is the same as 1% + #Range: 0.0 ~ 1.0 + "Chance for the Witch to drop Binding Chains" = 0.0 + #Range: 0.0 ~ 1.0 + "Chance for the Evoker to drop Binding Chains" = 0.0 + #Range: 0.0 ~ 1.0 + "Chance for the Piglin Brute to drop Binding Chains" = 0.0 + +["Misc Settings"] + "Binding Chains will Bind and Greatly SLOW Mobs when tossed to them" = true + #Chances are set as decimals. 1.0 is the same as 100%, 0.01 is the same as 1% + #Range: 0.0 ~ 1.0 + "Chance for the Bound Mob to drop Binding Chains when killed" = 1.0 + "Binding Chains can be used as Piglin Currency" = false + "The Binding Chains ICON has a Foil Effect making it shimmer as if it is enchanted" = true + diff --git a/defaultconfigs/sns-server.toml b/defaultconfigs/sns-server.toml new file mode 100644 index 000000000..47e9f1658 --- /dev/null +++ b/defaultconfigs/sns-server.toml @@ -0,0 +1,264 @@ + +["Container Item Config"] + + ["Container Item Config"."Straw Basket"] + #Determines if this container will automatically pickup items + doPickup = true + #Determines if this container can void items on pickup + doVoiding = true + #Determines if this container can transfer items in an inventory + doInventoryTransfer = true + #Controls the amount of slots this container has + #Range: 1 ~ 27 + slotCount = 4 + #Item stack max for the type of container + #Range: 1 ~ 512 + slotCap = 32 + #The maximum item size allowed in the container + #Allowed Values: TINY, VERY_SMALL, SMALL, NORMAL, LARGE, VERY_LARGE, HUGE + allowedSize = "SMALL" + + ["Container Item Config"."Leather Sack"] + #Determines if this container will automatically pickup items + doPickup = false + #Determines if this container can void items on pickup + doVoiding = false + #Determines if this container can transfer items in an inventory + doInventoryTransfer = true + #Controls the amount of slots this container has + #Range: 1 ~ 27 + slotCount = 4 + #Item stack max for the type of container + #Range: 1 ~ 512 + slotCap = 64 + #The maximum item size allowed in the container + #Allowed Values: TINY, VERY_SMALL, SMALL, NORMAL, LARGE, VERY_LARGE, HUGE + allowedSize = "VERY_LARGE" + + ["Container Item Config"."Burlap Sack"] + #Determines if this container will automatically pickup items + doPickup = true + #Determines if this container can void items on pickup + doVoiding = true + #Determines if this container can transfer items in an inventory + doInventoryTransfer = false + #Controls the amount of slots this container has + #Range: 1 ~ 27 + slotCount = 8 + #Item stack max for the type of container + #Range: 1 ~ 512 + slotCap = 48 + #The maximum item size allowed in the container + #Allowed Values: TINY, VERY_SMALL, SMALL, NORMAL, LARGE, VERY_LARGE, HUGE + allowedSize = "NORMAL" + + ["Container Item Config"."Ore Sack"] + #Determines if this container will automatically pickup items + doPickup = true + #Determines if this container can void items on pickup + doVoiding = false + #Determines if this container can transfer items in an inventory + doInventoryTransfer = true + #Controls the amount of slots this container has + #Range: 1 ~ 27 + slotCount = 9 + #Item stack max for the type of container + #Range: 1 ~ 512 + slotCap = 512 + #The maximum item size allowed in the container + #Allowed Values: TINY, VERY_SMALL, SMALL, NORMAL, LARGE, VERY_LARGE, HUGE + allowedSize = "SMALL" + + ["Container Item Config"."Seed Pouch"] + #Determines if this container will automatically pickup items + doPickup = true + #Determines if this container can void items on pickup + doVoiding = false + #Determines if this container can transfer items in an inventory + doInventoryTransfer = true + #Controls the amount of slots this container has + #Range: 1 ~ 27 + slotCount = 27 + #Item stack max for the type of container + #Range: 1 ~ 512 + slotCap = 64 + #The maximum item size allowed in the container + #Allowed Values: TINY, VERY_SMALL, SMALL, NORMAL, LARGE, VERY_LARGE, HUGE + allowedSize = "SMALL" + + ["Container Item Config"."Frame Pack"] + #Determines if this container will automatically pickup items + doPickup = false + #Determines if this container can void items on pickup + doVoiding = false + #Determines if this container can transfer items in an inventory + doInventoryTransfer = false + #Controls the amount of slots this container has + #Range: 1 ~ 27 + slotCount = 18 + #Item stack max for the type of container + #Range: 1 ~ 512 + slotCap = 64 + #The maximum item size allowed in the container + #Allowed Values: TINY, VERY_SMALL, SMALL, NORMAL, LARGE, VERY_LARGE, HUGE + allowedSize = "VERY_LARGE" + + ["Container Item Config"."Lunch Box"] + #Determines if this container will automatically pickup items + doPickup = false + #Determines if this container can void items on pickup + doVoiding = false + #Determines if this container can transfer items in an inventory + doInventoryTransfer = true + #Controls the amount of slots this container has + #Range: 1 ~ 27 + slotCount = 8 + #Item stack max for the type of container + #Range: 1 ~ 512 + slotCap = 4 + #The maximum item size allowed in the container + #Allowed Values: TINY, VERY_SMALL, SMALL, NORMAL, LARGE, VERY_LARGE, HUGE + allowedSize = "NORMAL" + + ["Container Item Config".Quiver] + #Determines if this container will automatically pickup items + doPickup = true + #Determines if this container can void items on pickup + doVoiding = false + #Determines if this container can transfer items in an inventory + doInventoryTransfer = false + #Controls the amount of slots this container has + #Range: 1 ~ 27 + slotCount = 8 + #Item stack max for the type of container + #Range: 1 ~ 512 + slotCap = 32 + #The maximum item size allowed in the container + #Allowed Values: TINY, VERY_SMALL, SMALL, NORMAL, LARGE, VERY_LARGE, HUGE + allowedSize = "VERY_LARGE" + +["Boot config"] + #The amount of steps taken before one point of durability is lost + #Range: > 0 + bootsStepPerDamage = 500 + + ["Boot config"."Hiking Boots"] + #The movement speed bonus these boots provide + #Range: 0.0 ~ 1024.0 + movementSpeed = 0.05 + #The step height bonus these boots provide + #Range: 0.0 ~ 512.0 + stepHeight = 0.0 + #The extra fall distance in blocks before you begin taking fall damage + #Range: 0.0 ~ 64.0 + fallPadding = 0.5 + + ["Boot config"."Steel Toe Boots"] + #The movement speed bonus these boots provide + #Range: 0.0 ~ 1024.0 + movementSpeed = 0.1 + #The step height bonus these boots provide + #Range: 0.0 ~ 512.0 + stepHeight = 0.5 + #The extra fall distance in blocks before you begin taking fall damage + #Range: 0.0 ~ 64.0 + fallPadding = 1.0 + + ["Boot config"."Black Steel Toe Boots"] + #The movement speed bonus these boots provide + #Range: 0.0 ~ 1024.0 + movementSpeed = 0.15 + #The step height bonus these boots provide + #Range: 0.0 ~ 512.0 + stepHeight = 0.5 + #The extra fall distance in blocks before you begin taking fall damage + #Range: 0.0 ~ 64.0 + fallPadding = 2.0 + + ["Boot config"."Blue Steel Toe Boots"] + #The movement speed bonus these boots provide + #Range: 0.0 ~ 1024.0 + movementSpeed = 0.2 + #The step height bonus these boots provide + #Range: 0.0 ~ 512.0 + stepHeight = 0.5 + #The extra fall distance in blocks before you begin taking fall damage + #Range: 0.0 ~ 64.0 + fallPadding = 5.0 + + ["Boot config"."Red Steel Toe Boots"] + #The movement speed bonus these boots provide + #Range: 0.0 ~ 1024.0 + movementSpeed = 0.2 + #The step height bonus these boots provide + #Range: 0.0 ~ 512.0 + stepHeight = 0.5 + #The extra fall distance in blocks before you begin taking fall damage + #Range: 0.0 ~ 64.0 + fallPadding = 5.0 + +["Horseshoes config"] + #The amount of steps taken before one point of durability is lost + #Range: > 0 + horseshoesStepsPerDamage = 500 + + ["Horseshoes config"."Steel Horseshoes"] + #The movement speed bonus horseshoes provide + #Range: 0.0 ~ 1024.0 + movementSpeed = 0.05 + #The fall distance bonus horseshoes provide + #Range: 0.0 ~ 64.0 + bonusFallDistance = 2.0 + #The step height bonus these horseshoes provide + #Range: 0.0 ~ 512.0 + stepHeightBonus = 0.0 + + ["Horseshoes config"."Black Steel Horseshoes"] + #The movement speed bonus horseshoes provide + #Range: 0.0 ~ 1024.0 + movementSpeed = 0.1 + #The fall distance bonus horseshoes provide + #Range: 0.0 ~ 64.0 + bonusFallDistance = 2.0 + #The step height bonus these horseshoes provide + #Range: 0.0 ~ 512.0 + stepHeightBonus = 0.0 + + ["Horseshoes config"."Blue Steel Horseshoes"] + #The movement speed bonus horseshoes provide + #Range: 0.0 ~ 1024.0 + movementSpeed = 0.2 + #The fall distance bonus horseshoes provide + #Range: 0.0 ~ 64.0 + bonusFallDistance = 5.0 + #The step height bonus these horseshoes provide + #Range: 0.0 ~ 512.0 + stepHeightBonus = 1.0 + + ["Horseshoes config"."Red Steel Horseshoes"] + #The movement speed bonus horseshoes provide + #Range: 0.0 ~ 1024.0 + movementSpeed = 0.2 + #The fall distance bonus horseshoes provide + #Range: 0.0 ~ 64.0 + bonusFallDistance = 5.0 + #The step height bonus these horseshoes provide + #Range: 0.0 ~ 512.0 + stepHeightBonus = 1.0 + +["Global config"] + #Global control for automatic pickup, this will not force enable for every type + doPickup = true + #A global toggle for item voiding, this will not force enable for every type + doVoiding = true + #This allows other containers such as vessels to support the pick block search + allPickBlock = false + #This allows containers to have items inserted and extracted from them via the inventory like vanilla Bundles + enableContainerInventoryInteraction = true + #The modifier for the 'Lunchbox' food trait. Values less than 1 extend food lifetime, values greater than one decrease it. A value of zero stops decay. + #Range: 0.0 ~ 1.7976931348623157E308 + traitLunchboxModifier = 0.6 + #The maximum size of an entity which mob nets can capture. This is not directly related to TFC's animal size stat. + #Range: 0.0 ~ 1.7976931348623157E308 + maximumNetCaptureSize = 0.5 + diff --git a/kubejs/server_scripts/main_server_script.js b/kubejs/server_scripts/main_server_script.js index dc005716b..853458d72 100644 --- a/kubejs/server_scripts/main_server_script.js +++ b/kubejs/server_scripts/main_server_script.js @@ -43,6 +43,8 @@ ServerEvents.tags('item', event => { registerRailWaysItemTags(event) registerRnrItemTags(event) registerSophisticatedBackpacksItemTags(event) + registerSoulboundItemTags(event) + registeSNSItemTags(event) registerSpeciesItemTags(event) registerTACZItemTags(event) registerTFCAmbientalItemTags(event) @@ -132,6 +134,7 @@ ServerEvents.tags('worldgen/biome', event => { ServerEvents.tags('entity_type', event => { registerAdAstraEntityTypeTags(event) + registerWABEntityTypeTags(event) }) /** @@ -248,8 +251,11 @@ ServerEvents.recipes(event => { registerProgrammedCircuitCardRecipes(event) registerRailWaysRecipes(event) registerRnrRecipes(event) + registerSandwormRecipes(event) registerSophisticatedBackpacksRecipes(event) + registerSoulboundRecipes(event) registerSimplylightRecipes(event) + registerSNSRecipes(event) registerSpeciesRecipes(event) registerTACZRecipes(event) registerTFCRecipes(event) diff --git a/kubejs/server_scripts/sacksnstuff/recipes.js b/kubejs/server_scripts/sacksnstuff/recipes.js new file mode 100644 index 000000000..a6ad5e301 --- /dev/null +++ b/kubejs/server_scripts/sacksnstuff/recipes.js @@ -0,0 +1,231 @@ +"use strict"; + +const registerSNSRecipes = (event) => { + global.SNS_DISABLED_ITEMS.forEach(item => { + event.remove({ input: item }) + event.remove({ output: item }) + }) + + event.remove({ mod: 'sns', type: 'tfc:heating' }) + event.remove({ output: 'sns:buckle'}) + + event.remove({ id: 'sns:crafting/ore_sack'}) + event.remove({ id: 'sns:crafting/leather_sack'}) + event.remove({ id: 'sns:crafting/burlap_sack'}) + event.remove({ id: 'sns:crafting/seed_pouch'}) + + event.remove({ output: 'sns:pack_frame'}) + + event.remove({ id: 'sns:crafting/reinforced_fiber'}) + + event.recipes.tfc.sewing( + 'sns:burlap_sack', + [ + 0, 0, 1, 0, 0, 1, 0, 0, 1, + 0, 0, 1, 1, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 1, 0, 1, 0, 1, 0, + 0, 0, 1, 0, 0, 1, 0, 0, 1 + ], + [ + -1, -1, 0, 0, 0, 0, 0, 0, + -1, 0, 0, -1, -1, -1, -1, 0, + -1, 0, 0, -1, -1, -1, -1, 0, + -1, -1, 0, 0, 0, 0, 0, 0 + ] + ).id('sns:sewing/burlap_sack') + + event.recipes.tfc.sewing( + 'sns:seed_pouch', + [ + 0, 0, 1, 0, 0, 1, 0, 0, 1, + 0, 0, 1, 1, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 1, 1, 1, 1, 1, 1, 0, + 0, 0, 1, 0, 0, 1, 0, 0, 1 + ], + [ + -1, -1, 1, 1, 1, 1, 1, 1, + -1, 1, 1, 0, 0, 0, 0, 1, + -1, 1, 1, 0, 0, 0, 0, 1, + -1, -1, 1, 1, 1, 1, 1, 1 + ] + ).id('sns:sewing/seed_pouch') + + event.recipes.tfc.damage_inputs_shaped_crafting( + event.shaped('sns:leather_sack', [ + 'AAA', + 'BCB', + 'DBE' + ], { + A: 'tfc:jute_fiber', + B: 'sns:leather_strip', + C: 'sns:unfinished_leather_sack', + D: 'minecraft:name_tag', + E: 'tfc:bone_needle' + } + ) + ).id('sns:crafting/leather_sack') + + event.recipes.tfc.damage_inputs_shaped_crafting( + event.shaped('sns:leather_sack', [ + ' A ', + 'BCB', + 'DBE' + ], { + A: '#forge:rope', + B: 'sns:leather_strip', + C: 'sns:unfinished_leather_sack', + D: 'minecraft:name_tag', + E: 'tfc:bone_needle' + } + ) + ).id('sns:crafting/leather_sack_coil') + + event.recipes.tfc.damage_inputs_shaped_crafting( + event.shaped('sns:ore_sack', [ + 'AAA', + 'BCB', + 'DBE' + ], { + A: 'sns:reinforced_fiber', + B: '#forge:leather', + C: 'sns:unfinished_leather_sack', + D: 'minecraft:name_tag', + E: 'tfc:bone_needle' + } + ) + ).id('sns:crafting/ore_sack') + + + event.recipes.tfc.anvil( + 'sns:buckle', + '#forge:plates/wrought_iron', + [ + 'upset_last', + 'hit_second_last', + 'shrink_any' + ] + ).tier(3) + .id('sns:anvil/buckle') + + event.recipes.tfc.anvil( + '2x sns:buckle', + '#forge:plates/steel', + [ + 'upset_last', + 'hit_second_last', + 'shrink_any' + ] + ).tier(4) + .id('sns:anvil/buckle2') + + event.recipes.gtceu.extruder('sns:buckle') + .itemInputs('#forge:plates/wrought_iron') + .notConsumable('gtceu:small_pipe_extruder_mold') + .itemOutputs('sns:buckle') + .duration(40) + .EUt(GTValues.VA[GTValues.LV]) + + event.custom({ + type: 'vintageimprovements:curving', + ingredients: [{ tag: 'forge:plates/wrought_iron' }], + itemAsHead: 'gtceu:small_pipe_extruder_mold', + results: [{ item: 'sns:buckle' }], + processingTime: 50 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER + }).id('sns:vi/curving/buckle') + + event.recipes.gtceu.extruder('sns:buckle2') + .itemInputs('#forge:plates/steel') + .notConsumable('gtceu:small_pipe_extruder_mold') + .itemOutputs('2x sns:buckle') + .duration(80) + .EUt(GTValues.VA[GTValues.LV]) + + event.custom({ + type: 'vintageimprovements:curving', + ingredients: [{ tag: 'forge:plates/steel' }], + itemAsHead: 'gtceu:small_pipe_extruder_mold', + results: [{ item: '2x sns:buckle' }], + processingTime: 80 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER + }).id('sns:vi/curving/buckle') + + event.shaped('sns:pack_frame', [ + 'AAA', + 'A A', + 'AAA' + ], { + A: '#forge:rods/wrought_iron' + + }).id('sns:shaped/pack_frame') + + event.shaped('2x sns:reinforced_fiber', [ + 'AAA', + 'BBB', + 'AAA' + ], { + A: 'tfc:jute_fiber', + B: '#forge:string' + + }).id('sns:shaped/reinforced_fiber') + + event.shaped('2x sns:reinforced_fiber', [ + ' A ', + 'BBB', + ' C ' + ], { + A: '#forge:rope', + B: '#forge:string', + C: '#forge:tools/knifes' + + }).id('sns:shaped/reinforced_fiber_rope') + + event.recipes.gtceu.assembler('sns:reinforced_fiber') + .itemInputs('2x tfc:jute_fiber', '#forge:string') + .itemOutputs('sns:reinforced_fiber') + .duration(40) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.assembler('sns:reinforced_fabric') + .itemInputs('16x sns:reinforced_fiber') + .itemOutputs('sns:reinforced_fabric') + .circuit(16) + .duration(100) + .EUt(GTValues.VA[GTValues.LV]) + + generateCutterRecipe(event, '#forge:leather', '4x sns:leather_strip', 80, GTValues.VA[GTValues.LV], 'sns:leather_strip_cut') + + event.recipes.gtceu.assembler('sns:bound_leather_strip') + .itemInputs('2x sns:leather_strip', 'sns:reinforced_fiber') + .itemOutputs('sns:bound_leather_strip') + .circuit(3) + .duration(120) + .EUt(GTValues.VA[GTValues.LV]) + + + event.recipes.gtceu.bender('sns:horseshoe_steel_electric_only') + .itemInputs('#forge:rods/steel') + .itemOutputs('sns:metal/horseshoe/steel') + .circuit(4) + .duration(40) + .EUt(GTValues.VA[GTValues.LV]) + event.recipes.gtceu.bender('sns:horseshoe_black_steel_electric_only') + .itemInputs('#forge:rods/black_steel') + .itemOutputs('sns:metal/horseshoe/black_steel') + .circuit(4) + .duration(40) + .EUt(GTValues.VA[GTValues.LV]) + event.recipes.gtceu.bender('sns:horseshoe_blue_steel_electric_only') + .itemInputs('#forge:rods/blue_steel') + .itemOutputs('sns:metal/horseshoe/blue_steel') + .circuit(4) + .duration(40) + .EUt(GTValues.VA[GTValues.LV]) + event.recipes.gtceu.bender('sns:horseshoe_red_steel_electric_only') + .itemInputs('#forge:rods/red_steel') + .itemOutputs('sns:metal/horseshoe/red_steel') + .circuit(4) + .duration(40) + .EUt(GTValues.VA[GTValues.LV]) + +} \ No newline at end of file diff --git a/kubejs/server_scripts/sacksnstuff/tags.js b/kubejs/server_scripts/sacksnstuff/tags.js new file mode 100644 index 000000000..0b123b345 --- /dev/null +++ b/kubejs/server_scripts/sacksnstuff/tags.js @@ -0,0 +1,11 @@ +// priority: 0 +"use strict"; + +function registeSNSItemTags(event) { + + global.SNS_DISABLED_ITEMS.forEach(item => { + event.removeAllTagsFrom(item) + event.add('c:hidden_from_recipe_viewers', item) + }) + +} \ No newline at end of file diff --git a/kubejs/server_scripts/sandworm/recipes.js b/kubejs/server_scripts/sandworm/recipes.js new file mode 100644 index 000000000..ed6bc04cd --- /dev/null +++ b/kubejs/server_scripts/sandworm/recipes.js @@ -0,0 +1,15 @@ +// priority: 0 +"use strict"; + +const registerSandwormRecipes = (event) => { + + event.remove({ mod: 'sandworm_mod'}) + + event.recipes.gtceu.assembler('sandworm_mod:thumper') + .itemInputs('6x #forge:plates/maraging_steel_300', '#gtceu:circuits/iv', 'gtceu:ev_electric_piston') + .inputFluids(Fluid.of('gtceu:radon', 100)) + .itemOutputs('sandworm_mod:thumper') + .duration(200) + .circuit(10) + .EUt(GTValues.VA[GTValues.EV]*2); +} \ No newline at end of file diff --git a/kubejs/server_scripts/soulbound/recipes.js b/kubejs/server_scripts/soulbound/recipes.js new file mode 100644 index 000000000..261449a88 --- /dev/null +++ b/kubejs/server_scripts/soulbound/recipes.js @@ -0,0 +1,25 @@ +// priority: 0 +"use strict"; + +const registerSoulboundRecipes = (event) => { + + global.SOULBINDABLE_ITEMS.forEach(item => { + event.shapeless(Item.of(item, '{soulbindingSoulboundItems:1b}'), ['endermanoverhaul:soul_pearl', item]) + .modifyResult((craftingGrid, result) => { + let orig = craftingGrid.find(Ingredient.of(item)) + + result.nbt.put("Damage", orig.nbt.getInt("Damage")); + if(item === 'ad_astra:space_suit') { + try { + result.nbt.put('BotariumData', orig.nbt.get('BotariumData')) + } catch (exception) { + console.error(exception); + } + } + result.nbt.put('soulbindingSoulboundItems', true) + return result; + }).id(`tfg:soulbind_${item}`); + + }) + +} \ No newline at end of file diff --git a/kubejs/server_scripts/soulbound/tags.js b/kubejs/server_scripts/soulbound/tags.js new file mode 100644 index 000000000..56a7ae883 --- /dev/null +++ b/kubejs/server_scripts/soulbound/tags.js @@ -0,0 +1,10 @@ +// priority: 0 + +"use strict"; + +const registerSoulboundItemTags = (event) => { + + global.SOULBINDABLE_ITEMS.forEach(item => { + event.add('tfg:soulbindable_items', item) + }) +} diff --git a/kubejs/server_scripts/wan_ancient_beasts/tags.js b/kubejs/server_scripts/wan_ancient_beasts/tags.js index 390e92127..7ba132d23 100644 --- a/kubejs/server_scripts/wan_ancient_beasts/tags.js +++ b/kubejs/server_scripts/wan_ancient_beasts/tags.js @@ -25,4 +25,13 @@ const registerWABItemTags = (event) => { event.add('tfc:foods/cooked_meats', 'wan_ancient_beasts:cooked_toxlacanth') event.add('firmalife:foods/cooked_fish', 'wan_ancient_beasts:cooked_toxlacanth') event.add('tfc:food/meats', 'wan_ancient_beasts:cooked_toxlacanth') +} + +const registerWABEntityTypeTags = (event) => { + + event.add('wan_ancient_beasts:eater_ignore', '#wan_ancient_beasts:ancient_mobs') + event.add('wan_ancient_beasts:eater_ignore', 'tfg:sniffer') + event.add('wan_ancient_beasts:eater_ignore', 'tfg:wraptor') + event.add('wan_ancient_beasts:eater_ignore', 'species:springling') + } \ No newline at end of file diff --git a/kubejs/startup_scripts/sacksnsuch/constants.js b/kubejs/startup_scripts/sacksnsuch/constants.js new file mode 100644 index 000000000..082ed5400 --- /dev/null +++ b/kubejs/startup_scripts/sacksnsuch/constants.js @@ -0,0 +1,11 @@ +// priority: 0 +"use strict"; + + +global.SNS_DISABLED_ITEMS = [ + + 'sns:mob_net', + 'sns:lunchbox' + +]; + diff --git a/kubejs/startup_scripts/soulbind/constants.js b/kubejs/startup_scripts/soulbind/constants.js new file mode 100644 index 000000000..4aaa76a8b --- /dev/null +++ b/kubejs/startup_scripts/soulbind/constants.js @@ -0,0 +1,6 @@ +global.SOULBINDABLE_ITEMS = [ + 'ad_astra:space_helmet', + 'ad_astra:space_suit', + 'ad_astra:space_pants', + 'ad_astra:space_boots' + ] \ No newline at end of file diff --git a/pakku-lock.json b/pakku-lock.json index c4f484721..e21eab61b 100644 --- a/pakku-lock.json +++ b/pakku-lock.json @@ -7,6 +7,69 @@ "forge": "47.4.6" }, "projects": [ + { + "pakku_id": "6k7DoFyO7bpHnhyk", + "type": "MOD", + "side": "CLIENT", + "slug": { + "curseforge": "aaa-particles", + "modrinth": "aaa-particles" + }, + "name": { + "curseforge": "AAA Particles", + "modrinth": "AAA Particles" + }, + "id": { + "curseforge": "979809", + "modrinth": "En8uHTOK" + }, + "files": [ + { + "type": "curseforge", + "file_name": "aaa_particles-1.20.1-1.4.11-forge.jar", + "mc_versions": [ + "1.20.1" + ], + "loaders": [ + "neoforge", + "forge" + ], + "release_type": "release", + "url": "https://edge.forgecdn.net/files/6616/719/aaa_particles-1.20.1-1.4.11-forge.jar", + "id": "6616719", + "parent_id": "979809", + "hashes": { + "sha1": "e046caeff220722933cb82097a62412d902f6002", + "md5": "41e2e1bbd89f858b35f280858857323f" + }, + "required_dependencies": [], + "size": 5255759, + "date_published": "2025-06-05T09:17:54.350Z" + }, + { + "type": "modrinth", + "file_name": "aaa_particles-1.20.1-1.4.11-forge.jar", + "mc_versions": [ + "1.20.1" + ], + "loaders": [ + "forge", + "neoforge" + ], + "release_type": "release", + "url": "https://cdn.modrinth.com/data/En8uHTOK/versions/heNkI8gU/aaa_particles-1.20.1-1.4.11-forge.jar", + "id": "heNkI8gU", + "parent_id": "En8uHTOK", + "hashes": { + "sha512": "7d0df9076d1871338556165be8ee3feadfb8e09ab7315ab2726c398f8351ea5e3e0d1907caae2aa9afa5443d9e6ef71d139590887ee0a670a0e4de11dfa0e17b", + "sha1": "e046caeff220722933cb82097a62412d902f6002" + }, + "required_dependencies": [], + "size": 5255759, + "date_published": "2025-06-05T09:23:07.127326Z" + } + ] + }, { "pakku_id": "v1XVLzfV3EJPc5ke", "pakku_links": [ @@ -4483,6 +4546,88 @@ } ] }, + { + "pakku_id": "NTPct5Wu0LfCm96a", + "pakku_links": [ + "6k7DoFyO7bpHnhyk", + "NAvm5gacwCvqJee5", + "pB7ARGecP03UXpd6", + "znIzfNElWkwpdz2V" + ], + "type": "MOD", + "side": "BOTH", + "slug": { + "curseforge": "desert-behemoths-sandworms", + "modrinth": "desert-behemoths-sandworms!" + }, + "name": { + "curseforge": "Desert Behemoths: Sandworms!", + "modrinth": "Desert Behemoths: Sandworms!" + }, + "id": { + "curseforge": "1066153", + "modrinth": "b1GD2Ca2" + }, + "redistributable": false, + "files": [ + { + "type": "curseforge", + "file_name": "sandworm_mod-1.1.1.jar", + "mc_versions": [ + "1.20.1" + ], + "loaders": [ + "neoforge", + "forge" + ], + "release_type": "release", + "url": "https://edge.forgecdn.net/files/5600/383/sandworm_mod-1.1.1.jar", + "id": "5600383", + "parent_id": "1066153", + "hashes": { + "sha1": "c55788dcd8a1d24f4b41f20d40f5b670b163950a", + "md5": "d83733870396560256a5706db01375a5" + }, + "required_dependencies": [ + "979809", + "616457", + "388172" + ], + "size": 4515741, + "date_published": "2024-08-06T00:57:24.447Z" + }, + { + "type": "modrinth", + "file_name": "sandworm_mod-1.1.0.jar", + "mc_versions": [ + "1.20.1", + "1.20.2", + "1.20.3", + "1.20.4", + "1.20.5", + "1.20.6" + ], + "loaders": [ + "forge" + ], + "release_type": "release", + "url": "https://cdn.modrinth.com/data/b1GD2Ca2/versions/44Ejqnzj/sandworm_mod-1.1.0.jar", + "id": "44Ejqnzj", + "parent_id": "b1GD2Ca2", + "hashes": { + "sha512": "d3e21410f3369bf5437cf35dd68eaa619b72d431d90be9106497a5f934e1ab9e3fb2bd5054022ab2f310e8e21e654a088a2040bb793b3e69a26d99644381e088", + "sha1": "69ac6ea39135c26a2625c0dce585f2594fd4ca52" + }, + "required_dependencies": [ + "bN3xUWdo", + "En8uHTOK", + "8BmcQJ2H" + ], + "size": 4515705, + "date_published": "2024-07-30T08:15:53.352176Z" + } + ] + }, { "pakku_id": "qTkHGASztASuivVS", "type": "MOD", @@ -8545,6 +8690,68 @@ } ] }, + { + "pakku_id": "znIzfNElWkwpdz2V", + "type": "MOD", + "side": "BOTH", + "slug": { + "modrinth": "lodestonelib", + "curseforge": "lodestone" + }, + "name": { + "modrinth": "Lodestone", + "curseforge": "Lodestone" + }, + "id": { + "modrinth": "bN3xUWdo", + "curseforge": "616457" + }, + "files": [ + { + "type": "modrinth", + "file_name": "lodestone-1.20.1-1.6.4.1.jar", + "mc_versions": [ + "1.20.1" + ], + "loaders": [ + "forge" + ], + "release_type": "release", + "url": "https://cdn.modrinth.com/data/bN3xUWdo/versions/dRIycWqx/lodestone-1.20.1-1.6.4.1.jar", + "id": "dRIycWqx", + "parent_id": "bN3xUWdo", + "hashes": { + "sha512": "fec5107deb73c06c4b1756349cb874e0933c4181fd20e8528e46a24e35ccb048898c8607830deea3242d7303784a9c3a03f3fadd40d13fb6dc27a34a77f5cc85", + "sha1": "e6346060ae70cbf103b231d8a1536bcd044c84a8" + }, + "required_dependencies": [], + "size": 670934, + "date_published": "2025-02-20T16:05:31.211605Z" + }, + { + "type": "curseforge", + "file_name": "lodestone-1.20.1-1.6.4.1.jar", + "mc_versions": [ + "1.20.1" + ], + "loaders": [ + "neoforge", + "forge" + ], + "release_type": "release", + "url": "https://edge.forgecdn.net/files/6213/794/lodestone-1.20.1-1.6.4.1.jar", + "id": "6213794", + "parent_id": "616457", + "hashes": { + "sha1": "e6346060ae70cbf103b231d8a1536bcd044c84a8", + "md5": "2816fa972ca3a21e6e38783f979955be" + }, + "required_dependencies": [], + "size": 670934, + "date_published": "2025-02-20T15:59:37.757Z" + } + ] + }, { "pakku_id": "9RZJfprxqWyxsrEF", "type": "MOD", @@ -11150,6 +11357,76 @@ } ] }, + { + "pakku_id": "zOlM6hm7KZ1BAq5R", + "pakku_links": [ + "64uacGcEw697jVGs" + ], + "type": "MOD", + "side": "BOTH", + "slug": { + "curseforge": "sacks-n-such", + "modrinth": "sacks-n-such" + }, + "name": { + "curseforge": "Sacks 'N Such", + "modrinth": "Sacks 'N Such" + }, + "id": { + "curseforge": "695822", + "modrinth": "PhnM3Lkv" + }, + "files": [ + { + "type": "curseforge", + "file_name": "Sacks 'N Such-1.20.1-1.2.3-all.jar", + "mc_versions": [ + "1.20.1" + ], + "loaders": [ + "neoforge", + "forge" + ], + "release_type": "release", + "url": "https://edge.forgecdn.net/files/6464/916/Sacks 'N Such-1.20.1-1.2.3-all.jar", + "id": "6464916", + "parent_id": "695822", + "hashes": { + "sha1": "490701ab6768325bf455d19455966567cd01996b", + "md5": "abcc4d700ed32305824902e4f2b29bbb" + }, + "required_dependencies": [ + "302973" + ], + "size": 660385, + "date_published": "2025-04-25T23:21:11.043Z" + }, + { + "type": "modrinth", + "file_name": "Sacks 'N Such-1.20.1-1.2.3-all.jar", + "mc_versions": [ + "1.20.1" + ], + "loaders": [ + "forge", + "neoforge" + ], + "release_type": "release", + "url": "https://cdn.modrinth.com/data/PhnM3Lkv/versions/tXZzHNm6/Sacks 'N Such-1.20.1-1.2.3-all.jar", + "id": "tXZzHNm6", + "parent_id": "PhnM3Lkv", + "hashes": { + "sha512": "cd1a5514f6231eee01e514be4bd8e05cdcf5411df68327b83586996ddae15d5c6fda3ff2edec22c3aad6ccb0052e45a73c98a19e2832671f34291e2afd7df358", + "sha1": "490701ab6768325bf455d19455966567cd01996b" + }, + "required_dependencies": [ + "JaCEZUhg" + ], + "size": 660385, + "date_published": "2025-04-25T23:21:12.798597Z" + } + ] + }, { "pakku_id": "87oulFfvlQlJm2Pt", "type": "MOD", @@ -11810,6 +12087,43 @@ } ] }, + { + "pakku_id": "AZEF3WB6o1ORFoD1", + "type": "MOD", + "slug": { + "curseforge": "soulbinding" + }, + "name": { + "curseforge": "Soulbinding" + }, + "id": { + "curseforge": "925229" + }, + "redistributable": false, + "files": [ + { + "type": "curseforge", + "file_name": "SoulBinding1.20.1(Forge)vs1.0.2.jar", + "mc_versions": [ + "1.20.1" + ], + "loaders": [ + "forge" + ], + "release_type": "release", + "url": "https://edge.forgecdn.net/files/4928/200/SoulBinding1.20.1(Forge)vs1.0.2.jar", + "id": "4928200", + "parent_id": "925229", + "hashes": { + "sha1": "b794e39c75a28753900dfe81d97137bc1d7b50d7", + "md5": "fa3f5d7f9a0e01037f39de4ca8fdec1f" + }, + "required_dependencies": [], + "size": 23878, + "date_published": "2023-12-05T04:59:29.643Z" + } + ] + }, { "pakku_id": "ztIkqvZk37z4FIED", "type": "MOD", @@ -14286,4 +14600,4 @@ } ], "lockfile_version": 1 -} \ No newline at end of file +}