Initial commit

This commit is contained in:
2025-02-02 10:53:17 +01:00
commit e096b14780
367 changed files with 22838 additions and 0 deletions

54
kubejs/server_scripts/grist.js Executable file
View File

@ -0,0 +1,54 @@
ServerEvents.recipes(event => {
// The four elements of malloc
// Farming - Plants, foods, cooking, etc
// Build - Placing blocks, destroying blocks, processing ores
// Energetic - Energy production, redstone, mechanisms, pistons
// Magnetic - enchanting, magic items, etc
// Grist groups
// Primordeal - used in nearly all tier'd recipes
// Farming - For organics, fertilizer, usage in insolator, hoe/scythe parts for silentgear?
// Build - For creating building gadgets, construction paste, modular routers, darkutilities parts...? usage in pulverizer?
// Energetic - Power production, redstone gadgets, anything that needs RF
// Intelligent - Enchanting, magic items, teleportation, item storage, automation
// Universal - combination of all top tiers from all groups, works like all other types in machines, recipes, etc
/*
Progression recipes
Primordeal grist - just a combination of each of the four elements
Side story lines / mod exploration lines:
Exploration:
Transportation: waystones, summoning horses, immersive aircraft, warp plates, tempad, warp scrolls, warp stone
Dog training: vanilla dog achievement, treats, dog training achievement, beds, collars, healing, armors
Survival: heartstones, scaling health, sleeping bags, caupona portable jar + aspics, auto-feeding backpack
Exploration: bounty boards, visiting dungeons galore, biomes, finding shack achievement, finding tablets, tablet table, visiting biomes, collecting items and achievements
Tools and equipment: apotheosis, exposure, silent gear tools + armor, flux drill, flux saw, backpacks, chalk, ...?
Combat: attack dummy, silent gear weapons, attack ars runes, gateway orbs, spawners, apotheosis bosses
Base building:
Aesthetics: comforts, chimneys, chipped, chisel, furniture
Infrastructure: sophisticated storage, refined storage, elevators, mighty mail, chimes, cooking for blockheads, caupona spas
Base building: chimes, iron furnaces, cooking for blockheads
Fine Dining: neopolitan, Croptopia, Sushi Go Crafting, Farmer's Delight, Caupona, Vinery, brewery, bakery, candelight, teas, sandwich mod
Creative mode: angel ring, ...?
Achievements: killed xxx zombies, visited all alex's biomes, looted xxx chests, visited every dungeon, 8x compressed blocks, grist tiers, spice of life achievements
*/
/*event.custom({
type: "apotheosis:enchanting",
input: {
item: "kubejs:unstable_grist_capacitor"
},
requirements: {
eterna: 40,
quanta: 15,
arcana: 60
},
max_requirements: {
eterna: -1,
quanta: 25,
arcana: -1
},
result: Item.of('kubejs:grist_energetic_improved').toJson()
});*/
});

View File

@ -0,0 +1,140 @@
ServerEvents.recipes(event => {
/*
Agricultural grist
none -> basic: plant some wheat, make dough, cook with veggies and meat -> unlock early mob farming, botany pots, kitchen parts
basic grist comes from flour + primordeal grist + veggies cooked in a pot with a block of basic primordeal
after you get basic grist, you can smelt basic grist with dough..?
basic grist comes from basic grist + block of primordeal + dough + yeast
your first basic grist comes from chutney + primordeal + meat + dough + yeast
chutney comes from primordeal grist + sugar + fruit + caupona vinegar + chives
*/
event.custom({
type: 'farmersdelight:cooking',
cookingtime: 400,
experience: 5.0,
ingredients: [
{item: 'kubejs:grist_primordeal_basic_block'},
{item: 'minecraft:sugar'},
{item: 'caupona:vinegar_spice_jar'},
{tag: 'forge:fruits'},
{tag: 'forge:fruits'},
{item: 'caupona:chives_spice_jar'},
],
result: {item: 'kubejs:grist_chutney'}
});
event.custom({
type: 'farmersdelight:cooking',
cookingtime: 600,
experience: 1.0,
ingredients: [
{item: 'kubejs:grist_primordeal_basic_block'},
{item: 'kubejs:grist_chutney'},
{tag: 'forge:foods/meat/cooked'},
{tag: 'forge:doughs'},
{item: 'bakery:yeast'}
],
result: {item: 'kubejs:grist_agricultural_basic', count: 2}
});
event.custom({
type: 'farmersdelight:cooking',
cookingtime: 200,
experience: 2.0,
ingredients: [
{item: 'kubejs:grist_primordeal_basic_block'},
{tag: 'kubejs:grist/agricultural/basic'},
{tag: 'forge:doughs'},
{item: 'bakery:yeast'}
],
result: {item: 'kubejs:grist_agricultural_basic', count: 2}
});
/*
improved grist comes from cooking improved grist with primordeal and dough
your first improved grist comes from cooking grist treat with grist chutney and improved primordeal block
grist treats come from coating collectorsreap gummies in grist spice
grist spice blend comes from grist morsels + asafoeteda + basic grist resting in a dolum
grist morsels come from dissolving complicated dishes in the dissolution chamber
*/
event.custom({
type: 'farmersdelight:cooking',
cookingtime: 500,
experience: 1.0,
ingredients: [
{item: 'kubejs:grist_primordeal_improved_block'},
{tag: 'kubejs:grist/agricultural/improved'},
{item: 'kubejs:grist_primordeal_improved_block'},
{tag: 'kubejs:grist/agricultural/improved'},
],
result: {item: 'kubejs:grist_agricultural_improved', count: 4}
});
event.custom({
type: 'farmersdelight:cooking',
cookingtime: 500,
experience: 1.0,
ingredients: [
{item: 'kubejs:grist_primordeal_basic_block'},
{item: 'kubejs:grist_treats'},
{item: 'kubejs:grist_treats'},
{item: 'kubejs:grist_treats'},
{item: 'kubejs:grist_chutney'},
{item: 'kubejs:grist_chutney'},
],
result: {item: 'kubejs:grist_agricultural_improved'}
});
event.shaped('kubejs:grist_treats', [
'AAA',
'ABA',
'AAA'
], {
'A': 'kubejs:spiced_grist_blend',
'B': 'croptopia:lemon_coconut_bar'
});
event.custom({
type: 'caupona:dolium',
amount: 1000,
density: 0.0,
items: [
{item: {item: 'kubejs:grist_morsels'}, count:2},
{item: {item: 'kubejs:grist_agricultural_basic_block'}, count:3},
{item: {item: 'caupona:asafoetida'}, count:1}
],
fluid: "kubejs:grist_primordeal_improved_fluid",
keepInfo: false,
output: {
type: 'forge:nbt',
count: 1,
item: 'kubejs:spiced_grist_blend'
}
});
event.custom({
type: "industrialforegoing:dissolution_chamber",
input: [
{tag: 'forge:blts'},
{item: 'kubejs:grist_primordeal_improved'},
{tag: 'forge:apple_pies'},
{tag: 'forge:fruit_smoothies'},
{tag: 'forge:cheeseburgers'},
{item: 'caupona:okroshka'},
{item: 'candlelight:pasta_bolognese'},
{item: 'collectorsreap:prawn_po_boy'},
],
inputFluid: "{Amount:5000,FluidName:\"kubejs:grist_agricultural_basic_fluid\"}",
output: {
count: 1,
item: 'kubejs:grist_morsels'
},
processingTime: 3000
});
/*
radiant grist should require:
more advanced rituals with harder to grab mobs
cooking some pink slime ingots
processing liquid meat
processing some of the vinery fluids
all of the vinery wines in the dissolution chamber
fish?
890101 HNN predictions
emeralds, because villagers?
*/
});

