Consolidating Development: 0.9.x (#846)

Signed-off-by: Pyritie <pyritie@gmail.com>
Signed-off-by: TomPlop <tomdidome@gmail.com>
Co-authored-by: Pyritie <Pyritie@gmail.com>
Co-authored-by: Redeix <brayden.j.m.ford@gmail.com>
Co-authored-by: TomPlop <tomdidome@gmail.com>
Co-authored-by: aidie8 <aidenvanzuilen@gmail.com>
Co-authored-by: Xikaro <os.valerievich@ya.ru>
Co-authored-by: Xikaro <55663835+Xikaro@users.noreply.github.com>
Co-authored-by: Zleub <debray.arnaud@gmail.com>
This commit is contained in:
Nebby 2025-04-14 14:00:08 -04:00 committed by GitHub
parent 528672e95b
commit d4c80a4b61
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2192 changed files with 104647 additions and 53190 deletions

View file

@ -1,55 +1,177 @@
// priority: 0
// priority: 10
const STONE_TYPES_TO_COBBLE = {
gabbro: 'tfc:rock/cobble/gabbro',
shale: 'tfc:rock/cobble/shale',
claystone: 'tfc:rock/cobble/claystone',
limestone: 'tfc:rock/cobble/limestone',
conglomerate: 'tfc:rock/cobble/conglomerate',
dolomite: 'tfc:rock/cobble/dolomite',
chert: 'tfc:rock/cobble/chert',
chalk: 'tfc:rock/cobble/chalk',
rhyolite: 'tfc:rock/cobble/rhyolite',
dacite: 'tfc:rock/cobble/dacite',
quartzite: 'tfc:rock/cobble/quartzite',
slate: 'tfc:rock/cobble/slate',
phyllite: 'tfc:rock/cobble/phyllite',
schist: 'tfc:rock/cobble/schist',
gneiss: 'tfc:rock/cobble/gneiss',
marble: 'tfc:rock/cobble/marble',
basalt: 'tfc:rock/cobble/basalt',
diorite: 'tfc:rock/cobble/diorite',
andesite: 'tfc:rock/cobble/andesite',
granite: 'tfc:rock/cobble/granite',
deepslate: 'minecraft:cobbled_deepslate',
pyroxenite: 'minecraft:blackstone',
dripstone: 'minecraft:dripstone_block',
}
const registerGTCEULoots = (event) => {
global.TFC_STONE_TYPES.forEach(stoneType => {
GTMaterialRegistry.getRegisteredMaterials().forEach(material => {
if (material.hasProperty(PropertyKey.ORE)) {
let stoneTypeMaterial = TFGHelpers.getMaterial(stoneType)
let stoneTypeDust = null
if (stoneTypeMaterial != null) stoneTypeDust = ChemicalHelper.get(TagPrefix.dust, stoneTypeMaterial, 1)
// Have to define these here because normal loot table jsons don't support checking for hammers
event.addBlockLootModifier('minecraft:deepslate')
.matchMainHand('#forge:tools/hammers')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addLoot('minecraft:cobbled_deepslate')
let richRawOre = ChemicalHelper.get(TFGTagPrefix.richRawOre, material, 1)
let normalRawOre = ChemicalHelper.get(TagPrefix.rawOre, material, 1)
let poorRawOre = ChemicalHelper.get(TFGTagPrefix.poorRawOre, material, 1)
event.addBlockLootModifier('minecraft:blackstone')
.matchMainHand('#forge:tools/hammers')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addLoot('tfc:sand/black')
let crushedOre = ChemicalHelper.get(TagPrefix.crushed, material, 1)
event.addBlockLootModifier('minecraft:dripstone_block')
.matchMainHand('#forge:tools/hammers')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addLoot('tfc:sand/brown')
let blockName = `gtceu:${stoneType}_${material.getName()}_ore`
event.addBlockLootModifier('tfg:rock/hardened_blackstone')
.matchMainHand('#forge:tools/hammers')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addLoot('tfc:sand/black')
if (!richRawOre.isEmpty() && !normalRawOre.isEmpty() && !poorRawOre.isEmpty()) {
event.addBlockLootModifier(blockName)
.removeLoot(Ingredient.all)
.addWeightedLoot([
richRawOre.withChance(0.2),
normalRawOre.withChance(0.6),
poorRawOre.withChance(0.2)
]);
}
if (!stoneTypeDust.isEmpty()) {
event.addBlockLootModifier(blockName)
.addLoot(
LootEntry.of(stoneTypeDust).when((c) => c.randomChance(0.25))
)
}
event.addBlockLootModifier('tfg:rock/hardened_deepslate')
.matchMainHand('#forge:tools/hammers')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addLoot('tfc:sand/black')
if (!crushedOre.isEmpty()) {
event.addBlockLootModifier(blockName)
.matchMainHand('#forge:tools/hammers')
.removeLoot(Ingredient.all)
.addWeightedLoot([
crushedOre.withChance(0.8),
crushedOre.withCount(2).withChance(0.2)
]);
}
event.addBlockLootModifier('tfg:rock/hardened_dripstone')
.matchMainHand('#forge:tools/hammers')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addLoot('tfc:sand/brown')
}
})
})
event.addBlockLootModifier('minecraft:gilded_blackstone')
.matchMainHand('#forge:tools/hammers')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addSequenceLoot(
LootEntry.of('tfc:sand/black'),
LootEntry.of('tfc:powder/native_gold')
)
event.addBlockLootModifier('beneath:crackrack')
.matchMainHand('#forge:tools/hammers')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addLoot('tfc:sand/pink')
// Crush raw rock into cobble
global.ORE_BEARING_STONES.forEach(stoneType => {
event.addBlockLootModifier(`tfc:rock/raw/${stoneType}`)
.matchMainHand('#forge:tools/hammers')
.removeLoot(ItemFilter.ALWAYS_TRUE)
.addLoot(STONE_TYPES_TO_COBBLE[stoneType]);
})
if (TFGHelpers.isMaterialRegistrationFinished) {
registerGTCEUMaterialLoots(event);
}
else {
console.log("!!!!!!!! MATERIALS NOT DONE YET !!!!!!!!!")
}
}
function registerGTCEUMaterialLoots(event) {
// Go through all materials
GTMaterialRegistry.getRegisteredMaterials().forEach(material => {
if (material.hasProperty(PropertyKey.ORE)) {
// Indicator buds
if (material.hasProperty(PropertyKey.GEM)) {
let normalDrop = ChemicalHelper.get(TagPrefix.gemChipped, material, 1)
let sawDrop = ChemicalHelper.get(TagPrefix.gem, material, 1)
let bud = `gtceu:${material.getName()}_bud_indicator`;
event.addBlockLootModifier(bud)
.matchMainHand("tfc:gem_saw")
.addLoot(sawDrop);
event.addBlockLootModifier(bud)
.not(n => n.matchMainHand("tfc:gem_saw"))
.addLoot(normalDrop);
}
let richRawOre = ChemicalHelper.get(TFGTagPrefix.richRawOre, material, 1)
let normalRawOre = ChemicalHelper.get(TagPrefix.rawOre, material, 1)
let poorRawOre = ChemicalHelper.get(TFGTagPrefix.poorRawOre, material, 1)
// I LOVE LOOTJS I LOVE LOOTJS I LOVE LOOTJS
let rawOreBlock = `:${ChemicalHelper.get(TagPrefix.rawOreBlock, material, 1).getItem()}`;
if (material == GTMaterials.Copper || material == GTMaterials.Gold || material == GTMaterials.Iron)
rawOreBlock = "minecraft" + rawOreBlock;
else
rawOreBlock = "gtceu" + rawOreBlock;
event.addBlockLootModifier(rawOreBlock)
.removeLoot(ItemFilter.ALWAYS_TRUE)
.or((or) => {
or.matchMainHand('#minecraft:pickaxes')
.matchMainHand('#forge:tools/hammers')
.matchMainHand('#forge:tools/mining_hammers')
})
.addWeightedLoot([4, 6],
[
richRawOre.withChance(0.2),
normalRawOre.withChance(0.6),
poorRawOre.withChance(0.2)
]);
// Stone ores
global.ORE_BEARING_STONES.forEach(stoneType => {
let stoneTypeMaterial = TFGHelpers.getMaterial(stoneType)
// Material doesn't work here because of reasons
if (stoneTypeMaterial == null) {
if (stoneType == "pyroxenite")
stoneTypeMaterial = GTMaterials.Blackstone;
else if (stoneType == "deepslate")
stoneTypeMaterial = GTMaterials.Deepslate;
}
let stoneTypeDust = ChemicalHelper.get(TagPrefix.dust, stoneTypeMaterial, 1)
// break with pickaxe
event.addBlockLootModifier(`gtceu:${stoneType}_${material.getName()}_ore`)
.removeLoot(ItemFilter.ALWAYS_TRUE)
.or((or) => {
or.matchMainHand('#minecraft:pickaxes')
.matchMainHand('#forge:tools/mining_hammers')
})
.addWeightedLoot([
richRawOre.withChance(0.2),
normalRawOre.withChance(0.6),
poorRawOre.withChance(0.2)
])
.addLoot(
LootEntry.of(stoneTypeDust).when((c) => c.randomChance(0.25))
)
// break with hammer
event.addBlockLootModifier(`gtceu:${stoneType}_${material.getName()}_ore`)
.matchMainHand('#forge:tools/hammers')
.addLoot(STONE_TYPES_TO_COBBLE[stoneType]);
})
}
})
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,714 @@
// priority: 0
function registerGTCEUMetalRecipes(event) {
const makeToolRecipe = (toolType, headTagPrefix, extruderMold, cirucitMeta, material) => {
const toolItem = ToolHelper.get(toolType, material)
if (toolItem.isEmpty()) return
const toolHeadItem = ChemicalHelper.get(headTagPrefix, material, 1)
if (toolHeadItem.isEmpty()) return
if (material.hasFlag(TFGMaterialFlags.HAS_TFC_TOOL)) {
event.shapeless(toolItem, [
'#forge:rods/wooden',
toolHeadItem
]).id(`gtceu:shaped/${toolType.name}_${material.getName()}`)
}
else {
event.recipes.tfc.advanced_shapeless_crafting(TFC.itemStackProvider.of(toolItem).copyForgingBonus(), ['#forge:rods/wooden', toolHeadItem])
.id(`gtceu:shaped/${toolType.name}_${material.getName()}`)
}
processToolHead(headTagPrefix, extruderMold, cirucitMeta, material)
}
const processToolHead = (headTagPrefix, extruderMold, cirucitMeta, material) => {
const toolHeadItem = ChemicalHelper.get(headTagPrefix, material, 1)
if (toolHeadItem.isEmpty()) return
if (material.hasProperty(PropertyKey.INGOT)) {
const ingotItem = ChemicalHelper.get(TagPrefix.ingot, material, 1)
if (ingotItem.isEmpty()) return
event.recipes.gtceu.extruder(`tfg:extrude_${material.getName()}_ingot_to_${new String(headTagPrefix.name).toLowerCase()}_head`)
.itemInputs(ingotItem.copyWithCount(Math.floor(headTagPrefix.materialAmount() / GTValues.M)))
.notConsumable(extruderMold)
.itemOutputs(toolHeadItem)
.duration(material.getMass() * 6)
.EUt(GTValues.VA[GTValues.LV])
if (headTagPrefix.materialAmount() / GTValues.M == 1) {
event.custom({
type: 'vintageimprovements:curving',
ingredients: [ingotItem],
itemAsHead: extruderMold,
results: [toolHeadItem],
processingTime: material.getMass() * 6 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER
}).id(`tfg:vi/curving/${material.getName()}_ingot_to_${new String(headTagPrefix.name).toLowerCase()}_head`)
}
else {
event.custom({
type: 'vintageimprovements:curving',
// have to do [item, item] instead of [item x2]
ingredients: [ingotItem, ingotItem],
itemAsHead: extruderMold,
results: [toolHeadItem],
processingTime: material.getMass() * 6 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER
}).id(`tfg:vi/curving/${material.getName()}_ingot_to_${new String(headTagPrefix.name).toLowerCase()}_head`)
}
event.recipes.gtceu.macerator(`tfg:macerate_${material.getName()}_${new String(headTagPrefix.name).toLowerCase()}_head`)
.itemInputs(toolHeadItem)
.itemOutputs(ChemicalHelper.get(TagPrefix.dust, material, 1))
.duration(material.getMass() * 6)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.arc_furnace(`tfg:arc_furnace_${material.getName()}_${new String(headTagPrefix.name).toLowerCase()}_head`)
.itemInputs(toolHeadItem)
.itemOutputs(ChemicalHelper.get(TagPrefix.ingot, material, 1))
.duration(material.getMass() * 6)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
if (GTMaterials.Stone != material) {
event.recipes.gtceu.extractor(`tfg:extract_${material.getName()}_${new String(headTagPrefix.name).toLowerCase()}_head`)
.itemInputs(toolHeadItem)
.outputFluids(Fluid.of(material.getFluid(), 144))
.duration(material.getMass() * 6)
.category(GTRecipeCategories.EXTRACTOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
}
} else if (material.hasProperty(PropertyKey.GEM)) {
const gemItem = ChemicalHelper.get(TagPrefix.gem, material, 1)
if (gemItem.isEmpty()) return
event.recipes.gtceu.laser_engraver(`tfg:engrave_${material.getName()}_gem_to_${new String(headTagPrefix.name).toLowerCase()}_head`)
.itemInputs(gemItem.copyWithCount(Math.floor(headTagPrefix.materialAmount() / GTValues.M)))
.notConsumable(ChemicalHelper.get(TagPrefix.lens, GTMaterials.Glass, 1))
.circuit(cirucitMeta)
.itemOutputs(toolHeadItem)
.duration(material.getMass() * 6)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.macerator(`tfg:macerate_${material.getName()}_${new String(headTagPrefix.name).toLowerCase()}_head`)
.itemInputs(toolHeadItem)
.itemOutputs(ChemicalHelper.get(TagPrefix.dust, material, 1))
.duration(material.getMass() * 6)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
}
// else: ignore :3
}
const processToolMortar = (toolType, material) => {
const toolItem = ToolHelper.get(toolType, material)
if (toolItem.isEmpty()) return
const usableTagPrefix = material.hasProperty(PropertyKey.GEM) ? TagPrefix.gem : TagPrefix.ingot;
const usableItem = ChemicalHelper.get(usableTagPrefix, material, 1)
if (usableItem.isEmpty()) return
event.recipes.tfc.damage_inputs_shaped_crafting(
event.shaped(toolItem, [
'CA ',
' B '
], {
A: usableItem,
B: '#tfc:rock/raw',
C: '#tfc:chisels'
})
).id(`gtceu:shaped/mortar_${material.getName()}`)
}
const processIngot = (tagPrefix, material) => {
const ingotStack = ChemicalHelper.get(tagPrefix, material, 1)
if (material.hasFlag(MaterialFlags.GENERATE_PLATE)
&& material != GTMaterials.Wood
&& material != GTMaterials.TreatedWood
&& !material.hasProperty(PropertyKey.POLYMER))
{
const plateStack = ChemicalHelper.get(TagPrefix.plate, material, 1)
const blockStack = ChemicalHelper.get(TagPrefix.block, material, 1)
let matAmount = TagPrefix.block.getMaterialAmount(material) / GTValues.M;
if (!plateStack.isEmpty()) {
event.custom({
type: "createaddition:rolling",
input: ingotStack,
result: plateStack,
//processingTime: material.getMass() // TODO - controlled by a global config argh
}).id(`tfg:rolling/${material.getName()}_plate`)
if (!blockStack.isEmpty() && GTMaterials.Stone != material) {
// 9х Слиток -> Блок
event.recipes.createCompacting(blockStack, ingotStack.withCount(matAmount))
.heated()
.id(`tfg:compacting/${material.getName()}_block`)
}
}
else {
if (!blockStack.isEmpty()) {
// Блок из гемов -> 9 Пластин
event.recipes.createCutting(plateStack.withCount(matAmount).withChance(0.65), blockStack)
.id(`tfg:cutting/${material.getName()}_plate`)
}
}
}
}
const processPlate = (tagPrefix, material) => {
const item = ChemicalHelper.get(tagPrefix, material, 1)
if (item.isEmpty()) return
event.remove({ id: `gtceu:shaped/plate_${material.getName()}` })
}
const processPlateDouble = (tagPrefix, material) => {
const item = ChemicalHelper.get(tagPrefix, material, 1)
if (item.isEmpty()) return
event.remove({ id: `gtceu:shaped/plate_double_${material.getName()}` })
}
const processBlock = (tagPrefix, material) => {
const item = ChemicalHelper.get(tagPrefix, material, 1)
if (item.isEmpty()) return
event.remove({ id: `gtceu:compressor/compress_${material.getName()}_to_block` })
}
const processFoil = (tagPrefix, material) => {
const foilItem = ChemicalHelper.get(tagPrefix, material, 4)
const plateItem = ChemicalHelper.get(TagPrefix.plate, material, 1)
if (plateItem != null && foilItem != null) {
event.custom({
type: "createaddition:rolling",
input: plateItem,
result: foilItem,
// TODO - processing time is controlled by a global config instead of setting it per-recipe...
//processingTime: material.getMass()
}).id(`tfg:rolling/${material.getName()}_foil`)
}
}
const processRodLong = (tagPrefix, material) => {
const item = ChemicalHelper.get(tagPrefix, material, 1)
if (item.isEmpty()) return
event.remove({ id: `gtceu:shaped/stick_long_stick_${material.getName()}` })
}
const processIngotDouble = (tagPrefix, material) => {
if (!material.hasFlag(TFGMaterialFlags.GENERATE_DOUBLE_INGOTS)) return;
const doubleIngotStack = ChemicalHelper.get(tagPrefix, material, 1);
if (material.hasProperty(PropertyKey.FLUID)) {
event.recipes.gtceu.extractor(`tfg:extract_${material.getName()}_double_ingot`)
.itemInputs(doubleIngotStack)
.outputFluids(Fluid.of(material.getFluid(), 288))
.duration(material.getMass())
.category(GTRecipeCategories.EXTRACTOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
}
if (material.hasProperty(PropertyKey.DUST)) {
event.recipes.gtceu.macerator(`tfg:macerate_${material.getName()}_double_ingot`)
.itemInputs(doubleIngotStack)
.itemOutputs(ChemicalHelper.get(TagPrefix.dust, material, 2))
.duration(material.getMass())
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
}
const twoIngotStack = ChemicalHelper.get(TagPrefix.ingot, material, 2);
event.recipes.gtceu.arc_furnace(`tfg:arc_furnace_${material.getName()}_double_ingot`)
.itemInputs(doubleIngotStack)
.itemOutputs(twoIngotStack)
.duration(material.getMass() * 6)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.bender(`tfg:bend_${material.getName()}_double_ingot`)
.itemInputs(twoIngotStack)
.itemOutputs(doubleIngotStack)
.duration(material.getMass() * 6)
.EUt(GTValues.VA[GTValues.LV])
.circuit(3)
}
const processSmallOre = (tagPrefix, material) => {
if (!material.hasFlag(TFGMaterialFlags.HAS_SMALL_TFC_ORE)) return;
const smallOre = ChemicalHelper.get(tagPrefix, material, 1);
const smallDust = ChemicalHelper.get(TagPrefix.dustSmall, material, 1);
event.recipes.gtceu.macerator(`tfg:macerate_${material.getName()}_small_ore`)
.itemInputs(smallOre)
.itemOutputs(smallDust)
.duration(material.getMass())
.category(GTRecipeCategories.ORE_CRUSHING)
.EUt(GTValues.VA[GTValues.ULV])
}
const processSmallNativeOre = (tagPrefix, material) => {
if (!material.hasFlag(TFGMaterialFlags.HAS_SMALL_NATIVE_TFC_ORE)) return;
const smallNativeOre = ChemicalHelper.get(tagPrefix, material, 1);
const smallDust = ChemicalHelper.get(TagPrefix.dustSmall, material, 1);
event.recipes.gtceu.macerator(`tfg:macerate_${material.getName()}_small_native_ore`)
.itemInputs(smallNativeOre)
.itemOutputs(smallDust)
.duration(material.getMass())
.category(GTRecipeCategories.ORE_CRUSHING)
.EUt(GTValues.VA[GTValues.ULV])
}
const processPoorRawOre = (tagPrefix, material) => {
const poorOreItem = ChemicalHelper.get(tagPrefix, material, 2)
const crushedOreItem = ChemicalHelper.get(TagPrefix.crushed, material, 1)
if (poorOreItem != null && crushedOreItem != null) {
event.recipes.tfc.quern(crushedOreItem, poorOreItem)
.id(`tfg:quern/${material.getName()}_crushed_ore_from_poor_raw_ore`)
}
}
const processNormalRawOre = (tagPrefix, material) => {
const normalOreItem = ChemicalHelper.get(tagPrefix, material, 1)
const crushedOreItem = ChemicalHelper.get(TagPrefix.crushed, material, 1)
if (normalOreItem != null && crushedOreItem != null) {
event.recipes.tfc.quern(crushedOreItem, normalOreItem)
.id(`tfg:quern/${material.getName()}_crushed_ore_from_normal_raw_ore`)
}
}
const processRichRawOre = (tagPrefix, material) => {
const richOreItem = ChemicalHelper.get(tagPrefix, material, 1)
const crushedOreItem = ChemicalHelper.get(TagPrefix.crushed, material, 2)
if (richOreItem != null && crushedOreItem != null) {
event.recipes.tfc.quern(crushedOreItem, richOreItem)
.id(`tfg:quern/${material.getName()}_crushed_ore_from_rich_raw_ore`)
}
}
const processCrushedOre = (tagPrefix, material) => {
const crushedOreItem = ChemicalHelper.get(tagPrefix, material, 1)
const pureOreItem = ChemicalHelper.get(TagPrefix.crushedPurified, material, 1)
if (crushedOreItem != null && pureOreItem != null) {
let byproductMaterial = material.getProperty(PropertyKey.ORE).getOreByProduct(0, material);
const byproductItem = ChemicalHelper.get(TagPrefix.dust, byproductMaterial, 1)
event.recipes.greate.splashing([pureOreItem, TieredOutputItem.of(byproductItem).withChance(0.333), 'gtceu:stone_dust'], crushedOreItem)
.id(`tfg:splashing/${material.getName()}_purified_ore`)
// Дробленная руда -> Очищенная руда
event.custom({
type: "ae2:transform",
circumstance: {
type: "fluid",
tag: "tfc:water"
},
ingredients: [
crushedOreItem.toJson()
],
result: pureOreItem.toJson()
}).id(`tfg:ae_transform/${material.getName()}_purified_ore`)
}
}
const processImpureDust = (tagPrefix, material) => {
const impureDustItem = ChemicalHelper.get(tagPrefix, material, 1)
const dustItem = ChemicalHelper.get(TagPrefix.dust, material, 1)
if (impureDustItem != null && dustItem != null) {
let byproductMaterial = material.getProperty(PropertyKey.ORE).getOreByProduct(0, material);
const byproductItem = ChemicalHelper.get(TagPrefix.dust, byproductMaterial, 1)
event.recipes.greate.splashing([dustItem, TieredOutputItem.of(byproductItem).withChance(0.333), 'gtceu:stone_dust'], impureDustItem)
.id(`tfg:splashing/${material.getName()}_dust_from_impure`)
// Грязная пыль -> Пыль
event.custom({
type: "ae2:transform",
circumstance: {
type: "fluid",
tag: "tfc:water"
},
ingredients: [
impureDustItem.toJson()
],
result: dustItem.toJson()
}).id(`tfg:ae_transform/${material.getName()}_dust_from_impure`)
}
}
const processPureDust = (tagPrefix, material) => {
const pureDust = ChemicalHelper.get(tagPrefix, material, 1)
const dustItem = ChemicalHelper.get(TagPrefix.dust, material, 1)
if (pureDust != null && dustItem != null) {
let byproductMaterial = material.getProperty(PropertyKey.ORE).getOreByProduct(0, material);
const byproductItem = ChemicalHelper.get(TagPrefix.dust, byproductMaterial, 1)
event.recipes.greate.splashing([dustItem, TieredOutputItem.of(byproductItem).withChance(0.333), 'gtceu:stone_dust'], pureDust)
.id(`tfg:splashing/${material.getName()}_dust_from_pure`)
// Очищенная пыль -> Пыль
event.custom({
type: "ae2:transform",
circumstance: {
type: "fluid",
tag: "tfc:water"
},
ingredients: [
pureDust.toJson()
],
result: dustItem.toJson()
}).id(`tfg:ae_transform/${material.getName()}_dust_from_pure`)
}
}
GTMaterialRegistry.getRegisteredMaterials().forEach(material => {
const toolProperty = material.getProperty(PropertyKey.TOOL)
const ingotProperty = material.getProperty(PropertyKey.INGOT)
const oreProperty = material.getProperty(PropertyKey.ORE)
const gemProperty = material.getProperty(PropertyKey.GEM)
const anvilStack = ChemicalHelper.get(TFGTagPrefix.anvil, material, 1)
const finishedLampStack = ChemicalHelper.get(TFGTagPrefix.lamp, material, 1)
const trapdoorStack = ChemicalHelper.get(TFGTagPrefix.trapdoor, material, 1)
const chainStack = ChemicalHelper.get(TFGTagPrefix.chain, material, 1)
const bellStack = ChemicalHelper.get(TFGTagPrefix.bell, material, 1)
const barsStack = ChemicalHelper.get(TFGTagPrefix.bars, material, 4)
if (toolProperty != null) {
makeToolRecipe(GTToolType.SWORD, TFGTagPrefix.toolHeadSword, 'tfg:sword_head_extruder_mold', 1, material)
makeToolRecipe(GTToolType.PICKAXE, TFGTagPrefix.toolHeadPickaxe, 'tfg:pickaxe_head_extruder_mold', 2, material)
makeToolRecipe(GTToolType.AXE, TFGTagPrefix.toolHeadAxe, 'tfg:axe_head_extruder_mold', 3, material)
makeToolRecipe(GTToolType.SHOVEL, TFGTagPrefix.toolHeadShovel, 'tfg:shovel_head_extruder_mold', 4, material)
makeToolRecipe(GTToolType.HOE, TFGTagPrefix.toolHeadHoe, 'tfg:hoe_head_extruder_mold', 5, material)
makeToolRecipe(GTToolType.KNIFE, TFGTagPrefix.toolHeadKnife, 'tfg:knife_head_extruder_mold', 6, material)
makeToolRecipe(GTToolType.FILE, TFGTagPrefix.toolHeadFile, 'tfg:file_head_extruder_mold', 7, material)
makeToolRecipe(GTToolType.SAW, TFGTagPrefix.toolHeadSaw, 'tfg:saw_head_extruder_mold', 8, material)
makeToolRecipe(GTToolType.SPADE, TFGTagPrefix.toolHeadSpade, 'tfg:spade_head_extruder_mold', 9, material)
makeToolRecipe(GTToolType.MINING_HAMMER, TFGTagPrefix.toolHeadMiningHammer, 'tfg:mining_hammer_head_extruder_mold', 10, material)
makeToolRecipe(GTToolType.SCYTHE, TFGTagPrefix.toolHeadScythe, 'tfg:scythe_head_extruder_mold', 11, material)
makeToolRecipe(GTToolType.HARD_HAMMER, TFGTagPrefix.toolHeadHammer, 'tfg:hammer_head_extruder_mold', 12, material)
makeToolRecipe(GTToolType.BUTCHERY_KNIFE, TFGTagPrefix.toolHeadButcheryKnife, 'tfg:butchery_knife_head_extruder_mold', 13, material)
processToolMortar(GTToolType.MORTAR, material)
processToolHead(TFGTagPrefix.toolHeadPropick, 'tfg:propick_head_extruder_mold', 14, material)
processToolHead(TFGTagPrefix.toolHeadJavelin, 'tfg:javelin_head_extruder_mold', 15, material)
processToolHead(TFGTagPrefix.toolHeadChisel, 'tfg:chisel_head_extruder_mold', 16, material)
processToolHead(TFGTagPrefix.toolHeadMace, 'tfg:mace_head_extruder_mold', 17, material)
processToolHead(TFGTagPrefix.toolHeadMattock, 'tfg:mattock_head_extruder_mold', 18, material)
}
if (ingotProperty != null) {
processIngot(TagPrefix.ingot, material)
processPlate(TagPrefix.plate, material)
processPlateDouble(TagPrefix.plateDouble, material)
processBlock(TagPrefix.block, material)
processFoil(TagPrefix.foil, material)
processRodLong(TagPrefix.rodLong, material)
processIngotDouble(TFGTagPrefix.ingotDouble, material)
}
if (oreProperty != null) {
processSmallOre(TFGTagPrefix.oreSmall, material)
processSmallNativeOre(TFGTagPrefix.oreSmallNative, material)
processPoorRawOre(TFGTagPrefix.poorRawOre, material)
processNormalRawOre(TagPrefix.rawOre, material)
processRichRawOre(TFGTagPrefix.richRawOre, material)
processCrushedOre(TagPrefix.crushed, material)
processImpureDust(TagPrefix.dustImpure, material)
processPureDust(TagPrefix.dustPure, material)
if (gemProperty != null) {
let gem = ChemicalHelper.get(TagPrefix.gem, material, 1);
let chipped = ChemicalHelper.get(TagPrefix.gemChipped, material, 1)
let smallDust = ChemicalHelper.get(TagPrefix.dustSmall, material, 1)
event.recipes.tfc.damage_inputs_shapeless_crafting(event.recipes.minecraft.crafting_shapeless(
`gtceu:${material.getName()}_bud_indicator`, [gem, '#tfc:chisels']))
.id(`shapeless/${material.getName()}_bud_indicator`)
event.shaped(smallDust,
[ 'A', 'B' ],
{ A: chipped, B: '#forge:tools/mortars'})
.id(`shapeless/mortar_chipped_${material.getName()}`)
}
}
if (anvilStack != null) {
event.recipes.gtceu.macerator(`tfg:macerate_${material.getName()}_anvil`)
.itemInputs(anvilStack)
.itemOutputs(ChemicalHelper.get(TagPrefix.dust, material, 14))
.duration(material.getMass() * 32)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.arc_furnace(`tfg:arc_${material.getName()}_anvil`)
.itemInputs(anvilStack)
.itemOutputs(ChemicalHelper.get(TagPrefix.ingot, material, 14))
.duration(material.getMass() * 32)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.extractor(`tfg:extract_${material.getName()}_anvil`)
.itemInputs(anvilStack)
.outputFluids(Fluid.of(material.getFluid(), 14 * 144))
.duration(material.getMass() * 32)
.category(GTRecipeCategories.EXTRACTOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.alloy_smelter(`tfg:cast_${material.getName()}_anvil`)
.itemInputs(ChemicalHelper.get(TagPrefix.ingot, material, 14))
.notConsumable('gtceu:anvil_casting_mold')
.itemOutputs(anvilStack)
.duration(material.getMass() * 32)
.EUt(GTValues.VA[GTValues.ULV])
.category(GTRecipeCategories.INGOT_MOLDING)
event.recipes.gtceu.fluid_solidifier(`tfg:solidify_${material.getName()}_anvil`)
.inputFluids(Fluid.of(material.getFluid(), 14 * 144))
.notConsumable('gtceu:anvil_casting_mold')
.itemOutputs(anvilStack)
.duration(material.getMass() * 32)
.EUt(GTValues.VA[GTValues.ULV])
}
if (finishedLampStack != null) {
const materialDustStack = ChemicalHelper.get(TagPrefix.dust, material, 1)
const materialIngotStack = ChemicalHelper.get(TagPrefix.ingot, material, 1)
const glassDustStack = ChemicalHelper.get(TagPrefix.dust, GTMaterials.Glass, 4)
const unfinishedLampStack = ChemicalHelper.get(TFGTagPrefix.lampUnfinished, material, 1)
event.recipes.gtceu.macerator(`tfg:macerate_${material.getName()}_lamp`)
.itemInputs(finishedLampStack)
.itemOutputs([materialDustStack, glassDustStack])
.duration(material.getMass() * 8)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.arc_furnace(`tfg:arc_${material.getName()}_lamp`)
.itemInputs(finishedLampStack)
.itemOutputs([materialIngotStack, glassDustStack])
.duration(material.getMass() * 8)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.assembler(`tfg:${material.getName()}_lamp`)
.itemInputs("tfc:lamp_glass", unfinishedLampStack)
.itemOutputs(finishedLampStack)
.duration(material.getMass() * 7)
.circuit(12)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.assembler(`tfg:${material.getName()}_lamp_from_liquid`)
.itemInputs(unfinishedLampStack)
.inputFluids(Fluid.of(GTMaterials.Glass.getFluid(), 576))
.itemOutputs(finishedLampStack)
.duration(material.getMass() * 7)
.circuit(13)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.macerator(`tfg:macerate_${material.getName()}_unfinished_lamp`)
.itemInputs(unfinishedLampStack)
.itemOutputs(materialDustStack)
.duration(material.getMass() * 8)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.arc_furnace(`tfg:arc_${material.getName()}_unfinished_lamp`)
.itemInputs(unfinishedLampStack)
.itemOutputs([materialIngotStack, glassDustStack])
.duration(material.getMass() * 8)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.extractor(`tfg:extract_${material.getName()}_unfinished_lamp`)
.itemInputs(unfinishedLampStack)
.outputFluids(Fluid.of(material.getFluid(), 144))
.duration(material.getMass() * 8)
.category(GTRecipeCategories.EXTRACTOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.alloy_smelter(`tfg:cast_${material.getName()}_unfinished_lamp`)
.itemInputs(materialIngotStack)
.notConsumable('tfg:lamp_casting_mold')
.itemOutputs(unfinishedLampStack)
.duration(material.getMass() * 8)
.category(GTRecipeCategories.INGOT_MOLDING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.fluid_solidifier(`tfg:solidify_${material.getName()}_unfinished_lamp`)
.inputFluids(Fluid.of(material.getFluid(), 144))
.notConsumable('tfg:lamp_casting_mold')
.itemOutputs(unfinishedLampStack)
.duration(material.getMass() * 8)
.EUt(GTValues.VA[GTValues.ULV])
}
if (trapdoorStack != null) {
const materialDustStack = ChemicalHelper.get(TagPrefix.dust, material, 1)
const materialIngotStack = ChemicalHelper.get(TagPrefix.ingot, material, 1)
event.recipes.gtceu.macerator(`tfg:macerate_${material.getName()}_trapdoor`)
.itemInputs(trapdoorStack)
.itemOutputs(materialDustStack)
.duration(material.getMass() * 7)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.arc_furnace(`tfg:arc_${material.getName()}_trapdoor`)
.itemInputs(trapdoorStack)
.itemOutputs(materialIngotStack)
.duration(material.getMass() * 7)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.extractor(`tfg:extract_${material.getName()}_trapdoor`)
.itemInputs(trapdoorStack)
.outputFluids(Fluid.of(material.getFluid(), 144))
.duration(material.getMass() * 7)
.category(GTRecipeCategories.EXTRACTOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.alloy_smelter(`tfg:cast_${material.getName()}_trapdoor`)
.itemInputs(materialIngotStack)
.notConsumable('tfg:trapdoor_casting_mold')
.itemOutputs(trapdoorStack)
.duration(material.getMass() * 8)
.category(GTRecipeCategories.INGOT_MOLDING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.fluid_solidifier(`tfg:solidify_${material.getName()}_trapdoor`)
.inputFluids(Fluid.of(material.getFluid(), 144))
.notConsumable('tfg:trapdoor_casting_mold')
.itemOutputs(trapdoorStack)
.duration(material.getMass() * 7)
.EUt(GTValues.VA[GTValues.ULV])
}
if (chainStack != null) {
const chain2Stack = ChemicalHelper.get(TFGTagPrefix.chain, material, 2)
const materialDustTinyStack = ChemicalHelper.get(TagPrefix.dustTiny, material, 1)
const materialNuggetStack = ChemicalHelper.get(TagPrefix.nugget, material, 1)
const materialIngotStack = ChemicalHelper.get(TagPrefix.ingot, material, 1)
event.recipes.gtceu.macerator(`tfg:macerate_${material.getName()}_chain`)
.itemInputs(chain2Stack)
.itemOutputs(materialDustTinyStack)
.duration(material.getMass() * 3)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.arc_furnace(`tfg:arc_${material.getName()}_chain`)
.itemInputs(chain2Stack)
.itemOutputs(materialNuggetStack)
.duration(material.getMass() * 3)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.extractor(`tfg:extract_${material.getName()}_chain`)
.itemInputs(chainStack)
.outputFluids(Fluid.of(material.getFluid(), 9))
.duration(material.getMass() * 3)
.category(GTRecipeCategories.EXTRACTOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.alloy_smelter(`tfg:cast_${material.getName()}_chain`)
.itemInputs(materialIngotStack)
.notConsumable('tfg:chain_casting_mold')
.itemOutputs(ChemicalHelper.get(TFGTagPrefix.chain, material, 16))
.duration(material.getMass() * 3)
.category(GTRecipeCategories.INGOT_MOLDING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.fluid_solidifier(`tfg:solidify_${material.getName()}_chain`)
.inputFluids(Fluid.of(material.getFluid(), 9))
.notConsumable('tfg:chain_casting_mold')
.itemOutputs(chainStack)
.duration(material.getMass() * 3)
.EUt(GTValues.VA[GTValues.ULV])
}
if (bellStack != null) {
const materialDustStack = ChemicalHelper.get(TagPrefix.dust, material, 1)
const materialIngotStack = ChemicalHelper.get(TagPrefix.ingot, material, 1)
event.recipes.gtceu.macerator(`tfg:macerate_${material.getName()}_bell`)
.itemInputs(bellStack)
.itemOutputs(materialDustStack)
.duration(material.getMass() * 5)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.arc_furnace(`tfg:arc_${material.getName()}_bell`)
.itemInputs(bellStack)
.itemOutputs(materialIngotStack)
.duration(material.getMass() * 5)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.extractor(`tfg:extract_${material.getName()}_bell`)
.itemInputs(bellStack)
.outputFluids(Fluid.of(material.getFluid(), 144))
.duration(material.getMass() * 5)
.category(GTRecipeCategories.EXTRACTOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.alloy_smelter(`tfg:cast_${material.getName()}_bell`)
.itemInputs(materialIngotStack)
.notConsumable('tfg:bell_casting_mold')
.itemOutputs(bellStack)
.duration(material.getMass() * 5)
.category(GTRecipeCategories.INGOT_MOLDING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.fluid_solidifier(`tfg:solidify_${material.getName()}_bell`)
.inputFluids(Fluid.of(material.getFluid(), 144))
.notConsumable('tfg:bell_casting_mold')
.itemOutputs(bellStack)
.duration(material.getMass() * 5)
.EUt(GTValues.VA[GTValues.ULV])
}
if (barsStack != null) {
event.stonecutting(barsStack, ChemicalHelper.get(TagPrefix.ingot, material, 1))
.id(`${material.getName()}_ingot_to_bars`)
}
// Indicators
if (oreProperty != null) {
event.replaceInput({ id: `gtceu:shaped/${material.getName()}_surface_indicator`},
'minecraft:gravel', '#tfc:rock/gravel')
}
})
}

View file

@ -0,0 +1,587 @@
// priority: 0
function removeGTCEURecipes(event) {
global.GTCEU_DISABLED_ITEMS.forEach(item => {
event.remove({ input: item })
event.remove({ output: item })
})
//#region Выход: Крошечная кучка камня
event.remove({ id: 'gtceu:macerator/macerate_stone_button' })
//#endregion
//#region Выход: Маленькая кучка камня
event.remove({ id: 'gtceu:macerator/macerate_stone_stairs' })
event.remove({ id: 'gtceu:macerator/macerate_stone_slab' })
event.remove({ id: 'gtceu:macerator/macerate_stone_brick_stairs' })
event.remove({ id: 'gtceu:macerator/macerate_stone_brick_slab' })
event.remove({ id: 'gtceu:macerator/macerate_sandstone_stairs' })
event.remove({ id: 'gtceu:macerator/macerate_sandstone_slab' })
event.remove({ id: 'gtceu:macerator/macerate_red_sandstone_stairs' })
event.remove({ id: 'gtceu:macerator/macerate_red_sandstone_slab' })
event.remove({ id: 'gtceu:macerator/macerate_granite' })
event.remove({ id: 'gtceu:macerator/macerate_diorite' })
event.remove({ id: 'gtceu:macerator/macerate_cobblestone_slab' })
event.remove({ id: 'gtceu:macerator/macerate_andesite' })
//#endregion
//#region Выход: Кучка камня
event.remove({ id: 'gtceu:macerator/macerate_stone_sword' })
event.remove({ id: 'gtceu:macerator/macerate_stone_shovel' })
event.remove({ id: 'gtceu:macerator/macerate_stone_pressure_plate' })
event.remove({ id: 'gtceu:macerator/macerate_stone_pickaxe' })
event.remove({ id: 'gtceu:macerator/macerate_stone_hoe' })
event.remove({ id: 'gtceu:macerator/macerate_stone_bricks' })
event.remove({ id: 'gtceu:macerator/macerate_stone_axe' })
event.remove({ id: 'gtceu:macerator/macerate_mossy_cobblestone' })
event.remove({ id: 'gtceu:macerator/macerate_cobblestone_wall' })
event.remove({ id: 'gtceu:macerator/macerate_cobblestone' })
event.remove({ id: 'gtceu:macerator/gravel_to_flint' })
event.remove({ id: 'gtceu:macerator/macerate_furnace' })
//#endregion
//#region Deepslate
event.remove({ id: 'gtceu:shaped/deepslate_hammer' })
event.remove({ id: 'gtceu:shaped/cobbled_deepslate_stair_saw' })
event.remove({ id: 'gtceu:shaped/cobbled_deepslate_slab_saw' })
event.remove({ id: 'gtceu:shaped/cobbled_deepslate_wall_saw' })
event.remove({ id: 'gtceu:shaped/cobbled_deepslate_polish_hammer' })
event.remove({ id: 'gtceu:assembler/assemble_cobbled_deepslate_into_stair' })
event.remove({ id: 'gtceu:assembler/assemble_cobbled_deepslate_into_polished' })
event.remove({ id: 'gtceu:assembler/assemble_cobbled_deepslate_into_wall' })
event.remove({ id: 'gtceu:cutter/cut_cobbled_deepslate_into_slab' })
event.remove({ id: 'gtceu:cutter/cut_cobbled_deepslate_into_slab_water' })
event.remove({ id: 'gtceu:cutter/cut_cobbled_deepslate_into_slab_distilled_water' })
event.remove({ id: 'gtceu:shaped/cobbled_deepslate_polished_hammer' })
event.remove({ id: 'gtceu:forming_press/form_cobbled_deepslate_slab_into_pillar' })
event.remove({ id: 'gtceu:shaped/polished_deepslate_stair_saw' })
event.remove({ id: 'gtceu:shaped/polished_deepslate_slab_saw' })
event.remove({ id: 'gtceu:shaped/polished_deepslate_wall_saw' })
event.remove({ id: 'gtceu:shaped/polished_deepslate_polish_hammer' })
event.remove({ id: 'gtceu:assembler/assemble_polished_deepslate_into_stair' })
event.remove({ id: 'gtceu:assembler/assemble_polished_deepslate_into_polished' })
event.remove({ id: 'gtceu:assembler/assemble_polished_deepslate_into_wall' })
event.remove({ id: 'gtceu:cutter/cut_polished_deepslate_into_slab' })
event.remove({ id: 'gtceu:cutter/cut_polished_deepslate_into_slab_water' })
event.remove({ id: 'gtceu:cutter/cut_polished_deepslate_into_slab_distilled_water' })
event.remove({ id: 'gtceu:shaped/deepslate_bricks_hammer' })
event.remove({ id: 'gtceu:shaped/deepslate_bricks_stair_saw' })
event.remove({ id: 'gtceu:shaped/deepslate_bricks_slab_saw' })
event.remove({ id: 'gtceu:shaped/deepslate_bricks_wall_saw' })
event.remove({ id: 'gtceu:shaped/deepslate_bricks_polish_hammer' })
event.remove({ id: 'gtceu:assembler/assemble_deepslate_bricks_into_stair' })
event.remove({ id: 'gtceu:assembler/assemble_deepslate_bricks_into_polished' })
event.remove({ id: 'gtceu:assembler/assemble_deepslate_bricks_into_wall' })
event.remove({ id: 'gtceu:cutter/cut_deepslate_bricks_into_slab' })
event.remove({ id: 'gtceu:cutter/cut_deepslate_bricks_into_slab_water' })
event.remove({ id: 'gtceu:cutter/cut_deepslate_bricks_into_slab_distilled_water' })
event.remove({ id: 'gtceu:shaped/deepslate_tile_hammer' })
event.remove({ id: 'gtceu:shaped/deepslate_tile_stair_saw' })
event.remove({ id: 'gtceu:shaped/deepslate_tile_slab_saw' })
event.remove({ id: 'gtceu:shaped/deepslate_tile_wall_saw' })
event.remove({ id: 'gtceu:shaped/deepslate_tile_polish_hammer' })
event.remove({ id: 'gtceu:assembler/assemble_deepslate_tile_into_stair' })
event.remove({ id: 'gtceu:assembler/assemble_deepslate_tile_into_polished' })
event.remove({ id: 'gtceu:assembler/assemble_deepslate_tile_into_wall' })
event.remove({ id: 'gtceu:cutter/cut_deepslate_tile_into_slab' })
event.remove({ id: 'gtceu:cutter/cut_deepslate_tile_into_slab_water' })
event.remove({ id: 'gtceu:cutter/cut_deepslate_tile_into_slab_distilled_water' })
event.remove({ id: 'gtceu:macerator/macerate_deepslate' })
event.remove({ id: 'gtceu:rock_breaker/deepslate' })
// #endregion
// #region Blackstone
event.remove({ id: 'gtceu:shaped/blackstone_stair_saw' })
event.remove({ id: 'gtceu:shaped/blackstone_slab_saw' })
event.remove({ id: 'gtceu:shaped/blackstone_wall_saw' })
event.remove({ id: 'gtceu:shaped/blackstone_polish_hammer' })
event.remove({ id: 'gtceu:assembler/assemble_blackstone_into_stair' })
event.remove({ id: 'gtceu:assembler/assemble_blackstone_into_polished' })
event.remove({ id: 'gtceu:assembler/assemble_blackstone_into_wall' })
event.remove({ id: 'gtceu:cutter/cut_blackstone_into_slab' })
event.remove({ id: 'gtceu:cutter/cut_blackstone_into_slab_water' })
event.remove({ id: 'gtceu:cutter/cut_blackstone_into_slab_distilled_water' })
event.remove({ id: 'gtceu:shaped/polished_blackstone_hammer' })
event.remove({ id: 'gtceu:shaped/polished_blackstone_stair_saw' })
event.remove({ id: 'gtceu:shaped/polished_blackstone_slab_saw' })
event.remove({ id: 'gtceu:shaped/polished_blackstone_wall_saw' })
event.remove({ id: 'gtceu:shaped/polished_blackstone_polish_hammer' })
event.remove({ id: 'gtceu:assembler/assemble_polished_blackstone_into_stair' })
event.remove({ id: 'gtceu:assembler/assemble_polished_blackstone_into_polished' })
event.remove({ id: 'gtceu:assembler/assemble_polished_blackstone_into_wall' })
event.remove({ id: 'gtceu:cutter/cut_polished_blackstone_into_slab' })
event.remove({ id: 'gtceu:cutter/cut_polished_blackstone_into_slab_water' })
event.remove({ id: 'gtceu:cutter/cut_polished_blackstone_into_slab_distilled_water' })
event.remove({ id: 'gtceu:shaped/polished_blackstone_polished_hammer' })
event.remove({ id: 'gtceu:forming_press/form_polished_blackstone_slab_into_pillar' })
event.remove({ id: 'gtceu:shaped/polished_blackstone_brick_hammer' })
event.remove({ id: 'gtceu:shaped/polished_blackstone_brick_stair_saw' })
event.remove({ id: 'gtceu:shaped/polished_blackstone_brick_slab_saw' })
event.remove({ id: 'gtceu:shaped/polished_blackstone_brick_wall_saw' })
event.remove({ id: 'gtceu:shaped/polished_blackstone_brick_polish_hammer' })
event.remove({ id: 'gtceu:assembler/assemble_polished_blackstone_brick_into_stair' })
event.remove({ id: 'gtceu:assembler/assemble_polished_blackstone_brick_into_polished' })
event.remove({ id: 'gtceu:assembler/assemble_polished_blackstone_brick_into_wall' })
event.remove({ id: 'gtceu:cutter/cut_polished_blackstone_brick_into_slab' })
event.remove({ id: 'gtceu:cutter/cut_polished_blackstone_brick_into_slab_water' })
event.remove({ id: 'gtceu:cutter/cut_polished_blackstone_brick_into_slab_distilled_water' })
event.remove({ id: 'gtceu:rock_breaker/blackstone' })
// #endregion
// #region basalt
event.remove({ id: 'gtceu:shaped/basalt_polish_hammer' })
event.remove({ id: 'gtceu:assembler/assemble_basalt_into_polished' })
// #endregion
// #region Plant Ball
event.remove({ id: 'gtceu:compressor/plant_ball_from_wheat' })
event.remove({ id: 'gtceu:compressor/plant_ball_from_warped_stem' })
event.remove({ id: 'gtceu:compressor/plant_ball_from_crimson_stem' })
event.remove({ id: 'gtceu:compressor/plant_ball_from_tube_coral' })
event.remove({ id: 'gtceu:compressor/plant_ball_from_sugar_cane' })
event.remove({ id: 'gtceu:compressor/plant_ball_from_potato' })
event.remove({ id: 'gtceu:compressor/plant_ball_from_nether_wart' })
event.remove({ id: 'gtceu:compressor/plant_ball_from_horn_coral' })
event.remove({ id: 'gtceu:compressor/plant_ball_from_fire_coral' })
event.remove({ id: 'gtceu:compressor/plant_ball_from_carrot' })
event.remove({ id: 'gtceu:compressor/plant_ball_from_cactus' })
event.remove({ id: 'gtceu:compressor/plant_ball_from_bubble_coral' })
event.remove({ id: 'gtceu:compressor/plant_ball_from_brain_coral' })
event.remove({ id: 'gtceu:compressor/plant_ball_from_beetroot' })
event.remove({ id: 'gtceu:compressor/plant_ball_from_moss' })
// #endregion
// #region Biomass
event.remove({ id: 'gtceu:brewery/biomass_from_sugar_cane' })
event.remove({ id: 'gtceu:brewery/biomass_from_potato' })
event.remove({ id: 'gtceu:brewery/biomass_from_carrot' })
event.remove({ id: 'gtceu:brewery/biomass_from_cactus' })
event.remove({ id: 'gtceu:brewery/biomass_from_beetroot' })
// #endregion
// #region Fish Oil
event.remove({ id: 'gtceu:extractor/fish_oil_from_tropical_fish' })
event.remove({ id: 'gtceu:extractor/fish_oil_from_salmon' })
event.remove({ id: 'gtceu:extractor/fish_oil_from_pufferfish' })
event.remove({ id: 'gtceu:extractor/fish_oil_from_cod' })
// #endregion
// #region Wrought Iron Nugget
event.remove({ output: 'gtceu:wrought_iron_nugget', type: 'minecraft:smelting' })
// #endregion
// #region Seed Oil
event.remove({ id: 'gtceu:extractor/seed_oil_from_tag_seeds' })
event.remove({ id: 'gtceu:extractor/seed_oil_from_pumpkin' })
event.remove({ id: 'gtceu:extractor/seed_oil_from_melon' })
event.remove({ id: 'gtceu:extractor/seed_oil_from_beetroot' })
// #endregion
//#region Выход: Крошечная кучка дерева
event.remove({ id: 'gtceu:macerator/macerate_warped_button' })
event.remove({ id: 'gtceu:macerator/macerate_spruce_button' })
event.remove({ id: 'gtceu:macerator/macerate_oak_button' })
event.remove({ id: 'gtceu:macerator/macerate_mangrove_button' })
event.remove({ id: 'gtceu:macerator/macerate_jungle_button' })
event.remove({ id: 'gtceu:macerator/macerate_dark_oak_button' })
event.remove({ id: 'gtceu:macerator/macerate_crimson_button' })
event.remove({ id: 'gtceu:macerator/macerate_cherry_button' })
event.remove({ id: 'gtceu:macerator/macerate_birch_button' })
event.remove({ id: 'gtceu:macerator/macerate_acacia_button' })
//#endregion
//#region Выход: Маленькая кучка дерева
event.remove({ id: 'gtceu:macerator/macerate_wooden_sword' })
event.remove({ id: 'gtceu:macerator/macerate_wooden_shovel' })
event.remove({ id: 'gtceu:macerator/macerate_wooden_pickaxe' })
event.remove({ id: 'gtceu:macerator/macerate_wooden_hoe' })
event.remove({ id: 'gtceu:macerator/macerate_wooden_axe' })
event.remove({ id: 'gtceu:macerator/macerate_warped_stairs' })
event.remove({ id: 'gtceu:macerator/macerate_warped_slab' })
event.remove({ id: 'gtceu:macerator/macerate_spruce_stairs' })
event.remove({ id: 'gtceu:macerator/macerate_spruce_slab' })
event.remove({ id: 'gtceu:macerator/macerate_oak_stairs' })
event.remove({ id: 'gtceu:macerator/macerate_oak_slab' })
event.remove({ id: 'gtceu:macerator/macerate_mangrove_stairs' })
event.remove({ id: 'gtceu:macerator/macerate_mangrove_slab' })
event.remove({ id: 'gtceu:macerator/macerate_jungle_stairs' })
event.remove({ id: 'gtceu:macerator/macerate_jungle_slab' })
event.remove({ id: 'gtceu:macerator/macerate_iron_sword' })
event.remove({ id: 'gtceu:macerator/macerate_iron_shovel' })
event.remove({ id: 'gtceu:macerator/macerate_iron_pickaxe' })
event.remove({ id: 'gtceu:macerator/macerate_iron_hoe' })
event.remove({ id: 'gtceu:macerator/macerate_iron_axe' })
event.remove({ id: 'gtceu:macerator/macerate_golden_sword' })
event.remove({ id: 'gtceu:macerator/macerate_golden_shovel' })
event.remove({ id: 'gtceu:macerator/macerate_golden_pickaxe' })
event.remove({ id: 'gtceu:macerator/macerate_golden_hoe' })
event.remove({ id: 'gtceu:macerator/macerate_golden_axe' })
event.remove({ id: 'gtceu:macerator/macerate_diamond_sword' })
event.remove({ id: 'gtceu:macerator/macerate_diamond_shovel' })
event.remove({ id: 'gtceu:macerator/macerate_diamond_pickaxe' })
event.remove({ id: 'gtceu:macerator/macerate_diamond_hoe' })
event.remove({ id: 'gtceu:macerator/macerate_diamond_axe' })
event.remove({ id: 'gtceu:macerator/macerate_dark_oak_stairs' })
event.remove({ id: 'gtceu:macerator/macerate_dark_oak_slab' })
event.remove({ id: 'gtceu:macerator/macerate_crimson_stairs' })
event.remove({ id: 'gtceu:macerator/macerate_crimson_slab' })
event.remove({ id: 'gtceu:macerator/macerate_cherry_stairs' })
event.remove({ id: 'gtceu:macerator/macerate_cherry_slab' })
event.remove({ id: 'gtceu:macerator/macerate_birch_stairs' })
event.remove({ id: 'gtceu:macerator/macerate_birch_slab' })
event.remove({ id: 'gtceu:macerator/macerate_acacia_stairs' })
event.remove({ id: 'gtceu:macerator/macerate_acacia_slab' })
//#endregion
//#region Выход: Деревянная пыль
event.remove({ id: 'gtceu:macerator/macerate_trapped_chest' })
event.remove({ id: 'gtceu:macerator/macerate_spruce_planks' })
event.remove({ id: 'gtceu:macerator/macerate_spruce_fence_gate' })
event.remove({ id: 'gtceu:macerator/macerate_spruce_fence' })
event.remove({ id: 'gtceu:macerator/macerate_spruce_door' })
event.remove({ id: 'gtceu:macerator/macerate_spruce_boat' })
event.remove({ id: 'gtceu:macerator/macerate_oak_planks' })
event.remove({ id: 'gtceu:macerator/macerate_oak_fence_gate' })
event.remove({ id: 'gtceu:macerator/macerate_oak_fence' })
event.remove({ id: 'gtceu:macerator/macerate_oak_door' })
event.remove({ id: 'gtceu:macerator/macerate_oak_boat' })
event.remove({ id: 'gtceu:macerator/macerate_mangrove_planks' })
event.remove({ id: 'gtceu:macerator/macerate_mangrove_fence_gate' })
event.remove({ id: 'gtceu:macerator/macerate_mangrove_fence' })
event.remove({ id: 'gtceu:macerator/macerate_mangrove_door' })
event.remove({ id: 'gtceu:macerator/macerate_mangrove_boat' })
event.remove({ id: 'gtceu:macerator/macerate_jungle_planks' })
event.remove({ id: 'gtceu:macerator/macerate_jungle_fence_gate' })
event.remove({ id: 'gtceu:macerator/macerate_jungle_fence' })
event.remove({ id: 'gtceu:macerator/macerate_jungle_door' })
event.remove({ id: 'gtceu:macerator/macerate_jungle_boat' })
event.remove({ id: 'gtceu:macerator/macerate_dark_oak_planks' })
event.remove({ id: 'gtceu:macerator/macerate_dark_oak_fence_gate' })
event.remove({ id: 'gtceu:macerator/macerate_dark_oak_fence' })
event.remove({ id: 'gtceu:macerator/macerate_dark_oak_door' })
event.remove({ id: 'gtceu:macerator/macerate_dark_oak_boat' })
event.remove({ id: 'gtceu:macerator/macerate_crafting_table' })
event.remove({ id: 'gtceu:macerator/macerate_chest' })
event.remove({ id: 'gtceu:macerator/macerate_chest_minecart' })
event.remove({ id: 'gtceu:macerator/macerate_cherry_planks' })
event.remove({ id: 'gtceu:macerator/macerate_cherry_fence_gate' })
event.remove({ id: 'gtceu:macerator/macerate_cherry_fence' })
event.remove({ id: 'gtceu:macerator/macerate_cherry_door' })
event.remove({ id: 'gtceu:macerator/macerate_cherry_boat' })
event.remove({ id: 'gtceu:macerator/macerate_bookshelf' })
event.remove({ id: 'gtceu:macerator/macerate_birch_planks' })
event.remove({ id: 'gtceu:macerator/macerate_birch_fence_gate' })
event.remove({ id: 'gtceu:macerator/macerate_birch_fence' })
event.remove({ id: 'gtceu:macerator/macerate_birch_door' })
event.remove({ id: 'gtceu:macerator/macerate_birch_boat' })
event.remove({ id: 'gtceu:macerator/macerate_acacia_planks' })
event.remove({ id: 'gtceu:macerator/macerate_acacia_fence_gate' })
event.remove({ id: 'gtceu:macerator/macerate_acacia_fence' })
event.remove({ id: 'gtceu:macerator/macerate_acacia_door' })
event.remove({ id: 'gtceu:macerator/macerate_acacia_boat' })
event.remove({ id: 'gtceu:macerator/macerate_bamboo_raft' })
event.remove({ id: 'gtceu:macerator/macerate_crimson_door' })
event.remove({ id: 'gtceu:macerator/macerate_crimson_fence' })
event.remove({ id: 'gtceu:macerator/macerate_crimson_fence_gate' })
event.remove({ id: 'gtceu:macerator/macerate_crimson_planks' })
event.remove({ id: 'gtceu:macerator/macerate_warped_door' })
event.remove({ id: 'gtceu:macerator/macerate_warped_fence' })
event.remove({ id: 'gtceu:macerator/macerate_warped_fence_gate' })
event.remove({ id: 'gtceu:macerator/macerate_warped_planks' })
//#endregion
//#region Выход: Бумажная пыль
event.remove({ id: 'gtceu:shaped/paper_dust' })
//#endregion
//#region Выход: Маленькая кучка мяса
event.remove({ id: 'gtceu:macerator/macerate_steak' })
event.remove({ id: 'gtceu:macerator/macerate_rabbit' })
event.remove({ id: 'gtceu:macerator/macerate_pork_chop' })
//#endregion
// #region Meat
event.remove({ id: 'gtceu:macerator/macerate_mutton' })
event.remove({ id: 'gtceu:macerator/macerate_chicken' })
// #endregion
//#region Выход: Пшеничная пыль
event.remove({ id: 'gtceu:shapeless/wheat_to_dust' })
event.remove({ id: 'gtceu:macerator/macerate_wheat' })
event.remove({ id: 'gtceu:macerator/macerate_hay_block' })
//#endregion
//#region Выход: Слиток кованного железа
event.remove({ id: 'gtceu:arc_furnace/arc_chest_minecart' })
event.remove({ id: 'gtceu:arc_furnace/arc_iron_trapdoor' })
event.remove({ id: 'gtceu:arc_furnace/arc_damaged_anvil' })
event.remove({ id: 'gtceu:arc_furnace/arc_chipped_anvil' })
event.remove({ id: 'gtceu:arc_furnace/arc_anvil' })
event.remove({ id: 'gtceu:arc_furnace/arc_furnace_minecart' })
event.remove({ id: 'gtceu:arc_furnace/arc_compass' })
//#endregion
//#region Выход: Кованные самородки
event.remove({ id: 'gtceu:arc_furnace/arc_iron_bars' })
//#endregion
//#region Выход: Железная пыль
event.remove({ id: 'gtceu:macerator/macerate_iron_trapdoor' })
event.remove({ id: 'gtceu:macerator/macerate_damaged_anvil' })
event.remove({ id: 'gtceu:macerator/macerate_chipped_anvil' })
event.remove({ id: 'gtceu:macerator/macerate_anvil' })
event.remove({ id: 'gtceu:macerator/macerate_furnace_minecart' })
event.remove({ id: 'gtceu:macerator/macerate_bucket' })
event.remove({ id: 'gtceu:macerator/macerate_compass' })
//#endregion
//#region Выход: Крошечная железная пыль
event.remove({ id: 'gtceu:macerator/macerate_iron_bars' })
//#endregion
//#region Выход: Крошечная пыль золы
event.remove({ id: 'gtceu:arc_furnace/arc_bookshelf' })
//#endregion
//#region Выход: Пыль незерака
event.remove({ id: 'gtceu:macerator/macerate_nether_brick_stairs' })
event.remove({ id: 'gtceu:macerator/macerate_nether_brick_slab' })
//#endregion
//#region Выход: Пыль базальта
event.remove({ id: 'gtceu:macerator/macerate_basalt' })
//#endregion
//#region Выход: Слиток камня
event.remove({ id: 'gtceu:alloy_smelter/alloy_smelt_stone_to_ingot' })
//#endregion
//#region Выход: Бронзовые машины (Плюс их декрафты)
event.remove({ id: 'gtceu:shaped/bronze_hull' })
event.remove({ id: 'gtceu:arc_furnace/arc_bronze_machine_casing' })
event.remove({ id: 'gtceu:macerator/macerate_bronze_machine_casing' })
event.remove({ id: 'gtceu:shaped/steam_extractor_bronze' })
event.remove({ id: 'gtceu:arc_furnace/arc_lp_steam_extractor' })
event.remove({ id: 'gtceu:macerator/macerate_lp_steam_extractor' })
event.remove({ id: 'gtceu:shaped/steam_macerator_bronze' })
event.remove({ id: 'gtceu:arc_furnace/arc_lp_steam_macerator' })
event.remove({ id: 'gtceu:macerator/macerate_lp_steam_macerator' })
event.remove({ id: 'gtceu:shaped/steam_compressor_bronze' })
event.remove({ id: 'gtceu:arc_furnace/arc_lp_steam_compressor' })
event.remove({ id: 'gtceu:macerator/macerate_lp_steam_compressor' })
event.remove({ id: 'gtceu:shaped/steam_hammer_bronze' })
event.remove({ id: 'gtceu:arc_furnace/arc_lp_steam_forge_hammer' })
event.remove({ id: 'gtceu:macerator/macerate_lp_steam_forge_hammer' })
event.remove({ id: 'gtceu:shaped/steam_furnace_bronze' })
event.remove({ id: 'gtceu:arc_furnace/arc_lp_steam_furnace' })
event.remove({ id: 'gtceu:macerator/macerate_lp_steam_furnace' })
event.remove({ id: 'gtceu:shaped/steam_alloy_smelter_bronze' })
event.remove({ id: 'gtceu:arc_furnace/arc_lp_steam_alloy_smelter' })
event.remove({ id: 'gtceu:macerator/macerate_lp_steam_alloy_smelter' })
event.remove({ id: 'gtceu:shaped/steam_rock_breaker_bronze' })
event.remove({ id: 'gtceu:arc_furnace/arc_lp_steam_rock_crusher' })
event.remove({ id: 'gtceu:macerator/macerate_lp_steam_rock_crusher' })
event.remove({ id: 'gtceu:shaped/steam_miner_bronze' })
event.remove({ id: 'gtceu:arc_furnace/arc_steam_miner_bronze' })
event.remove({ id: 'gtceu:macerator/macerate_steam_miner_bronze' })
event.remove({ id: 'gtceu:shaped/steam_miner_bronze' })
event.remove({ id: 'gtceu:arc_furnace/arc_steam_miner_bronze' })
event.remove({ id: 'gtceu:macerator/macerate_steam_miner_bronze' })
event.remove({ id: 'gtceu:shaped/steam_miner_steel' })
event.remove({ id: 'gtceu:arc_furnace/arc_steam_miner_steel' })
event.remove({ id: 'gtceu:macerator/macerate_steam_miner_steel' })
// #endregion
//#region Выход: некоторые рецепты пылей
event.remove({ id: 'gtceu:shapeless/dust_brass' })
event.remove({ id: 'gtceu:shapeless/glass_dust_flint' })
event.remove({ id: 'gtceu:shapeless/dust_bronze' })
event.remove({ id: 'gtceu:shapeless/potin_dust' })
//#endregion
// Удаление рецептов связанных с Primitive Blast Furnace
event.remove({ id: 'gtceu:arc_furnace/arc_primitive_blast_furnace' })
event.remove({ id: 'gtceu:macerator/macerate_primitive_blast_furnace' })
// Удаление рецепта беск. воды кавера
event.remove('gtceu:assembler/cover_infinite_water')
// Удаление рецептов помпы
event.remove('gtceu:shaped/pump_deck')
event.remove('gtceu:shaped/pump_hatch')
event.remove('gtceu:shaped/primitive_pump')
// Удаление рецептов связанных с Barrel
event.remove({ id: 'gtceu:shaped/wooden_barrel' })
event.remove({ id: 'gtceu:assembler/wood_barrel' })
event.remove({ id: 'gtceu:arc_furnace/arc_wood_drum' })
event.remove({ id: 'gtceu:macerator/macerate_wood_drum' })
// Удаление рецептов связанных с FireBricks
event.remove({ id: 'gtceu:shaped/casing_primitive_bricks' })
event.remove({ id: 'gtceu:macerator/macerate_firebricks' })
event.remove({ id: 'gtceu:extractor/extract_primitive_bricks' })
// Удаление рецептов связанных с FireBrick
event.remove({ id: 'gtceu:smelting/fireclay_brick' })
event.remove({ id: 'gtceu:macerator/macerate_firebrick' })
// Clay from mud
event.remove({ id: 'gtceu:compressor/mud_to_clay' })
// Rubber extraction
event.remove({ id: 'gtceu:extractor/extract_raw_rubber_dust' })
event.remove({ id: 'gtceu:extractor/raw_rubber_from_resin' })
event.remove({ id: 'gtceu:extractor/raw_rubber_from_slime' })
// Mortar
event.remove({ id: 'gtceu:shaped/gem_to_dust_coal_chipped_gem' })
event.remove({ id: 'gtceu:shaped/gem_to_dust_coke_chipped_gem' })
event.remove({ id: 'gtceu:shaped/sandstone_polished_hammer' })
event.remove({ id: 'gtceu:shaped/stone_brick_polished_hammer' })
event.remove({ id: 'gtceu:shaped/purpur_polished_hammer' })
event.remove({ id: 'gtceu:shaped/red_sandstone_polished_hammer' })
event.remove({ id: 'gtceu:shaped/nether_bricks_polished_hammer' })
event.remove({ id: 'gtceu:shaped_fluid_container/brick_from_water' })
// Gears
event.remove({ id: 'gtceu:extruder/extrude_wood_ingot_to_small_gear' })
event.remove({ id: 'gtceu:alloy_smelter/alloy_smelt_wood_ingot_to_small_gear' })
// Misc vanilla stuff
event.remove({ id: 'gtceu:shaped/observer' })
event.remove({ id: 'gtceu:shaped/observer_certus' })
event.remove({ id: 'gtceu:shaped/observer_quartzite' })
event.remove({ id: 'gtceu:shaped/piston_iron' })
event.remove({ id: 'gtceu:shaped/comparator' })
event.remove({ id: 'gtceu:shaped/repeater' })
event.remove({ id: 'gtceu:shaped/crossbow' })
event.remove({ id: 'gtceu:shaped/spyglass' })
event.remove({ id: 'gtceu:shaped/lead' })
event.remove({ id: 'gtceu:shaped/target' })
event.remove({ id: 'gtceu:shaped/lectern' })
event.remove({ id: 'gtceu:shaped/item_frame' })
event.remove({ id: 'gtceu:shaped/clock' })
event.remove({ id: 'gtceu:shaped/loom' })
event.remove({ id: 'gtceu:shaped/scaffolding' })
event.remove({ id: 'gtceu:shaped/bow' })
event.remove({ id: 'gtceu:shaped/leather_horse_armor' })
event.remove({ id: 'gtceu:shaped/bowl' })
event.remove({ id: 'gtceu:shaped/flower_pot' })
event.remove({ id: 'gtceu:shaped/jack_o_lantern' })
event.remove({ id: 'gtceu:shaped/armor_stand' })
event.remove({ id: 'gtceu:shaped/white_bed' })
event.remove({ id: 'gtceu:shaped/light_gray_bed' })
event.remove({ id: 'gtceu:shaped/gray_bed' })
event.remove({ id: 'gtceu:shaped/black_bed' })
event.remove({ id: 'gtceu:shaped/brown_bed' })
event.remove({ id: 'gtceu:shaped/red_bed' })
event.remove({ id: 'gtceu:shaped/orange_bed' })
event.remove({ id: 'gtceu:shaped/yellow_bed' })
event.remove({ id: 'gtceu:shaped/lime_bed' })
event.remove({ id: 'gtceu:shaped/green_bed' })
event.remove({ id: 'gtceu:shaped/cyan_bed' })
event.remove({ id: 'gtceu:shaped/light_blue_bed' })
event.remove({ id: 'gtceu:shaped/blue_bed' })
event.remove({ id: 'gtceu:shaped/purple_bed' })
event.remove({ id: 'gtceu:shaped/magenta_bed' })
event.remove({ id: 'gtceu:shaped/pink_bed' })
event.remove({ id: 'gtceu:shaped/flour_to_dough' })
event.remove({ id: 'gtceu:shaped/grindstone' })
event.remove({ id: 'gtceu:shaped/treated_trapdoor_iron' })
event.remove({ id: 'gtceu:shaped/treated_trapdoor_steel' })
event.remove({ id: 'gtceu:shaped/treated_door' })
event.remove({ id: 'gtceu:shaped/barrel' })
event.remove({ id: 'gtceu:shaped/book' })
event.remove({ id: 'gtceu:shaped/bucket_of_concrete' })
event.remove({ id: 'gtceu:shaped_fluid_container/treated_wood_planks' })
event.remove({ id: 'gtceu:assembler/bell' })
event.remove({ id: 'gtceu:assembler/armor_stand' })
event.remove({ id: 'gtceu:assembler/piston_stainless_steel' })
event.remove({ id: 'gtceu:assembler/treated_trapdoor_iron' })
event.remove({ id: 'gtceu:assembler/treated_trapdoor_steel' })
event.remove({ id: 'gtceu:assembler/treated_door' })
event.remove({ id: 'gtceu:assembler/barrel' })
}

View file

@ -1,57 +1,115 @@
// priority: 0
const registerGTCEUItemTags = (event) => {
// Удаление тегов у отключенных предметов
global.GTCEU_DISABLED_ITEMS.forEach(item => {
event.removeAllTagsFrom(item)
event.add('c:hidden_from_recipe_viewers', item)
})
global.GTCEU_HIDED_ITEMS.forEach(item => {
event.add('c:hidden_from_recipe_viewers', item)
})
// Удаление тегов у отключенных предметов
global.GTCEU_DISABLED_ITEMS.forEach(item => {
event.removeAllTagsFrom(item)
event.add('c:hidden_from_recipe_viewers', item)
})
global.GTCEU_ARMORS.forEach(item => {
event.add('minecraft:trimmable_armor', item)
})
global.GTCEU_HIDED_ITEMS.forEach(item => {
event.add('c:hidden_from_recipe_viewers', item)
})
// Добавление тега EMI для скрытия всех руд
event.add('c:hidden_from_recipe_viewers', '#forge:ores')
global.GTCEU_ARMORS.forEach(item => {
event.add('minecraft:trimmable_armor', item)
})
//#region Пыли стоунтайпов в один тэг
event.add('tfg:stone_dusts', 'tfg:gabbro_dust')
event.add('tfg:stone_dusts', 'tfg:shale_dust')
event.add('tfg:stone_dusts', 'tfg:claystone_dust')
event.add('tfg:stone_dusts', 'tfg:limestone_dust')
event.add('tfg:stone_dusts', 'tfg:conglomerate_dust')
event.add('tfg:stone_dusts', 'tfg:dolomite_dust')
event.add('tfg:stone_dusts', 'tfg:chert_dust')
event.add('tfg:stone_dusts', 'tfg:chalk_dust')
event.add('tfg:stone_dusts', 'tfg:rhyolite_dust')
event.add('tfg:stone_dusts', 'tfg:dacite_dust')
event.add('tfg:stone_dusts', 'gtceu:quartzite_dust')
event.add('tfg:stone_dusts', 'tfg:slate_dust')
event.add('tfg:stone_dusts', 'tfg:phyllite_dust')
event.add('tfg:stone_dusts', 'tfg:schist_dust')
event.add('tfg:stone_dusts', 'tfg:gneiss_dust')
event.add('tfg:stone_dusts', 'gtceu:marble_dust')
event.add('tfg:stone_dusts', 'gtceu:basalt_dust')
event.add('tfg:stone_dusts', 'gtceu:diorite_dust')
event.add('tfg:stone_dusts', 'gtceu:andesite_dust')
event.add('tfg:stone_dusts', 'gtceu:granite_dust')
// Добавление тега EMI для скрытия всех руд
event.add('c:hidden_from_recipe_viewers', '#forge:ores')
event.add('tfg:stone_dusts', 'gtceu:stone_dust')
//#region Пыли стоунтайпов в один тэг
event.add('tfg:stone_dusts', 'tfg:gabbro_dust')
event.add('tfg:stone_dusts', 'tfg:shale_dust')
event.add('tfg:stone_dusts', 'tfg:claystone_dust')
event.add('tfg:stone_dusts', 'tfg:limestone_dust')
event.add('tfg:stone_dusts', 'tfg:conglomerate_dust')
event.add('tfg:stone_dusts', 'tfg:dolomite_dust')
event.add('tfg:stone_dusts', 'tfg:chert_dust')
event.add('tfg:stone_dusts', 'tfg:chalk_dust')
event.add('tfg:stone_dusts', 'tfg:rhyolite_dust')
event.add('tfg:stone_dusts', 'tfg:dacite_dust')
event.add('tfg:stone_dusts', 'gtceu:quartzite_dust')
event.add('tfg:stone_dusts', 'tfg:slate_dust')
event.add('tfg:stone_dusts', 'tfg:phyllite_dust')
event.add('tfg:stone_dusts', 'tfg:schist_dust')
event.add('tfg:stone_dusts', 'tfg:gneiss_dust')
event.add('tfg:stone_dusts', 'gtceu:marble_dust')
event.add('tfg:stone_dusts', 'gtceu:basalt_dust')
event.add('tfg:stone_dusts', 'gtceu:diorite_dust')
event.add('tfg:stone_dusts', 'gtceu:andesite_dust')
event.add('tfg:stone_dusts', 'gtceu:granite_dust')
event.add('tfg:stone_dusts', 'gtceu:deepslate_dust')
event.add('tfg:stone_dusts', 'gtceu:blackstone_dust')
event.add('tfg:stone_dusts', 'tfg:dripstone_dust')
event.add('tfg:stone_dusts', 'gtceu:stone_dust')
//#endregion
event.remove('minecraft:planks', 'gtceu:treated_wood_planks')
event.add('tfg:sugars', 'minecraft:sugar')
event.add('tfg:sugars', 'afc:birch_sugar')
event.add('tfg:sugars', 'afc:maple_sugar')
//#endregion
global.MINECRAFT_DYE_NAMES.forEach(dyeName =>
{
event.remove('ae2:p2p_attunements/fluid_p2p_tunnel', `gtceu:${dyeName}_dye_bucket`)
})
}
const registerGTCEUBlockTags = (event) => {
// Удаление тегов у отключенных предметов
global.GTCEU_DISABLED_ITEMS.forEach(item => {
event.removeAllTagsFrom(item)
})
// Удаление тегов у отключенных предметов
global.GTCEU_DISABLED_ITEMS.forEach(item => {
event.removeAllTagsFrom(item)
})
// TODO: Ores all broke for some reason? This is a workaround for now
event.add('minecraft:mineable/pickaxe', '#forge:ores')
event.add('minecraft:needs_iron_tool', '#forge:ores')
// Let GT indicators be covered by snow
GTMaterialRegistry.getRegisteredMaterials().forEach(material => {
if (material.hasProperty(PropertyKey.ORE)) {
let indicator = `gtceu:${material.getName()}_indicator`;
event.add('tfg:dust_ore_indicators', indicator)
event.add('tfc:can_be_snow_piled', indicator)
event.add('tfc:can_be_ice_piled', indicator)
if (material.hasProperty(PropertyKey.GEM)) {
let bud = `gtceu:${material.getName()}_bud_indicator`;
event.add('tfg:bud_ore_indicators', bud)
event.add('tfc:can_be_snow_piled', bud)
event.add('tfc:can_be_ice_piled', bud)
event.add('minecraft:mineable/pickaxe', bud)
}
// I LOVE KUBEJS I LOVE KUBEJS I LOVE KUBEJS
let str = `:${ChemicalHelper.get(TagPrefix.rawOreBlock, material, 1).getItem()}`;
if (material == GTMaterials.Copper || material == GTMaterials.Gold || material == GTMaterials.Iron)
str = "minecraft" + str;
else
str = "gtceu" + str;
event.add('tfc:can_collapse', str);
event.add('tfc:can_start_collapse', str);
event.add('tfc:can_trigger_collapse', str);
// Hide these from JEI
event.add('c:hidden_from_recipe_viewers', str);
}
})
}
const registerGTCEUFluidTags = (event) => {
event.add('c:hidden_from_recipe_viewers', /gtceu.*potion.*/)
}

View file

@ -1,88 +1,100 @@
// priority: 0
const generateMixerRecipe = (event, input, fluid_input, output, circuit, fluid_output, duration, EUt, rpm, id) => {
const recipe1 = event.recipes.gtceu.mixer(id)
.itemInputs(input)
.inputFluids(fluid_input)
.itemOutputs(output)
.outputFluids(fluid_output)
.duration(duration)
.EUt(EUt)
const recipe = event.recipes.gtceu.mixer(id)
.itemInputs(input)
.inputFluids(fluid_input)
.itemOutputs(output)
.outputFluids(fluid_output)
.duration(duration)
.EUt(EUt)
const recipe2 = event.recipes.gtceu.create_mixer(id)
.itemInputs(input)
.inputFluids(fluid_input)
.itemOutputs(output)
.outputFluids(fluid_output)
.duration(duration)
.EUt(EUt)
.rpm(rpm)
if (circuit != null) {
recipe1.circuit(circuit)
recipe2.circuit(circuit)
}
if (circuit != null) {
recipe.circuit(circuit)
}
}
const generateCutterRecipe = (event, input, circuit, output, duration, EUt, id) => {
// Вот зачем я, скажете вы, делаю тут всякие костыли,
// потому что блядский разработчик GTCEu не может исправить баги своего мода
// Я так устал..
const generateCutterRecipe = (event, input, output, duration, EUt, id) => {
const recipe1 = event.recipes.gtceu.cutter(`tfg:${id}_water`)
.itemInputs(input)
.inputFluids(Fluid.of('minecraft:water', 4))
.itemOutputs(output)
.duration(duration)
.EUt(EUt)
const recipe2 = event.recipes.gtceu.cutter(`tfg:${id}_dist_water`)
.itemInputs(input)
.inputFluids(Fluid.of('gtceu:distilled_water', 3))
.itemOutputs(output)
.duration(duration)
.EUt(EUt)
const recipe3 = event.recipes.gtceu.cutter(`tfg:${id}_lubricant`)
.itemInputs(input)
.inputFluids(Fluid.of('gtceu:lubricant', 1))
.itemOutputs(output)
.duration(duration)
.EUt(EUt)
event.recipes.createCutting(output, input)
.id(`tfg:cutting/${id}`)
if (circuit != null) {
recipe1.circuit(circuit)
recipe2.circuit(circuit)
recipe3.circuit(circuit)
}
event.recipes.gtceu.cutter(`tfg:${id}`)
.itemInputs(input)
.itemOutputs(output)
.duration(duration)
.EUt(EUt)
}
const generateGreenHouseRecipe = (event, input, fluid_amount, output, id) => {
// Без удобрения
event.recipes.gtceu.greenhouse(id)
.itemInputs(input)
.circuit(1)
.inputFluids(Fluid.of('minecraft:water', fluid_amount))
.itemOutputs(output)
.chancedOutput(input, 7500, 0)
.chancedOutput(input, 5000, 0)
.duration(64000)
.EUt(128)
// С удобрением
event.recipes.gtceu.greenhouse(`${id}_fertilized`)
.itemInputs(input)
.itemInputs('8x gtceu:fertilizer')
.circuit(2)
.inputFluids(Fluid.of('minecraft:water', fluid_amount))
.itemOutputs(output)
.chancedOutput(input, 8500, 0)
.chancedOutput(input, 6000, 0)
.duration(16000)
.EUt(256)
// Без удобрения
event.recipes.gtceu.greenhouse(id)
.itemInputs(input)
.circuit(1)
.inputFluids(Fluid.of('minecraft:water', fluid_amount))
.itemOutputs(output)
.chancedOutput(input, 7500, 0)
.chancedOutput(input, 5000, 0)
.duration(36000) // 30 mins
.EUt(72)
// С удобрением
event.recipes.gtceu.greenhouse(`${id}_fertilized`)
.itemInputs(input)
.itemInputs('8x gtceu:fertilizer')
.circuit(2)
.inputFluids(Fluid.of('minecraft:water', fluid_amount))
.itemOutputs(output)
.chancedOutput(input, 8500, 0)
.chancedOutput(input, 6000, 0)
.duration(12000) // 10 mins
.EUt(196)
}
const getFillingNBT = (material, amount) => {
return {
tank: {
FluidName: Fluid.of(material.getFluid()).getId(),
Amount: amount
}
}
}
function generatePlatedBlockRecipe(event, material) {
let plateItem = ChemicalHelper.get(TagPrefix.plate, material, 1);
let platedBlock = ChemicalHelper.get(TFGTagPrefix.blockPlated, material, 1);
let platedSlab = ChemicalHelper.get(TFGTagPrefix.slabPlated, material, 1);
let platedStair = ChemicalHelper.get(TFGTagPrefix.stairPlated, material, 1);
event.recipes.create.item_application(platedBlock, ['#forge:stone_bricks', plateItem])
.id(`tfg:item_application/${material.getName()}_plated_block`)
event.recipes.createDeploying(platedBlock, ['#forge:stone_bricks', plateItem])
.id(`tfg:deploying/${material.getName()}_plated_block`)
event.recipes.gtceu.assembler(`tfg:assembler/${material.getName()}_plated_block`)
.itemInputs('#forge:stone_bricks', plateItem)
.itemOutputs(platedBlock)
.circuit(10)
.duration(50)
.EUt(4)
event.recipes.create.item_application(platedSlab, ['#tfg:brick_slabs', plateItem])
.id(`tfg:item_application/${material.getName()}_plated_slab`)
event.recipes.createDeploying(platedSlab, ['#tfg:brick_slabs', plateItem])
.id(`tfg:deploying/${material.getName()}_plated_slab`)
event.recipes.gtceu.assembler(`tfg:assembler/${material.getName()}_plated_slab`)
.itemInputs('#tfg:brick_slabs', plateItem)
.itemOutputs(platedSlab)
.circuit(10)
.duration(50)
.EUt(4)
event.recipes.create.item_application(platedStair, ['#tfg:brick_stairs', plateItem])
.id(`tfg:item_application/${material.getName()}_plated_stair`)
event.recipes.createDeploying(platedStair, ['#tfg:brick_stairs', plateItem])
.id(`tfg:deploying/${material.getName()}_plated_stair`)
event.recipes.gtceu.assembler(`tfg:assembler/${material.getName()}_plated_stair`)
.itemInputs('#tfg:brick_stairs', plateItem)
.itemOutputs(platedStair)
.circuit(10)
.duration(50)
.EUt(4)
}