console.info('Hello, World! (Loaded server scripts)')
ServerEvents.recipes(event => {

event.shaped(
    Item.of('create:cardboard_sword'),
    [
      ' A ',
      ' A ',
      ' A '
    ],
    {
      A: '#forge:rods/all_metal'
    }
)

event.replaceInput(
  { input: 'create:copper_sheet' }, 
  'create:copper_sheet',          
  '#forge:plates/copper'         
)

event.custom({
    "type": "lychee:block_clicking",
    "item_in": {
        "item": "air"
    },
    "block_in": '#forge:stone',
    "post": [
        {
            "type": "drop_item",
            "item": 'twigs:pebble',
            "contextual": {
                "type": "chance",
                "chance": 0.25
            }
        },
        {
          "type": "prevent_default"
        }
      ]
})

event.custom({
  "type": "create:sandpaper_polishing",
  "ingredients": [
    {
      "item": "kubejs:rough_diamond"
    }
  ],
  "results": [
    {
      "item": "minecraft:diamond"
    }
  ]
})

event.custom({
  "type": "create:sandpaper_polishing",
  "ingredients": [
    {
      "item": "kubejs:rough_emerald"
    }
  ],
  "results": [
    {
      "item": "minecraft:emerald"
    }
  ]
})

event.shaped(
    Item.of('hexerei:pestle_and_mortar'),
    [
      '  B',
      'A A',
      'AAA'
    ],
    {
      A: '#forge:stone',
      B: 'create:andesite_alloy'
    }
)

//crush raw ore in the mortar to get dust
function rawCrushing(mortarInput, output) {
  event.custom({
        "type": 'hexerei:pestle_and_mortar',
        "ingredients": [
            { 
              "item": mortarInput 
            }
        ],
        "output": {
            "item": output, 
            "count": 1 
        },
        "grindingTime": 80
        
    })
}
rawCrushing('minecraft:raw_iron', 'create:crushed_raw_iron')
rawCrushing('minecraft:raw_copper', 'create:crushed_raw_copper')
rawCrushing('minecraft:raw_gold', 'create:crushed_raw_gold')
rawCrushing('occultism:raw_silver', 'create:crushed_raw_silver')
rawCrushing('occultism:raw_iesnium', 'kubejs:crushed_raw_iesnium')
rawCrushing('mekanism:raw_osmium', 'create:crushed_raw_osmium')
rawCrushing('mekanism:raw_uranium', 'create:crushed_raw_uranium')
rawCrushing('thermal:raw_tin', 'create:crushed_raw_tin')
rawCrushing('thermal:raw_lead', 'create:crushed_raw_lead')
rawCrushing('thermal:raw_nickel', 'create:crushed_raw_nickel')
rawCrushing('xycraft_world:raw_aluminum', 'create:crushed_raw_aluminum')
rawCrushing('create:raw_zinc', 'create:crushed_raw_zinc')

function rawCrushing2(mortarInput, output) {
  event.custom({
        "type": 'hexerei:pestle_and_mortar',
        "ingredients": [
            { 
              "item": mortarInput
            },
            { 
              "item": mortarInput
            }
        ],
        "output": {
            "item": output, 
            "count": 2 
        },
        "grindingTime": 100
        
    })
}
rawCrushing2('minecraft:raw_iron', 'create:crushed_raw_iron')
rawCrushing2('minecraft:raw_copper', 'create:crushed_raw_copper')
rawCrushing2('minecraft:raw_gold', 'create:crushed_raw_gold')
rawCrushing2('occultism:raw_silver', 'create:crushed_raw_silver')
rawCrushing2('occultism:raw_iesnium', 'kubejs:crushed_raw_iesnium')
rawCrushing2('mekanism:raw_osmium', 'create:crushed_raw_osmium')
rawCrushing2('mekanism:raw_uranium', 'create:crushed_raw_uranium')
rawCrushing2('thermal:raw_tin', 'create:crushed_raw_tin')
rawCrushing2('thermal:raw_lead', 'create:crushed_raw_lead')
rawCrushing2('thermal:raw_nickel', 'create:crushed_raw_nickel')
rawCrushing2('xycraft_world:raw_aluminum', 'create:crushed_raw_aluminum')
rawCrushing2('create:raw_zinc', 'create:crushed_raw_zinc')

function rawCrushing3(mortarInput, output) {
  event.custom({
        "type": 'hexerei:pestle_and_mortar',
        "ingredients": [
            { 
              "item": mortarInput
            },
            { 
              "item": mortarInput
            },
            { 
              "item": mortarInput
            }
        ],
        "output": {
            "item": output, 
            "count": 3 
        },
        "grindingTime": 120
        
    })
}
rawCrushing3('minecraft:raw_iron', 'create:crushed_raw_iron')
rawCrushing3('minecraft:raw_copper', 'create:crushed_raw_copper')
rawCrushing3('minecraft:raw_gold', 'create:crushed_raw_gold')
rawCrushing3('occultism:raw_silver', 'create:crushed_raw_silver')
rawCrushing3('occultism:raw_iesnium', 'kubejs:crushed_raw_iesnium')
rawCrushing3('mekanism:raw_osmium', 'create:crushed_raw_osmium')
rawCrushing3('mekanism:raw_uranium', 'create:crushed_raw_uranium')
rawCrushing3('thermal:raw_tin', 'create:crushed_raw_tin')
rawCrushing3('thermal:raw_lead', 'create:crushed_raw_lead')
rawCrushing3('thermal:raw_nickel', 'create:crushed_raw_nickel')
rawCrushing3('xycraft_world:raw_aluminum', 'create:crushed_raw_aluminum')
rawCrushing3('create:raw_zinc', 'create:crushed_raw_zinc')

function rawCrushing4(mortarInput, output) {
  event.custom({
        "type": 'hexerei:pestle_and_mortar',
        "ingredients": [
            { 
              "item": mortarInput
            },
            { 
              "item": mortarInput
            },
            { 
              "item": mortarInput
            },
            { 
              "item": mortarInput
            }
        ],
        "output": {
            "item": output, 
            "count": 4 
        },
        "grindingTime": 140
        
    })
}
rawCrushing4('minecraft:raw_iron', 'create:crushed_raw_iron')
rawCrushing4('minecraft:raw_copper', 'create:crushed_raw_copper')
rawCrushing4('minecraft:raw_gold', 'create:crushed_raw_gold')
rawCrushing4('occultism:raw_silver', 'create:crushed_raw_silver')
rawCrushing4('occultism:raw_iesnium', 'kubejs:crushed_raw_iesnium')
rawCrushing4('mekanism:raw_osmium', 'create:crushed_raw_osmium')
rawCrushing4('mekanism:raw_uranium', 'create:crushed_raw_uranium')
rawCrushing4('thermal:raw_tin', 'create:crushed_raw_tin')
rawCrushing4('thermal:raw_lead', 'create:crushed_raw_lead')
rawCrushing4('thermal:raw_nickel', 'create:crushed_raw_nickel')
rawCrushing4('xycraft_world:raw_aluminum', 'create:crushed_raw_aluminum')
rawCrushing4('create:raw_zinc', 'create:crushed_raw_zinc')

function rawCrushing5(mortarInput, output) {
  event.custom({
        "type": 'hexerei:pestle_and_mortar',
        "ingredients": [
            { 
              "item": mortarInput
            },
            { 
              "item": mortarInput
            },
            { 
              "item": mortarInput
            },
            { 
              "item": mortarInput
            },
            { 
              "item": mortarInput
            }
        ],
        "output": {
            "item": output, 
            "count": 5
        },
        "grindingTime": 180
        
    })
}
rawCrushing5('minecraft:raw_iron', 'create:crushed_raw_iron')
rawCrushing5('minecraft:raw_copper', 'create:crushed_raw_copper')
rawCrushing5('minecraft:raw_gold', 'create:crushed_raw_gold')
rawCrushing5('occultism:raw_silver', 'create:crushed_raw_silver')
rawCrushing5('occultism:raw_iesnium', 'kubejs:crushed_raw_iesnium')
rawCrushing5('mekanism:raw_osmium', 'create:crushed_raw_osmium')
rawCrushing5('mekanism:raw_uranium', 'create:crushed_raw_uranium')
rawCrushing5('thermal:raw_tin', 'create:crushed_raw_tin')
rawCrushing5('thermal:raw_lead', 'create:crushed_raw_lead')
rawCrushing5('thermal:raw_nickel', 'create:crushed_raw_nickel')
rawCrushing5('xycraft_world:raw_aluminum', 'create:crushed_raw_aluminum')
rawCrushing5('create:raw_zinc', 'create:crushed_raw_zinc')

//crush botania flowers in a mortar to get petals
const flowColours = ['white', 'light_gray', 'gray', 'black', 'red', 'yellow', 'orange', 'brown', 'cyan', 'light_blue', 'blue', 'lime', 'green', 'purple', 'magenta', 'pink']
flowColours.forEach(colour => { 
  event.custom({
        "type": 'hexerei:pestle_and_mortar',
        "ingredients": [
            { "item": `botania:${colour}_mystical_flower` }
        ],
        "output": {
            "item": `botania:${colour}_petal`, 
            "count": 2 
        },
        "grindingTime": 50   
    })
  event.custom({
        "type": 'hexerei:pestle_and_mortar',
        "ingredients": [
            { "item": `botania:${colour}_double_flower` }
        ],
        "output": {
            "item": `botania:${colour}_petal`, 
            "count": 4 
        },
        "grindingTime": 80
})
})


const ores = ['zinc', 'uranium', 'tin', 'silver', 'platinum', 'osmium', 'nickel', 'lead', 'iron', 'gold', 'copper', 'aluminum']
ores.forEach(ore => {
event.remove({ type: "immersiveengineering:hammer_crushing", output: `#forge:dusts/${ore}`})
})
ores.forEach(ore => {
  event.remove([{ type: 'minecraft:smelting', output: `#forge:ingots/${ore}`}, { type: 'minecraft:blasting', output: `#forge:ingots/${ore}`}])
})

function oreSmelt (oreIn, oreOut){
  event.smelting( oreOut, oreIn).xp(0.50)
  event.blasting( oreOut, oreIn).xp(0.85)
}
oreSmelt('create:crushed_raw_iron', 'minecraft:iron_ingot')
oreSmelt('create:crushed_raw_copper', 'minecraft:copper_ingot')
oreSmelt('create:crushed_raw_gold', 'minecraft:gold_ingot')
oreSmelt('create:crushed_raw_osmium', 'mekanism:ingot_osmium')
oreSmelt('create:crushed_raw_tin', 'thermal:tin_ingot')
oreSmelt('create:crushed_raw_lead', 'thermal:lead_ingot')
oreSmelt('create:crushed_raw_uranium', 'mekanism:ingot_uranium')
oreSmelt('create:crushed_raw_silver', 'occultism:silver_ingot')
oreSmelt('kubejs:crushed_raw_iesnium', 'occultism:iesnium_ingot')
oreSmelt('create:crushed_raw_aluminum', 'xycraft_world:aluminum_ingot')
oreSmelt('create:crushed_raw_nickel', 'thermal:nickel_ingot')
oreSmelt('create:crushed_raw_zinc', 'create:zinc_ingot')


event.custom({
    "type": "lychee:block_clicking",
    "item_in": {
        "item": "minecraft:iron_ingot"
    },
    "block_in": '#forge:chests',
    "post": [
        {
            "type": "drop_item",
            "item": "kubejs:ron_ingot"
        }
    ]
})

event.remove({output: 'inventorypets:item_petrifier'})
event.shaped(
  Item.of('inventorypets:item_petrifier'),
  [
    ' BA',
    ' BB',
    'C  '
  ],
  {
      A: 'minecraft:slime_block',
      B: 'minecraft:gold_ingot',
      C: 'actuallyadditions:emeradic_crystal_shard'
  }
)


})