View File

@ -0,0 +1,143 @@
ServerEvents.recipes(event => {
/*
Build grist
none -> basic: create a pulverizer, grind sand into grist -> make basic tier of machines and tools (pulverizer, redstone furnace, alloy smelter, )
basic grist only comes from pulverizing sand into grist, or you get 4x from pulverizing improved grist
pulverizer would require a tin gear which requires four tin ingots plus either one build grist or diamond in the center
basic -> improved: create cobble to gravel to sand to grist generator (with basic power + basic automation) -> overcome the cost of newer machines, world building gadgets, automate food production
full machine would require some pipes automation (intelligent), power (energetic), and food to harvest the materials (agricultural)
all machines required would need gears made from one build grist in the center
machines: pulverizier, sequential crafter...?
after you get improved, you can make the gear die and make gears without grist
3x improved grist can also come from alloy smelting cobblestone, gravel, sand in the right quantities
*/
/*
2x Basic build grist comes from smelting build grist with primordeal
Your first build grist comes from smelting refined aggregate
refined aggregate comes from pulverizing reduced aggregate, which comes from coarse aggregate
coarse aggregate comes from combining sand, clay, gravel, primordeal with an ore hammer
*/
event.recipes.thermal.smelter(
'2x kubejs:grist_build_basic',
['#kubejs:grist/build/basic', 'kubejs:grist_primordeal_basic_block']
);
event.smelting('kubejs:grist_build_basic', 'kubejs:refined_grist_aggregate');
event.recipes.shapeless(
'kubejs:coarse_grist_aggregate', [
'3x #forge:sand',
'minecraft:clay_ball',
'3x #forge:gravel',
'#alltheores:ore_hammers',
'kubejs:grist_primordeal_basic_block'
]);
event.recipes.shapeless(
'kubejs:reduced_grist_aggregate', [
'#alltheores:ore_hammers',
'minecraft:granite',
'kubejs:grist_primordeal_basic',
'6x kubejs:coarse_grist_aggregate'
]);
event.recipes.shapeless(
'2x kubejs:refined_grist_aggregate', [
'#alltheores:ore_hammers',
'kubejs:grist_primordeal_basic',
'5x kubejs:reduced_grist_aggregate'
]);
event.custom(
{
type: "thermal:pulverizer",
ingredients: [
{item: "kubejs:coarse_grist_aggregate"},
],
result: [
{
item: "kubejs:reduced_grist_aggregate",
chance: 0.9
},
{
item: "kubejs:refined_grist_aggregate",
chance: 0.1
}
]
}
);
event.custom(
{
type: "thermal:pulverizer",
ingredients: [
{item: "kubejs:reduced_grist_aggregate"},
],
result: [
{
item: "kubejs:reduced_grist_aggregate",
chance: 0.3
},
{
item: "kubejs:refined_grist_aggregate",
chance: 0.5
}
]
}
);
/*
improved grist comes from crystalizing clay + improved + primordeal liquid
your first improved comes from crystalizing 32 reinforced grist ingots with improved primordeal liquid
grist ingots come from 9 grist nuggets in a servo press
reinforced grist nuggets come from grist blend in a centrifugal separator
grist blend comes from basic + improved primordeal block + sulfur in induction smelter
*/
event.recipes.thermal.crystallizer(
'4x kubejs:grist_build_improved',
['4x minecraft:clay', '2x #kubejs:grist/build/improved', Fluid.of('kubejs:grist_primordeal_improved_fluid', 4500)]
);
event.recipes.thermal.crystallizer(
'kubejs:grist_build_improved',
['32x kubejs:reinforced_grist_ingot', Fluid.of('kubejs:grist_primordeal_improved_fluid', 4000)]
);
event.custom({
type: "thermal:press",
ingredients: [
{ item: 'kubejs:reinforced_grist_nugget', count: 9 },
{ item: "thermal:press_packing_3x3_die" }
],
result: [{item: 'kubejs:reinforced_grist_ingot'}]
});
event.custom({
type: "thermal:centrifuge",
ingredients: [
{ item: 'kubejs:reinforced_grist_blend' },
],
result: [{item: 'kubejs:reinforced_grist_nugget', chance: 0.3}]
});
event.recipes.thermal.smelter(
'kubejs:reinforced_grist_blend',
['32x #kubejs:grist/build/basic', '3x kubejs:grist_primordeal_improved_block', '2x #forge:dusts/sulfur']
);
/*
improved -> radiant: process ores with power generation, new machines, and tool enchants into smelting up grist alloys -> near creative mode world shaping tools, crafting any block
three grades of grist alloy ingots: tempered, perfect, and flawed
radiant grist requires energizing a block of tempered alloy
block of tempered alloy comes from 9 tempered ingots
tempered ingot comes from 9 tempered nuggets + grist paste in a smelter
tempered nuggets come from centrifuing a filled crucible
filled crucibles come from chilling a hot filled crucible
hot filled crucibles come from energizing tempered nuggets with 1x lumium, 1x signalum, 1x improved build block, 1x crucible
perfect alloy comes from smelting perfect alloy nuggets with intelligent catalysts + advanced powder power powder (gemium?)
perfect alloy nugget comes from solidifying 1000mb of liquid alloy in blast chiller with ingot mold
100mb liquid alloy comes from melting one flawed ingot
flawed ingots come from energizing 9 flawed nuggets with tremendous power
flawed nuggets come from ars enchanting with 8x advanced powders around 1x improved build
*/
});

