本篇教程由作者设定未经允许禁止转载。


本教程的资料来源于官方WIKI

开始要做的

  1. 首先把GrS放入mods文件,并启动一次,让他生成文件.

    然后打开:minecraft\groovy\postInit 这里就是存放脚本的地方.

    使用 VScode 或其他文本编辑器打开文件.

注意事项

  • 脚本必须是以下格式:  任意名称.groovy

  • 脚本和文件夹可以具有任何名称.

  • 脚本必须在要执行的runConfig中指定加载阶段(默认无需更改).

  • preInit阶段.用于注册自定义物品/方块/流体.

  • postInit阶段.用于存放魔改文件,可热重载.

  • init阶段.也可存放魔改文件.但无法热重载.

  • 热重载前需清除缓存


会用到的指令

  • 获取手上物品(目视方块)数据/grs hand

  • 清除缓存/grs deleteScriptCache

  • 热重载/grs reload

  • 输出日志/grs log

魔改工作台配方

添加工作台配方

//创建一个有序配方

    crafting.shapedBuilder()          
            .name('配方名')            // 配方名
            .output(输出物品 * 数量)      // 输出物品 (*数量)可省略
            .matrix('NIN',               // 配方格式
                    'DSD',              
                    'NIN')
            .key('N', 输入物品)  // 将物品定义为N
            .key('D', 输入物品)  // 将物品定义为D
            .key('S', 输入物品)  // 将物品定义为S
            .register()          // 结束
            

//创建一个有序配方

    crafting.shapedBuilder()
            .name('配方名') // 配方名
            .output(输出物品 * 数量) // 输出物品 (*数量)可省略
            .matrix('N N', // 可省略较小配方的行和列
                    ' S ',) // 希望插槽为空打空格即可
            .key('N', 输入物品) // 将物品定义为N
            .key('S', 输入物品) // 将物品定义为S
            .register() // 结束


// 创建一个无序配方

    crafting.shapelessBuilder() 
            .name('配方名') // 配方名
            .output(输出物品 * 数量) // 输出物品 (*数量)可省略
            .input(输入物品1)                        
            .input(输入物品2)                        
            .input(输入物品3, 输入物品4)    
            .register()

另一种方式 

//添加一个3*3的有序配方,
    crafting.addShaped(输出物品, [
        [输入物品1, 输入物品2, 输入物品3],
        [输入物品4, 输入物品5, 输入物品6],
        [输入物品7, 输入物品8, 输入物品9]
    ])

//添加一个2*2的配方
    crafting.addShaped(输出物品, [
        [输入物品1, 输入物品2],
        [输入物品3, 输入物品4]
    ])
    
//添加一个无序配方.
    crafting.addShapeless(输出物品, [输入物品1, 输入物品2, 输入物品3])
    
//八个泥土围一圈合成四个黏土块
    crafting.addShaped(item('minecraft:clay')*4, [
        [item('minecraft:dirt'), item('minecraft:dirt'), item('minecraft:dirt')],
        [item('minecraft:dirt'), null, item('minecraft:dirt')],
        [item('minecraft:dirt'), item('minecraft:dirt'), item('minecraft:dirt')]
    ])
    
//三个木板竖着合成一个木棍
crafting.addShaped(item('minecraft:stick'), [
    [ore('plankWood')],
    [ore('plankWood')],
    [ore('plankWood')]
])

//一个金锭和一个黏土无序合成成钻石
crafting.addShapeless(item('minecraft:diamond'), [item('minecraft:clay_ball'), item('minecraft:gold_ingot')])

移除工作台配方

crafting.remove(删除物品)
//也可以写成
crafting.removeByOutput(删除物品)

魔改熔炉配方

添加熔炼配方

furnace.add(输入物品, 输出物品, 经验数量f)
//(经验数量f)可省略

删除熔炼配方

furnace.removeByInput(输入物品)

矿辞修改

添加矿辞

//三种方法都行
oreDict.add("amogus",item('minecraft:iron_ingot'))
//oreDict.add("矿辞",物品)
item('minecraft:iron_ingot').addOreDict(ore('amogus'))
//物品.addOreDict(要添加到的矿辞)
ore('amogus').add(item('minecraft:iron_ingot'))
//要添加到的矿辞.add(物品)

将物品从矿辞中删除

