本篇教程由作者设定未经允许禁止转载。
本教程的资料来源于官方WIKI
开始要做的
首先把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()
.