View File

@ -0,0 +1,107 @@
ServerEvents.recipes(event => {
/*
Energetic grist
none -> basic: plant some trees, make charcoal, collect copper + lapis, visit the nether, make basic solar power and fluxducts
powah solar panels require dielectric paste
starter solar panel should generate enough power to smelt 3 stacks of logs in parallel, plus basic storage grid
dielectric paste requires hammer + energetic grist + primordeal + redstone dust + clay
energetic grist comes from smelting gristy paste, or blast chilling improved energetic grist
gristy paste is block of primordeal basic grist block wrapped in redstone block + copper blocks
basic -> improved: build up basic energizer, dump a ton of energy into things -> mid game energy generation
++blazing crystals require blaze powder plus either infused grist capacitors or improved grist
infused grist capcitors are infused in the ars infuser from activated grist capacitors
activated grist capacitors come from crystalzing destabilized grist into basic powah capacitors
destabilized grist comes from magma crucible with inert grist nuggets, 5mb each
inert grist nuggets come from energizing storage parts? + glass + phyto-gro
build grist provides the huge quantity of sand neeed for glass
agricultural grist provides the phyto-gro and source
intelligent grist provides the storage parts
improved -> radiant: build first niotic tier power generator -> unlock end game power
niotic crystal requires either radiant grist or ..?
..? requires
*/
/*
energetic grist comes from energizing energetic + primordeal
your first energetic comes from smelting grist paste
grist paste comes from redstone, obsidian, and primordeal grist
*/
event.smelting('kubejs:grist_energetic_basic', 'kubejs:grist_paste');
event.shaped('18x kubejs:grist_paste', [
'ADA',
'BCB',
'AAA'
], {
'A': 'minecraft:redstone',
'B': '#forge:storage_blocks/copper',
'C': 'kubejs:grist_primordeal_basic_block',
'D': '#alltheores:ore_hammers'
});
event.recipes.powah.energizing(
['kubejs:grist_primordeal_basic_block', '#kubejs:grist/energetic/basic'],
'2x kubejs:grist_energetic_basic',
3000
);
/*
improved comes from energizing improved grist with primordeal
your first improved comes from apotheosis infusing an unstable grist capacitor
unstable capacitors come from filling an infused capacitor with improved liquid
infused grist capcitors are infused in the ars infuser from activated grist capacitors
activated grist capacitors come from crystalzing destabilized grist into basic powah capacitors
destabilized grist comes from magma crucible with inert grist nuggets, 5mb each
inert grist nuggets come from energizing storage parts? + glass + phyto-gro
blazing crystals require blaze powder plus either infused grist capacitors or improved grist
*/
event.recipes.powah.energizing([
'kubejs:grist_energetic_improved',
'kubejs:grist_energetic_improved',
'kubejs:grist_primordeal_improved_block',
'kubejs:grist_primordeal_improved_block',
], '4x kubejs:grist_energetic_improved',
20000
);
event.recipes.powah.energizing([
'#forge:glass',
'thermal:phytogrow',
'#forge:dusts/redstone',
'thermal:rf_coil',
global.nuggetItem('steel'),
'powah:dielectric_paste'
], 'kubejs:inert_grist_nugget', 50000)
event.recipes.thermal.crucible(
Fluid.of('kubejs:destabilized_grist', 15),
'kubejs:inert_grist_nugget'
);
event.recipes.thermal.crystallizer(
'kubejs:activated_grist_capacitor',
['powah:capacitor_hardened', Fluid.of('kubejs:destabilized_grist', 1750)]
);
event.recipes.ars_nouveau.imbuement(
'kubejs:activated_grist_capacitor',
'kubejs:infused_grist_capacitor',
3000,
[]
);
event.recipes.thermal.bottler(
Item.of('kubejs:unstable_grist_capacitor'),
[Fluid.of('kubejs:destabilized_grist', 1250),
Item.of('kubejs:infused_grist_capacitor')]
);
event.recipes.powah.energizing([
'kubejs:unstable_grist_capacitor',
'kubejs:unstable_grist_capacitor',
'kubejs:unstable_grist_capacitor',
'kubejs:unstable_grist_capacitor',
'kubejs:unstable_grist_capacitor',
], 'kubejs:grist_energetic_improved',
50000
);
/*
radiant comes from niotic crystals?
*/
});