//三种方法都行
oreDict.remove("ingotIron", item('minecraft:iron_ingot'))
////oreDict.remove("矿辞",物品)
item('minecraft:iron_ingot').removeOreDict(ore('ingotIron'))
//物品.removeOreDict(矿辞)  
ore('ingotIron').remove(item('minecraft:iron_ingot'))
//矿辞.remove(物品)

实用拓展Actually Additions

 模组链接

魔改原子再构机

//添加配方  
    mods.actuallyadditions.atomic_reconstructor.recipeBuilder()
        .input(输入物品)
        .output(输出物品)
        .energy(消耗能量)//可省略
        .register()
//删除配方
    mods.actuallyadditions.atomic_reconstructor.removeByInput(输入物品)
    //删除有输入物品的配方
    mods.actuallyadditions.atomic_reconstructor.removeByOutput(输出物品)
    //删除输出物品的配方
    mods.actuallyadditions.atomic_reconstructor.removeAll()
    //删除所有配方

魔改充能台

//添加配方
    mods.actuallyadditions.empowerer.recipeBuilder()
        .mainInput(充能台中心物品)
        .input(输入物品1,输入物品2,输入物品3,输入物品4)
        .output(输出物品*数量) //数量可省略
        .time(用时) //单位为tick 一秒=20tick
        .energy(能量) //总耗电=能量*4
        .color(0.5, 0.3, 0.2) //激光颜色
        .register()
    
    mods.actuallyadditions.empowerer.recipeBuilder()
        .mainInput(充能台中心物品)
        .input(输入物品1,输入物品2,输入物品3,输入物品4)
        .output(输出物品*数量) //数量可省略
        .time(用时) //单位为tick 一秒=20tick
        .energy(能量) //总耗电=能量*4
        .particleColor(0x00FF88) //激光颜色
        .register()
    
//删除配方    
        mods.actuallyadditions.empowerer.removeByInput(中心输入物品)
        //删除输入物品的配方
        
        mods.actuallyadditions.empowerer.removeByOutput(输出物品)
        //删除输出物品的配方
        
        mods.actuallyadditions.empowerer.removeAll()
        //删除所有配方

血魔法

模组链接

魔改炼金矩阵

添加配方
mods.bloodmagic.alchemy_array.recipeBuilder()
    .input(输入物品1)//先放的
    .catalyst(催化剂)//后放的
    .output(输出物品)
    .texture(贴图位置)//可省略
    .register()

删除配方

mods.bloodmagic.alchemy_array.removeByCatalyst(催化剂)
//删除有此催化剂的配方

mods.bloodmagic.alchemy_array.removeByInput(输入物品)
//删除输入物品的配方

mods.bloodmagic.alchemy_array.removeByInputAndCatalyst(输入物品, 催化剂)
//删除指定配方

mods.bloodmagic.alchemy_array.removeByOutput(输出物品)
//删除输出物品的配方

mods.bloodmagic.alchemy_array.removeAll()
//删除所有配方

炼金术桌魔改

//添加合成
mods.bloodmagic.alchemy_table.recipeBuilder()
    .input(输入物品1, 输入物品2,输入物品3,输入物品4)//最少一个,最多4个
    .output(输出物品)
    .ticks(100)//耗时 20tick=一秒
    .minimumTier(2)//需求宝珠等级
    .syphon(500)//生命源质消耗量
    .register()

mods.bloodmagic.alchemy_table.recipeBuilder()
    .input(输入物品1, 输入物品2,输入物品3,输入物品4)//最少一个,最多4个
    .output(输出物品)
    .time(2000)//耗时 20tick=一秒
    .tier(5)//需求宝珠等级
    .drain(25000)//生命源质消耗量
    .register()

删除合成

mods.bloodmagic.alchemy_table.removeByInput(所有输入物品)

mods.bloodmagic.alchemy_table.removeByOutput(输出物品)

mods.bloodmagic.alchemy_table.removeAll()//删除全部配方

血之祭坛魔改

//添加合成
mods.bloodmagic.blood_altar.recipeBuilder()
    .input(输入物品)
    .output(输出物品)
    .minimumTier(0)//需求等级
    .drainRate(5)//无法消耗生命源质时每秒损失的生命源质量
    .syphon(10)//需求生命源质总量
    .consumeRate(5)//每秒的消耗量 
    .register()           //总时间=总消耗量/每秒消耗量

mods.bloodmagic.blood_altar.recipeBuilder()
    .input(输入物品)
    .output(输出物品)
    .tier(3)                      //需求等级
    .drainRate(100)       //无法消耗生命源质时每秒损失的生命源质量
    .syphon(50000)      //需求生命源质总量
    .consumeRate(500)//每秒的消耗量 
    .register()                //总时间=总消耗量/每秒消耗量

