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>
This commit is contained in:
GameStar 2025-08-26 18:09:54 -05:00 committed by GitHub
parent 47b288eea2
commit d59f73b1ee
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
16 changed files with 998 additions and 1 deletions

1
.gitignore vendored
View file

@ -124,3 +124,4 @@ icon.png
.pakku/server-overrides/user_jvm_args.txt
/tacz/tacz_default_gun
EffekseerNativeForJava.dll

View file

@ -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

8
config/sns-client.toml Normal file
View file

@ -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"

3
config/sns-common.toml Normal file
View file

@ -0,0 +1,3 @@
#Do pick block for Item Container. Server will trump client config!
doPickBlock = true

View file

@ -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

View file

@ -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

View file

@ -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)

View file

@ -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])
}

View file

@ -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)
})
}

View file

@ -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);
}

View file

@ -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}`);
})
}

View file

@ -0,0 +1,10 @@
// priority: 0
"use strict";
const registerSoulboundItemTags = (event) => {
global.SOULBINDABLE_ITEMS.forEach(item => {
event.add('tfg:soulbindable_items', item)
})
}

View file

@ -26,3 +26,12 @@ const registerWABItemTags = (event) => {
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')
}

View file

@ -0,0 +1,11 @@
// priority: 0
"use strict";
global.SNS_DISABLED_ITEMS = [
'sns:mob_net',
'sns:lunchbox'
];

View file

@ -0,0 +1,6 @@
global.SOULBINDABLE_ITEMS = [
'ad_astra:space_helmet',
'ad_astra:space_suit',
'ad_astra:space_pants',
'ad_astra:space_boots'
]

View file

@ -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",