View File

@ -0,0 +1,170 @@
ServerEvents.recipes(event => {
/*
Intelligent grist
none -> basic: dig up lapis, hunt down zombies, build an ars infuser, infuse some primordeal grist -> unlock rf grid + external storage, basic pipes
intelligent grist comes from infusing primordeal grist block with intelligent grist
to make the infuser, you need intelligent grist
your first intelligent grist can come from smelting insightful tincture
insightful tincture comes from cooking insightful blend via farmersdelight with a bucket of liquid primordeal grist and zombie flesh
insightful blend comes from combining sacred flesh, lapis, basic grist with an ore hammer
sacred flesh comes from primordeal grist, rotten flesh, gold dust
*/
//event.smelting('kubejs:grist_intelligent_basic', 'kubejs:insightful_tincture');
event.shapeless('kubejs:insightful_blend', [
'2x minecraft:rotten_flesh',
global.dustItem('lapis', 2),
'kubejs:grist_primordeal_basic',
'#alltheores:ore_hammers'
]);
event.custom({
type: "apotheosis:enchanting",
input: {
item: "kubejs:insightful_tincture"
},
requirements: {
eterna: 10,
quanta: 0,
arcana: 0
},
max_requirements: {
eterna: -1,
quanta: 25,
arcana: -1
},
result: Item.of('kubejs:grist_intelligent_basic', 9).toJson()
});
event.shaped('kubejs:sacred_flesh', [
'CAC',
'ABA',
'CAC'
], {
'A': 'kubejs:grist_primordeal_basic',
'B': 'minecraft:rotten_flesh',
'C': global.dustItem('gold')
});
/*event.custom({
type: 'farmersdelight:cooking',
cookingtime: 400,
experience: 5.0,
ingredients: [
{item: 'kubejs:grist_primordeal_basic_block'},
{item: 'kubejs:sacred_flesh'},
{item: 'kubejs:sacred_flesh'},
{item: 'kubejs:insightful_blend'},
{item: 'kubejs:insightful_blend'},
{item: 'kubejs:insightful_blend'}
],
result: {item: 'kubejs:insightful_tincture', count: 2}
});*/
event.shapeless('2x kubejs:insightful_tincture', [
'kubejs:grist_primordeal_basic_block',
'2x kubejs:sacred_flesh',
'2x kubejs:insightful_blend'
]);
event.shapeless('2x kubejs:insightful_tincture', [
'kubejs:grist_primordeal_basic_block',
'#kubejs:grist/intelligent/basic',
'#alltheores:ore_hammers'
]);
event.recipes.ars_nouveau.imbuement(
'kubejs:grist_primordeal_basic_block',
'kubejs:grist_intelligent_basic',
900,
['kubejs:grist_intelligent_basic']
);
/*event.custom({
type: "thermal:press",
ingredients: [
{ item: 'kubejs:grist_primordeal_basic_block' },
{ tag: "kubejs:grist/intelligent/basic" }
],
result: [{item: 'kubejs:insightful_tincture', count: 2}]
});*/
/*event.recipes.ars_nouveau.imbuement(
'kubejs:grist_intelligent_basic',
'kubejs:insightful_blend',
900,
[]
);*/
/*
Improved grist should probably come from the enchanting apparatus
Improve grist comes from infusing priordeal improved with intelligent improved
first improved grist comes from a summoning ritual with sapient focus + each ars elemental lesser focus
sapient focus comes from apotheosis infusion with intelligent focus
intelligent focus comes from summoning ritual with imbued source gems with cognitive alloy
imbued source gems come source gems imbued with 8 intelligent catalysts
catalysts come from source gems crystalized with basic intelligent fluid and sacred flesh
*/
event.recipes.summoningrituals.altar("kubejs:grist_primordeal_improved")
.itemOutput(Item.of('kubejs:grist_intelligent_improved', 4))
.input(Item.of('kubejs:grist_primordeal_improved_block', 2))
.input(Item.of('kubejs:grist_intelligent_improved', 2))
.blockBelow('ars_nouveau:arcane_core');
event.recipes.summoningrituals.altar("kubejs:sapient_focus")
.itemOutput('kubejs:grist_intelligent_improved')
.input('ars_elemental:lesser_fire_focus')
.input('ars_elemental:lesser_water_focus')
.input('ars_elemental:lesser_air_focus')
.input('ars_elemental:lesser_earth_focus')
.sacrifice('pig', 3)
.weather('rain')
.dayTime('night')
.blockBelow('ars_nouveau:arcane_core');
event.custom({
type: "apotheosis:enchanting",
input: {
item: "kubejs:intelligent_focus"
},
requirements: {
eterna: 40,
quanta: 15,
arcana: 60
},
max_requirements: {
eterna: -1,
quanta: 25,
arcana: -1
},
result: Item.of('kubejs:sapient_focus').toJson()
});
event.recipes.summoningrituals.altar('kubejs:grist_primordeal_improved')
.itemOutput('kubejs:intelligent_focus')
.input(Item.of('kubejs:imbued_source_gem', 8))
.input(Item.of('experienceobelisk:cognitive_alloy_block', 3))
.sacrifice('sheep', 6)
.blockBelow('ars_nouveau:arcane_core');
event.recipes.ars_nouveau.imbuement(
'ars_nouveau:source_gem',
'kubejs:imbued_source_gem',
15000,
[
'kubejs:intelligent_catalyst',
'kubejs:intelligent_catalyst',
'kubejs:intelligent_catalyst',
'kubejs:intelligent_catalyst',
'kubejs:intelligent_catalyst',
'kubejs:intelligent_catalyst',
'kubejs:intelligent_catalyst',
'kubejs:intelligent_catalyst',
]
);
event.recipes.thermal.crystallizer(
'kubejs:intelligent_catalyst',
['4x ars_nouveau:source_gem', '16x kubejs:sacred_flesh', Fluid.of('kubejs:grist_intelligent_basic_fluid', 3000)]
);
/*
Radiant comes from the intelligent processors..? elemental mark of mastery?
*/
});