删除配方

mods.bloodmagic.blood_altar.removeByInput(输入物品)
mods.bloodmagic.blood_altar.removeByOutput(输出物品)
mods.bloodmagic.blood_altar.removeAll()//删除全部配方

献祭刀魔改

//添加配方
mods.bloodmagic.sacrificial.recipeBuilder()
    .entity('minecraft:enderman')//生物名
    .value(1000)//每次获取的生命源质
    .register()
    
//删除配方
mods.bloodmagic.sacrificial.remove(entity('minecraft:villager'))//生物名
mods.bloodmagic.sacrificial.remove(resource('minecraft:villager'))//生物名
mods.bloodmagic.sacrificial.remove('minecraft:villager')//生物民
mods.bloodmagic.sacrificial.removeAll()//删除全部

浴火熔炉魔改

mods.bloodmagic.tartaric_forge.recipeBuilder()
    .input(输入物品)//最少一个 最多4个
    .output(输出物品)
    .soulDrain(5)//消耗恶魔意志量
    .minimumSouls(10)//需要多少恶魔意志才能合成配方
    .register()

mods.bloodmagic.tartaric_forge.recipeBuilder()
    .input(输入物品)//最少一个 最多4个
    .output(输出物品)
    .drain(200)//消耗恶魔意志量
    .minimumSouls(500)//需要多少恶魔意志才能启动配方
    .register()
    
//删除配方

mods.bloodmagic.tartaric_forge.removeByInput(输入的所有物品)
mods.bloodmagic.tartaric_forge.removeByOutput(输出物品)
mods.bloodmagic.tartaric_forge.removeAll() //删除所有配方

世界中合成

 Grs自带世界中合成的魔改功能但是在WIKI中并没有示例,害我一顿找.

//流体转流体
    inWorldCrafting.fluidToFluid.recipeBuilder()
            .fluidInput(fluid('water'))//流体输入
            .input(item('minecraft:diamond') * 2)//物品输入
            .fluidOutput(fluid('lava'))//流体输出
            .register()
//物品+流体转物品
    inWorldCrafting.fluidToItem.recipeBuilder()
            .fluidInput(fluid('water'))//流体输入(流体无法不消耗)
            .input(item('minecraft:piston'))//物品输入
            .output(item('minecraft:sticky_piston'))//物品输出
            .register()
//爆炸合成
    inWorldCrafting.explosion.recipeBuilder()
        .input(item('minecraft:quartz_ore'))//物品输入
        .output(item('minecraft:quartz_block'))//物品输出
        .chance(1) //概率(可不填)1为100%
        .register()
//燃烧合成
    inWorldCrafting.burning.recipeBuilder()
        .input(item('minecraft:emerald_ore'))//物品输入
        .output(item('minecraft:emerald_block'))//物品输出
        .ticks(10)//燃烧用时
        .register()
//活塞压制合成
    inWorldCrafting.pistonPush.recipeBuilder()
        .input(item('minecraft:netherrack'))//物品输入
        .output(item('minecraft:glowstone'))//物品输出
        .register()

合成拓展

  注:合成拓展必须为合成拓展:延续版

//量子压缩机

mods.extendedcrafting.compression_crafting.removeByOutput(输出物品)//删除输出物品
mods.extendedcrafting.compression_crafting.removeAll()//删除所有配方

mods.extendedcrafting.compression_crafting.recipeBuilder()
    .input(item('minecraft:clay'))//输入物品
    .inputCount(100)//输入的数量
    .output(item('minecraft:gold_ingot') * 7)//输出物品
    .catalyst(item('minecraft:diamond'))//催化剂-可不填
    .consumeCatalyst(true)//催化剂是否消耗-可不填 不填不消耗
    .powerCost(10000)//总耗电
    .powerRate(1000)//每tick耗电-不填为配置文件制作时间
    .register()//催化剂-电量均可不填
    
//组合合成
mods.extendedcrafting.combination_crafting.removeByOutput(输出物品)//删除输出物品
mods.extendedcrafting.combination_crafting.removeAll()//删除所有配方

mods.extendedcrafting.combination_crafting.recipeBuilder()
    .input(item('minecraft:pumpkin'))//中心物品
    .pedestals(item('minecraft:pumpkin') * 8)//输入物品
    .output(item('minecraft:diamond') * 2)//输出
    .cost(100)//总耗电
    .perTick(100)//每tick耗电
    .register()

