250 lines
10 KiB
JavaScript
250 lines
10 KiB
JavaScript
ServerEvents.tags('item', event => {
|
|
event.add('blue_skies:planks', /blue_skies:.+?_planks/)
|
|
event.add('byg:planks', /byg:.+?_planks/)
|
|
let chestsMissingTags = ['hexerei:willow_chest', 'hexerei:mahogany_chest', 'ars_nouveau:archwood_chest', 'ad_astra:strophar_chest', 'ad_astra:aeronos_chest']
|
|
event.add('forge:chests', chestsMissingTags)
|
|
event.add('forge:chests/wooden', chestsMissingTags)
|
|
|
|
// remove dye tag from flowers with double dye tag
|
|
event.remove('byg:purple_dye', 'byg:tall_allium')
|
|
event.remove('byg:pink_dye', ['byg:japanese_orchid', 'byg:tall_pink_allium'])
|
|
|
|
})
|
|
|
|
ServerEvents.recipes(event => {
|
|
/* Fix Overlapping Recipes
|
|
/polymorph conflicts
|
|
*/
|
|
|
|
// Sleeping Bags / Wool Slabs
|
|
// sleeping bags
|
|
event.forEachRecipe({ type: 'minecraft:crafting_shaped', id: /comforts:sleeping_bag_.+/ }, recipe => {
|
|
let out = recipe.json.get('result')
|
|
let input = recipe.json.get('key').get('a')
|
|
event.shaped(Item.of(out), [' ', ' ', 'aaa'], { a: Ingredient.of(input) }).noMirror().noShrink().id(`kubejs:${recipe.getId().replace(':', '/')}`)
|
|
})
|
|
event.remove({ id: /comforts:sleeping_bag_.+/ })
|
|
// wool slabs
|
|
event.forEachRecipe({ type: 'minecraft:crafting_shaped', id: /absentbydesign:slab_wool_.+/ }, recipe => {
|
|
let out = recipe.json.get('result')
|
|
let input = recipe.json.get('key').get('#')
|
|
event.shaped(Item.of(out), [' ', '###', ' '], { '#': Ingredient.of(input) }).noMirror().noShrink().id(`kubejs:${recipe.getId().replace(':', '/')}`)
|
|
})
|
|
event.remove({ id: /absentbydesign:slab_wool_.+/ })
|
|
|
|
// Structurize / Construction Wand
|
|
event.remove({ id: 'structurize:sceptergold' })
|
|
event.shaped('structurize:sceptergold', ['C ', ' S ', ' S'], { C: '#minecraft:stone_crafting_materials', S: '#forge:rods/wooden' }).noMirror().id(`kubejs:structurize/sceptergold`)
|
|
event.remove({ id: 'constructionwand:stone_wand' })
|
|
event.shaped('constructionwand:stone_wand', [' C', ' S ', 'S '], { C: '#minecraft:stone_crafting_materials', S: '#forge:rods/wooden' }).noMirror().id(`kubejs:constructionwand/stone_wand`)
|
|
event.remove({ id: 'structurize:sceptersteel' })
|
|
event.shaped('structurize:sceptersteel', ['C ', ' S ', ' S'], { C: '#forge:ingots/iron', S: '#forge:rods/wooden' }).noMirror().id(`kubejs:structurize/sceptersteel`)
|
|
event.remove({ id: 'constructionwand:iron_wand' })
|
|
event.shaped('constructionwand:iron_wand', [' C', ' S ', 'S '], { C: '#forge:ingots/iron', S: '#forge:rods/wooden' }).noMirror().id(`kubejs:constructionwand/iron_wand`)
|
|
|
|
// Blue Skies tools
|
|
let planks = Ingredient.of('#minecraft:planks').subtract(Ingredient.of('#blue_skies:planks'))
|
|
event.forEachRecipe({ id: /minecraft:wooden_(hoe|shovel|pickaxe|sword|axe)/ }, recipe => {
|
|
let json = recipe.json
|
|
let key = json.get('key')
|
|
key.add('X', planks.toJson())
|
|
json.add('key', key)
|
|
recipe.json = json
|
|
})
|
|
event.forEachRecipe({ id: 'minecraft:stick' }, recipe => {
|
|
let json = recipe.json
|
|
let key = json.get('key')
|
|
key.add('#', planks.toJson())
|
|
json.add('key', key)
|
|
recipe.json = json
|
|
})
|
|
|
|
let cobble = Ingredient.of('#quark:stone_tool_materials').subtract(Ingredient.of('#blue_skies:cobblestone'))
|
|
event.forEachRecipe({ id: /quark:tweaks\/crafting\/utility\/tools\/stone_(hoe|shovel|pickaxe|sword|axe)/ }, recipe => {
|
|
let json = recipe.json
|
|
let key = json.get('key')
|
|
key.add('X', cobble.toJson())
|
|
json.add('key', key)
|
|
recipe.json = json
|
|
})
|
|
|
|
// So many crafting tables
|
|
let tablePlanks = planks.subtract(Ingredient.of('#byg:planks'))
|
|
event.forEachRecipe({ id: 'minecraft:crafting_table' }, recipe => {
|
|
let json = recipe.json
|
|
let key = json.get('key')
|
|
key.add('#', tablePlanks.toJson())
|
|
json.add('key', key)
|
|
recipe.json = json
|
|
})
|
|
|
|
// Basic Chest readdition for planks without chests
|
|
let hasChest = Ingredient.of([
|
|
'#blue_skies:planks',
|
|
'#hexerei:willow_planks',
|
|
'#hexerei:mahogany_planks',
|
|
'ad_astra:strophar_planks',
|
|
'ad_astra:aeronos_planks',
|
|
'ars_nouveau:archwood_planks',
|
|
'quark:blossom_planks',
|
|
'quark:azalea_planks',
|
|
'quark:ancient_planks',
|
|
'minecraft:oak_planks',
|
|
'minecraft:spruce_planks',
|
|
'minecraft:birch_planks',
|
|
'minecraft:jungle_planks',
|
|
'minecraft:acacia_planks',
|
|
'minecraft:dark_oak_planks',
|
|
'minecraft:crimson_planks',
|
|
'minecraft:warped_planks',
|
|
'minecraft:mangrove_planks',
|
|
'twilightforest:twilight_oak_planks',
|
|
'twilightforest:canopy_planks',
|
|
'twilightforest:mangrove_planks',
|
|
'twilightforest:dark_planks',
|
|
'twilightforest:time_planks',
|
|
'twilightforest:transformation_planks',
|
|
'twilightforest:mining_planks',
|
|
'twilightforest:sorting_planks',
|
|
])
|
|
let chestPlanks = Ingredient.of('#minecraft:planks').subtract(hasChest)
|
|
event.shaped('minecraft:chest', ['PPP', 'P P', 'PPP'], { P: chestPlanks }).id('kubejs:chest')
|
|
// add chest to plain chest recipes
|
|
event.remove({ id: 'quark:building/crafting/chests/chest_revert' })
|
|
event.remove({ id: 'ars_nouveau:archwood_to_chest' })
|
|
let convertableChests = Ingredient.of('#forge:chests/wooden').subtract(Ingredient.of('#forge:chests/trapped')).subtract('minecraft:chest')
|
|
event.shapeless('minecraft:chest', convertableChests).id('kubejs:chest/plain')
|
|
|
|
// Rechiseled Chisel / Croptopia Knife
|
|
event.remove({ id: 'rechiseled:chisel' })
|
|
event.shaped('rechiseled:chisel', ['C ', ' S'], { C: '#forge:ingots/iron', S: '#forge:rods/wooden' }).noMirror().id(`kubejs:rechiseled/chisel`)
|
|
event.remove({ id: 'croptopia:knife' })
|
|
event.shaped('croptopia:knife', [' C', 'S '], { C: '#forge:ingots/iron', S: '#forge:rods/wooden' }).noMirror().id(`kubejs:croptopia/knife`)
|
|
|
|
// Mangrove ABD plank wall (match other plank wall recipes)
|
|
event.remove({ id: 'absentbydesign:wall_mangrove_planks' })
|
|
event.shaped('absentbydesign:wall_mangrove_planks', [' ', '###', '# #'], { '#': 'minecraft:mangrove_planks' })
|
|
|
|
// Remove minecraft recipes, mods add better versions
|
|
event.remove({ id: 'minecraft:cake' })
|
|
event.remove({ id: 'minecraft:daylight_detector' })
|
|
event.remove({ id: 'minecraft:comparator' })
|
|
event.remove({ id: 'minecraft:beehive' })
|
|
|
|
// Tiny Coal
|
|
event.remove({ id: 'additional_lights:fire_for_standing_torch_s' })
|
|
event.shaped('additional_lights:fire_for_standing_torch_s', ['S', 'C'], { S: '#forge:rods/wooden', C: '#minecraft:coals' })
|
|
|
|
// Spirit soul sand 1x
|
|
event.remove({ id: 'spirit:crafting/compressed_soul_sand' })
|
|
event.remove({ id: 'spirit:crafting/decompressed_soul_sand' })
|
|
event.custom({
|
|
"type": "spirit:soul_engulfing",
|
|
"input": {
|
|
"ingredient": { "item": "minecraft:iron_block" },
|
|
"multiblock": {
|
|
"pattern": [
|
|
[
|
|
" ",
|
|
" @ ",
|
|
" "
|
|
],
|
|
[
|
|
" S ",
|
|
"SXS",
|
|
" S "
|
|
]
|
|
],
|
|
"keys": {
|
|
"S": {
|
|
"block": "spirit:compressed_soul_powder_block"
|
|
},
|
|
"X": {
|
|
"block": "allthecompressed:soul_sand_block_1x"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"duration": 60,
|
|
"outputItem": "spirit:soul_steel_block"
|
|
}).id('spirit:soul_engulfing/soul_steel_block')
|
|
|
|
// quark's log to stick recipe, but botania safe
|
|
let logSticks = Ingredient.of('#minecraft:logs').subtract(Ingredient.of(['#botania:livingwood_logs', '#botania:dreamwood_logs']))
|
|
event.shaped('16x minecraft:stick', ['s', 's'], { s: logSticks }).id('kubejs:easy_sticks')
|
|
|
|
// duplicate and misspelled recipes?
|
|
let bygRemovals = [
|
|
'byg:rainbow_eucalpytus_door',
|
|
'byg:rainbow_eucalpytus_trapdoor',
|
|
'byg:jacaranda_boookshelf',
|
|
]
|
|
bygRemovals.forEach(removeId => {
|
|
event.remove({ id: removeId })
|
|
})
|
|
|
|
// thermium lamp same recipe as lantern
|
|
event.remove({ id: 'byg:therium_lamp' })
|
|
event.shaped('byg:therium_lamp',
|
|
['NRN', 'RTR', 'NRN'],
|
|
{ N: '#forge:nuggets/iron', R: '#forge:dusts/redstone', T: 'byg:therium_crystal_shard' }
|
|
).id('kubejs:byg/therium_lamp')
|
|
|
|
// duplicate abd and quark
|
|
let abdRemovals = [
|
|
'absentbydesign:slab_tuff',
|
|
'absentbydesign:stairs_tuff',
|
|
'absentbydesign:wall_tuff',
|
|
'absentbydesign:wall_calcite',
|
|
'absentbydesign:stairs_calcite',
|
|
'absentbydesign:slab_calcite'
|
|
]
|
|
abdRemovals.forEach(removeId => {
|
|
event.remove({ id: removeId })
|
|
})
|
|
|
|
// ad astra
|
|
event.remove({id: 'ad_astra:recipes/moon_stone_brick_slab'})
|
|
event.shaped('6x ad_astra:moon_stone_brick_slab', ['BBB'], {B:'ad_astra:moon_stone_bricks'}).id('kubejs:ad_astra/recipes/moon_stone_brick_slab');
|
|
// stone -> polished -> bricks
|
|
['mercury_stone', 'glacio_stone','moon_stone', 'venus_stone', 'mars_stone', 'permafrost'].forEach(stone => {
|
|
event.remove({id:`ad_astra:recipes/${stone}_bricks`})
|
|
event.shaped(`4x ad_astra:${stone}_bricks`, ['BB','BB'], {B:`ad_astra:polished_${stone}`}).id(`kubejs:ad_astra/recipes/${stone}_bricks`)
|
|
})
|
|
|
|
// Functional storage cheap drawers (1x technically conflicts with quark chest to vanilla chest)
|
|
event.remove({id: 'functionalstorage:oak_drawer_alternate_x1'})
|
|
event.remove({id: 'functionalstorage:oak_drawer_alternate_x2'})
|
|
event.remove({id: 'functionalstorage:oak_drawer_alternate_x4'})
|
|
})
|
|
|
|
// convert abd blocks to quark on break
|
|
ServerEvents.blockLootTables(event => {
|
|
['calcite', 'tuff'].forEach(material => {
|
|
['stairs', 'wall'].forEach(type => {
|
|
event.modifyBlock(`absentbydesign:${type}_${material}`, loot => {
|
|
loot.clearPools()
|
|
loot.addPool(pool => {
|
|
pool.addItem(`quark:${material}_${type}`)
|
|
pool.survivesExplosion()
|
|
})
|
|
})
|
|
})
|
|
event.modifyBlock(`absentbydesign:slab_${material}`, loot => {
|
|
loot.clearPools()
|
|
loot.addPool(pool => {
|
|
let entry = pool.addItem(`quark:${material}_slab`)
|
|
entry.addFunction({ function: "minecraft:explosion_decay" })
|
|
entry.addConditionalFunction(func => {
|
|
func.addFunction({ function: 'minecraft:set_count', count: 2 })
|
|
func.addCondition({
|
|
"condition": "minecraft:block_state_property",
|
|
"block": `absentbydesign:slab_${material}`,
|
|
"properties": { "type": "double"}
|
|
})
|
|
})
|
|
})
|
|
})
|
|
})
|
|
})
|