View File

@ -0,0 +1,121 @@
ServerEvents.recipes(event => {
// All grist starts from cobblestone
event.shaped('2x kubejs:grist_primordeal_basic', [
'AAA',
'ABA',
'AAA'
], {
'A': '#forge:cobblestone',
'B': '#forge:gravel'
});
event.shaped('2x kubejs:grist_primordeal_basic_block', [
'AAA',
'ABA',
'AAA'
], {
'A': '#forge:cobblestone',
'B': 'kubejs:grist_essence'
});
// Conversions between fluids and items
global.Grist.forEach(grist => {
let id = grist.id();
let fluidID = grist.fluid().id();
let blockID = grist.block().id();
event.recipes.thermal.crucible(Fluid.of(fluidID, 250), id);
event.recipes.thermal.chiller(id, Fluid.of(fluidID, 250));
// convert between block and normal item
event.shapeless(blockID, [`9x ${id}`]);
event.shapeless(`9x ${id}`, [blockID]);
event.custom({
type: "industrialforegoing:dissolution_chamber",
input: [],
inputFluid: `{Amount:250,FluidName:\"${fluidID}\"}`,
output: {
count: 1,
item: id
},
"processingTime": 50
});
event.custom({
type: "industrialforegoing:dissolution_chamber",
input: [
{item: id}
],
inputFluid: `{Amount:250,FluidName:\"minecraft:water\"}`,
output: {
count: 0,
item: 'minecraft:air'
},
outputFluid: `{Amount:250,FluidName:\"${fluidID}\"}`,
processingTime: 50
});
});
// Progression along primordeals and universals
let _ = [{from: 'basic', to: 'improved'}, {from: 'improved', to: 'radiant'}].forEach(upgrade => {
// Primordeal progression requires one from each element of the lower tier
event.shaped(`kubejs:grist_primordeal_${upgrade.to}`, [
'A B',
' E ',
'C D'
], {
'A': `kubejs:grist_agricultural_${upgrade.from}`,
'B': `kubejs:grist_build_${upgrade.from}`,
'C': `kubejs:grist_energetic_${upgrade.from}`,
'D': `kubejs:grist_intelligent_${upgrade.from}`,
'E': `kubejs:grist_primordeal_${upgrade.from}`,
});
// After you've unlocked the next tier, you can use the elements of this tier plus one lower primordeal to make more primordeal
event.shaped(`8x kubejs:grist_primordeal_${upgrade.to}_block`, [
'AAB',
'CEB',
'CDD'
], {
'A': `kubejs:grist_agricultural_${upgrade.to}`,
'B': `kubejs:grist_build_${upgrade.to}`,
'C': `kubejs:grist_energetic_${upgrade.to}`,
'D': `kubejs:grist_intelligent_${upgrade.to}`,
'E': `kubejs:grist_primordeal_${upgrade.from}`,
});
// Universal grist is cobble surrounded by lower tier universal and primordeal
event.shaped(`kubejs:grist_universal_${upgrade.to}`, [
'ABA',
'BCB',
'ABA'
], {
'A': `kubejs:grist_universal_${upgrade.from}`,
'B': `kubejs:grist_primordeal_${upgrade.from}`,
'C': '#forge:cobblestone'
});
})
// Basic primordeal gets a special case..
event.shaped(`4x kubejs:grist_primordeal_basic_block`, [
'AAB',
'CEB',
'CDD'
], {
'A': `kubejs:grist_agricultural_basic`,
'B': `kubejs:grist_build_basic`,
'C': `kubejs:grist_energetic_basic`,
'D': `kubejs:grist_intelligent_basic`,
'E': '#forge:cobblestone',
});
// Finally, start creative-tier grist
event.shaped('kubejs:grist_universal_basic', [
'A B',
' E ',
'C D'
], {
'A': '#kubejs:grist/agricultural/radiant',
'B': '#kubejs:grist/build/radiant',
'C': '#kubejs:grist/energetic/radiant',
'D': '#kubejs:grist/intelligent/radiant',
'E': '#kubejs:grist/primordeal/radiant'
})
});