mods.extendedcrafting.combination_crafting.recipeBuilder()
    .input(item('minecraft:pumpkin'))//中心物品
    .pedestals(item('minecraft:pumpkin'), item('minecraft:clay'), item('minecraft:clay'), item('minecraft:pumpkin'))//输入物品
    .output(item('minecraft:gold_ingot') * 2)//输出
    .cost(10000)//总耗电
    .register()
    
    //末影工作台
    
mods.extendedcrafting.ender_crafting.removeByOutput(输出物品)//删除输出物品
mods.extendedcrafting.ender_crafting.removeAll()//删除所有配方
    
    mods.extendedcrafting.ender_crafting.shapedBuilder()
    .output(item('minecraft:stone'))
    .matrix('BXX',
            'X B')//配方形状
    .key('B', item('minecraft:stone'))//定义
    .key('X', item('minecraft:gold_ingot'))//定义(和工作台相同)
    .time(1)//耗时-单位为秒
    .mirrored()//填入 boolean 设置配方为水平镜像 可省略
    .register()

mods.extendedcrafting.ender_crafting.shapedBuilder()
    .output(item('minecraft:diamond') * 32)//输出
    .matrix([[item('minecraft:gold_ingot'), item('minecraft:gold_ingot'), item('minecraft:gold_ingot')],
            [item('minecraft:gold_ingot'), item('minecraft:gold_ingot'), item('minecraft:gold_ingot')],
            [item('minecraft:gold_ingot'), item('minecraft:gold_ingot'), item('minecraft:gold_ingot')]])//输入
    .time(1)//耗时-单位为秒
    .register()

//高级工作台

用配方制作器生成配方 然后将要输出的物品填入"output"
注:Crt和Grs一同安装时 默认会生成Grs的配方(可在Grs配置文件中更改)

mods.extendedcrafting.table_crafting.removeByOutput(输出物品)//删除输出物品
mods.extendedcrafting.table_crafting.removeAll()//删除所有配方

EIO

模组链接


 合金炉
//配方需求等级
    tierAny()
    tierNormal()
    tierSimple()
    tierEnhanced()
//经验数值
    xp(float)
//能源消耗
    energy(int)
//例
    mods.enderio.alloy_smelter.recipeBuilder()
    .input(item('minecraft:clay') * 4, item('minecraft:diamond'))
    .output(item('minecraft:nether_star'))
    .energy(100000)
    .xp(500)
    .tierEnhanced()
    .register()

    mods.enderio.alloy_smelter.recipeBuilder()
    .input(item('minecraft:diamond') * 2, item('minecraft:gold_nugget') * 2)
    .output(item('minecraft:clay') * 4)
    .tierAny()
    .register()
//删除配方
    mods.enderio.alloy_smelter.remove(item('enderio:item_material:70'))
    mods.enderio.alloy_smelter.removeAll()


SAG磨粉机
//配方需求等级
    tierAny()
    tierNormal()
    tierSimple()
    tierEnhanced()
//能源消耗
    energy(int)
//输出(最多4项)
    output(ItemStack)
    output(ItemStack,几率)
//设置磨珠可加成选项
    bonusTypeNone()
    bonusTypeChance()
    bonusTypeMultiply()
//例子
mods.enderio.sag_mill.recipeBuilder()
    .input(item('minecraft:diamond_block'))
    .output(item('minecraft:diamond') * 4)
    .output(item('minecraft:clay_ball') * 2, 0.7)
    .output(item('minecraft:gold_ingot'), 0.1)
    .output(item('minecraft:gold_ingot'), 0.1)
    .bonusTypeMultiply()
    .energy(1000)
    .tierEnhanced()
    .register()

mods.enderio.sag_mill.recipeBuilder()
    .input(item('minecraft:nether_star'))
    .output(item('minecraft:clay_ball') * 2, 0.7)
    .output(item('minecraft:gold_ingot'), 0.1)
    .tierAny()
    .register()
//删除
    mods.enderio.sag_mill.removeByInput(item('minecraft:wheat'))
    mods.enderio.sag_mill.removeAll()
    
    //自定义磨珠
mods.enderio.sag_mill_grinding.recipeBuilder()
    .input(item('minecraft:clay_ball'))//物品
    .chance(6.66)//翻倍几率
    .power(0.001)//消耗能源倍率
    .grinding(3.33)//产出倍率
    .duration(10000)//耐久
    .register()

.