View File

@ -0,0 +1,23 @@
ServerEvents.tags('item', event => {
global.Grist.forEach(grist => {
grist.tags().forEach(tagName => {
event.add(tagName, grist.id());
});
});
/*global.GRIST_ELEMENTS.forEach(element => {
global.GRIST_TIERS.forEach(tier => {
event.add(`kubejs:grist/${element}/${tier}`, `kubejs:grist_${element}_${tier}`)
event.add(`kubejs:grist/${element}`, `kubejs:grist_${element}_${tier}`)
event.add(`kubejs:grist/${element}/${tier}`, `kubejs:grist_universal_${tier}`)
event.add('kubejs:grist', `kubejs:grist_${element}_${tier}`)
})
})
global.GRIST_PRIMITIVES.forEach(element => {
global.GRIST_TIERS.forEach(tier => {
event.add(`kubejs:grist/${element}/${tier}`, `kubejs:grist_${element}_${tier}`)
event.add('kubejs:grist', `kubejs:grist_${element}_${tier}`)
})
})*/
});

44
kubejs/server_scripts/init.js Executable file
View File

@ -0,0 +1,44 @@
// priority: 0
global.metalForm = (metal, tag, form, qty) => {
if (qty == undefined) {
qty = 1;
}
let itemType = AlmostUnified.getPreferredItemForTag(`forge:${tag}/${metal}`);
if (itemType.id == 'minecraft:air') {
console.log(`metals: ${metal} ${form} has unknown tag forge:${tag}/${metal}?`)
let ret = Item.of(`alltheores:${metal}_${form}`);
if (ret.id == "minecraft:air") {
return Item.of(`thermal:${metal}_${form}`);
}
return ret;
}
console.log(`metals: forge:${tag}/${metal} found`);
return itemType;
}
global.dustItem = (material, qty) => {
return global.metalForm(material, 'dusts', 'dust', qty);
}
global.ingotItem = (material, qty) => {
return global.metalForm(material, 'ingots', 'ingot', qty);
}
global.gearItem = (material, qty) => {
return global.metalForm(material, 'gears', 'gear', qty);
}
global.nuggetItem = (material, qty) => {
return global.metalForm(material, 'nuggets', 'nugget', qty);
}
global.replaceInputs = (evt, filter, replaceMap) => {
replaceMap.forEach(mapped => {
evt.replaceInput(
filter,
mapped[0],
mapped[1]
);
})
}

View File

View File

@ -0,0 +1,225 @@
ServerEvents.recipes(event => {
// Metal tiers:
// Copper, iron, tin, nickel, gold, zinc, brass, invar, bronze - Pre-basic build tier, the only ores that don't require a pulverizer or smelter to process
// silver, platinum, lead, iridum, osmium - Gated behind the pulverizer
// lumium, enderium, electrum, signalum, steel - Alloys are gated behind the smelter as well
// uranium - requires basic energetic grist to energize into ingots
// Gear tiers:
// copper, iron, tin, nickel, zinc, brass, bronze - Pre-gear die tier
// invar, bronze, brass - the only alloys you can make without grist
// constantan - requires 1 build grist to make the dust alloy
// invar, gold, silver, electrum, signalum, lead, steel - Gated behind gear die
// lumium, enderium, other alloys - Gated behind heavy duty gear die
let metalForm = (metal, tag, form) => {
let itemType = AlmostUnified.getPreferredItemForTag(`forge:${tag}/${metal}`);
if (itemType.id == 'minecraft:air') {
console.log(`metals: ${metal} ${form} has unknown tag forge:${tag}/${metal}?`)
let ret = Item.of(`alltheores:${metal}_${form}`);
if (ret.id == "minecraft:air") {
return Item.of(`thermal:${metal}_${form}`);
}
return ret;
}
console.log(`metals: forge:${tag}/${metal} found`);
return itemType;
}
event.shapeless('thermal:quartz_dust', ['8x minecraft:granite', '#alltheores:ore_hammers']);
event.shapeless('thermal:quartz_dust', ['minecraft:quartz', '#alltheores:ore_hammers']);
// All metals can be processed in the pulverizer, make plates in the press, and make gears with the die
{
let _ = ['copper', 'rose_gold', 'aluminum', 'constantan', 'iron', 'tin', 'nickel', 'gold', 'zinc', 'brass', 'invar', 'bronze', 'silver', 'platinum', 'lead', 'iridium', 'osmium', 'lumium', 'enderium', 'electrum', 'signalum', 'steel', 'uranium'].forEach(metal => {
console.log(`Setting up ${metal} processing...`);
let gearType = metalForm(metal, 'gears', 'gear');
let dustType = metalForm(metal, 'dusts', 'dust');
let plateType = metalForm(metal, 'plates', 'plate');
let ingotType = metalForm(metal, 'ingots', 'ingot');
let rawType = metalForm(metal, 'raw_materials', 'ore');
let blockType = metalForm(`raw_${metal}`, 'storage_blocks', 'block');
event.remove({output: gearType});
event.remove({output: plateType});
event.remove({input: `#forge:ores/${metal}`});
event.remove({input: `#forge:raw_materials/${metal}`});
// By default, you can't make any blends in the crafting table.
event.remove({output: dustType, type: 'minecraft:crafting'});
event.remove({output: ingotType, input: 'minecraft:fire_charge'});
event.remove({id: `alltheores:${metal}_dust_from_alloy_blending`});
console.log(`crushing ${rawType.toJson()} ${dustType.toJson()}`);
if (rawType.id != "minecraft:air") {
event.custom({
type: "thermal:pulverizer",
ingredients: [
{tag: `forge:raw_materials/${metal}`}
],
result: [
{item: dustType.id, chance: 1.05},
{item: dustType.id, chance: 0.25}
],
experience: 0.5
});
}
if (blockType.id != "minecraft:air") {
event.custom({
type: "thermal:pulverizer",
ingredients: [
{tag: `forge:storage_blocks/raw_${metal}`}
],
result: [
{item: dustType.id, chance: 1.05 * 9},
{item: dustType.id, chance: 0.25 * 9}
],
experience: 0.5
});
}
// 1 dust = 1 ingot
event.custom({
type: "thermal:pulverizer",
ingredients: [
ingotType.toJson()
],
result: [
dustType.toJson()
],
});
// 4 ingots = 1 gear
event.custom({
type: "thermal:press",
ingredients: [
ingotType.withCount(4).toJson(),
{ item: "thermal:press_gear_die" }
],
result: [gearType.toJson()]
});
// 1 ingot = 1 plate
event.custom({
type: "thermal:press",
ingredients: [
ingotType.toJson(),
],
result: [plateType.toJson()]
});
});}
// But only these metals can be processed without a machine
{let _ = ['copper', 'iron', 'tin', 'nickel', 'zinc', 'brass', 'bronze', 'lead', 'aluminum'].forEach(metal => {
console.log(`Setting up ${metal} manual processing...`);
let gearID = metalForm(metal, 'gears', 'gear');
let plateID = metalForm(metal, 'plates', 'plate');
let dustID = metalForm(metal, 'dusts', 'dust');
event.shaped(gearID, [
' A ',
'ABA',
' A '
], {
'A': global.ingotItem(metal),
'B': '#forge:gems'
});
event.shapeless(plateID, [global.ingotItem(metal, 2), '#alltheores:ore_hammers']);
event.shapeless(dustID, [global.ingotItem(metal), '#alltheores:ore_hammers']);
});}
// And only these ores can be hammered
{let _ = ['copper', 'iron', 'tin', 'nickel', 'zinc', 'lead', 'aluminum', 'gold'].forEach(ore => {
console.log(`Setting up ${ore} hammering...`);
let dustType = metalForm(ore, 'dusts', 'dust');
event.shapeless(dustType.withCount(2), [`#forge:raw_materials/${ore}`, '#alltheores:ore_hammers']);
event.shapeless(dustType.withCount(2 * 9), [`#forge:storage_blocks/raw_${ore}`, '#alltheores:ore_hammers']);
});}
// And only copper can be smelted without pulverizing
event.smelting(global.ingotItem('copper'), metalForm('copper', 'raw_materials', 'ore'));
console.log(`Setting up blends...`);
// These are the only blends you can make by hand, aka pre-smelter alloys
event.shapeless(Item.of(metalForm('bronze', 'dusts', 'dust').withCount(2)), [
global.dustItem('tin', 2),
global.dustItem('copper', 2),
'#alltheores:ore_hammers'
]);
event.shapeless(Item.of(metalForm('brass', 'dusts', 'dust').withCount(2)), [
global.dustItem('copper', 3),
global.dustItem('zinc'),
'#alltheores:ore_hammers'
]);
event.shapeless(Item.of(metalForm('invar', 'dusts', 'dust').withCount(2)), [
global.dustItem('iron', 2),
global.dustItem('nickel', 2),
'#alltheores:ore_hammers'
]);
// Constantan dust consumes your first build grist, and it unlocks the basic grist production line
event.shapeless(Item.of(metalForm('constantan', 'dusts', 'dust').withCount(4)),[
global.ingotItem('nickel', 2), global.ingotItem('copper', 2), '#kubejs:grist/build/basic', '#alltheores:ore_hammers'
]);
// Constantan is the only metal you can't work on the bench except for gears
event.shaped('thermal:constantan_gear', [
' A ',
'ABA',
' A '
], {
'A': global.ingotItem('constantan'),
'B': '#forge:gems'
});
event.shaped('thermal:diamond_gear', [
' A ',
'ABA',
' A '
], {
'A': 'minecraft:diamond',
'B': 'minecraft:crying_obsidian'
});
// Lapis can be pulverized and hammered.
event.remove({output: 'thermal:lapis_dust', type: 'thermal:pulverizer'});
event.custom({
type: "thermal:pulverizer",
ingredients: [
{ item: "minecraft:lapis_lazuli" }
],
result: [
{ item: "thermal:lapis_dust", chance: 1.05 },
{ item: "thermal:lapis_dust", chance: 0.25 }
],
experience: 0.5
});
event.shapeless("2x thermal:lapis_dust", ["minecraft:lapis_lazuli", '#alltheores:ore_hammers']);
// Create clay by centrifuging gravel and ash bricks
event.custom({
type: "thermal:centrifuge",
ingredients: [
{ item: "supplementaries:ash_brick" }
],
result: [
{ item: "minecraft:clay_ball", chance: 1.05 },
{ item: "minecraft:clay_ball", chance: 0.25 }
],
experience: 0.5
});
event.custom({
type: "thermal:centrifuge",
ingredients: [
{ item: "minecraft:gravel" }
],
result: [
{ item: "minecraft:sand", chance: 2.00 },
{ item: "minecraft:clay_ball", chance: 0.75 }
],
experience: 0.5
});
})

View File

@ -0,0 +1,56 @@
// priority: -9999
ServerEvents.recipes(event => {
return;
console.log("reporting uncraftables");
global.uncraftables.uncraftable.forEach(uncraftable => {
console.log(`===== ${uncraftable}`);
event.forEachRecipe({output: uncraftable}, recipe => {
console.log(recipe.json.toString());
});
console.log('=== inputs');
event.forEachRecipe({input: uncraftable}, recipe => {
console.log(recipe.json.get('result').toString());
});
});
let _ = ['build', 'agricultural', 'intelligent', 'energetic'].forEach(element => {
let __ = ['basic', 'improved', 'radiant'].forEach(tier => {
console.log(`===== ${tier} ${element}:`);
event.forEachRecipe({input: `kubejs:grist_${element}_${tier}`}, r => {
if (r.json.get('result') == undefined) {
console.log(r.json.toString());
} else {
console.log(r.json.get('result').toString());
}
});
});
});
/*event.forEachRecipe({}, recipe => {
global.uncraftables.uncraftable.forEach(uncrafableItem => {
let asJson = recipe.json;
let foundResults = [];
console.log(recipe.outputValues());
console.log(asJson.toString());
console.log(recipe.getType());
if (recipe.getType() == 'farmersdelight:cutting') {
//foundResults = [asJson.get('result').get('item')];
asJson.get('result').forEach(result => {
foundResults.push(result.get('item'));
});
} else {
foundResults = [asJson.get('result').get('item')];
}
if (foundResults == []) {
console.log(`unknown result in ${asJson.toString()}`);
} else {
foundResults.forEach(output => {
console.log(output);
if (output == uncrafableItem) {
console.log('found uncraftable item:', recipe.json.toString());
}
});
}
});
});*/
});

View File

@ -0,0 +1,78 @@
// priority: 1
let unusableItems = [
'industrialforegoing:infinity_drill',
'industrialforegoing:infinity_backpack',
'industrialforegoing:infinity_trident',
'industrialforegoing:infinity_saw',
'industrialforegoing:infinity_hammer',
'industrialforegoing:infinity_launcher',
'industrialforegoing:infinity_nuke',
'industrialforegoing:infinity_charger',
'powder_power:hammer_alchemist',
'powder_power:hammer_motar_pestle',
'powder_power:wand_alchemist',
];
let uncraftableItems = [
'ars_nouveau:imbuement_chamber',
'ars_nouveau:novice_spell_book',
'ars_nouveau:dominion_wand',
'powah:dielectric_paste',
'powah:spirited_crystal',
'powah:niotic_crystal',
'powah:capacitor_basic_tiny',
'powah:capacitor_basic',
'powah:dielectric_casing',
'powah:aerial_pearl',
'powah:ender_core',
'prettypipes:blank_module',
'ae2:printed_logic_processor',
'ae2:printed_engineering_processor',
'ae2:printed_calculation_processor',
'ae2:printed_silicon',
'ae2:quartz_glass',
'bountiful:bountyboard',
'bountiful:decree',
'miapi:modular_work_bench',
'immersive_aircraft:airship',
'immersive_aircraft:industrial_gears',
'ironfurnaces:augment_generator',
'croptopia:dough',
'darkutils:blank_plate',
'darkutils:damage_plate_player',
'darkutils:damage_plate',
'croptopia:flour',
"sophisticatedstorage:storage_link"
];
let uncraftableVanilla = [
"thermal:tomato_sauce",
"thermal:peanut_butter"
];
global.uncraftables = {uncraftable: uncraftableItems, unusable: unusableItems}
ServerEvents.recipes(event => {
//event.remove({id: 'industrialforegoing:iron_gear'});
//event.remove({id: 'industrialforegoing:gold_gear'});
//event.remove({id: 'industrialforegoing:diamond_gear'});
event.remove({output: 'ars_nouveau:source_gem', type: 'ars_nouveau:imbuement'});
uncraftableVanilla.forEach(item => {
event.remove({output: item, type: 'minecraft:crafting'});
})
unusableItems.forEach(item => {
event.remove({output: item});
event.remove({input: item});
})
uncraftableItems.forEach(item => {
event.remove({output: item});
})
});

27
kubejs/server_scripts/tags.js Executable file
View File

@ -0,0 +1,27 @@
/*
* Tag handlng that can't be done in AlmostUnified
*/
ServerEvents.tags('item', event => {
// Copper hoppers should count for regular hoppers
/*['exposed', 'oxidized', 'weathered'].forEach(copperAge => {
event.add('forge:hoppers', `everythingcopper:${copperAge}_copper_hopper`)
event.add('forge:hoppers', `everythingcopper:waxed_${copperAge}_copper_hopper`)
});*/
// Farmer's Delight doesn't have rice seeds, you just plant rice grains to make more rice, which could let you completely break farming grist.
event.remove('forge:seeds/rice', ['farmersdelight:rice']);
event.remove('forge:rice_seeds', ['farmersdelight:rice']);
});
ServerEvents.recipes(event => {
// Under soup salad sandwich theory, anything mixture including lettuce can be a salad.
event.replaceInput(
{mod: 'croptopia'},
'croptopia:lettuce',
'#forge:salad_ingredients'
);
});