Skip to content

Commit

Permalink
dev: move all incomplete item resulution logic out of devices script …
Browse files Browse the repository at this point in the history
…and into the add assembly funciton
  • Loading branch information
Yarden-zamir committed Feb 3, 2024
1 parent 9cd24a2 commit 00b26e4
Show file tree
Hide file tree
Showing 2 changed files with 155 additions and 92 deletions.
14 changes: 1 addition & 13 deletions kubejs/server_scripts/base/featrues/devices.js
Original file line number Diff line number Diff line change
Expand Up @@ -386,19 +386,7 @@ if (

deviceDefinitions.forEach((device) => {
addToTag("forge:devices/generics", device.generic);
let generic_id = Item.of(device.generic).id; //support both ids and kjs items

if (!device.incomplete) {
let incomplete =
generic_id.split(":")[0] + ":incomplete_" + generic_id.split(":")[1];
if (Item.of(incomplete).isEmpty()) {
incomplete = `ptdye:incomplete_${generic_id.split(":")[1]}`;
}
if (Item.of(incomplete).isEmpty()) {
incomplete = 'create:incomplete_precision_mechanism'
}
device.incomplete = incomplete;
}
device.base = device.base || "create:cogwheel";

device.assembly_loops = device.assembly_loops || undefined;
Expand All @@ -418,7 +406,7 @@ if (
return addDeploying("stick", "stick", ingredient);
}),
device.assembly_loops,
device.incomplete
device.incomplete || undefined
);
});
}
Expand Down
233 changes: 154 additions & 79 deletions kubejs/server_scripts/base/recipe_managers/create.manager.js
Original file line number Diff line number Diff line change
@@ -1,64 +1,90 @@
// priority: 100
// - addConversion is still missing
const temperature = {
none: 'none',
heated: "heated",
superHeated: "superheated"
}
none: "none",
heated: "heated",
superHeated: "superheated",
};
/**
* @param {result[]} output will be treated as a pool
* @param {ingredient} input
* @param {process[]} steps
* @param {number} loops
* @param {limitedIngredient} transitionalItem
* @param {result[]} output will be treated as a pool
* @param {ingredient} input
* @param {process[]} steps
* @param {number} loops
* @param {limitedIngredient} transitionalItem
*/
function addAssembly(output, input, steps, loops, transitionalItem) {
// console.log("Before cleaning " + modpackRecipes);
steps.forEach((recipe) => {
modpackRecipes = modpackRecipes.filter(item => item !== recipe)
// console.log("adding recipe !!! " + JSON.stringify(recipe));
})
// console.log("AFter cleaning " + modpackRecipes);
// console.log("Before cleaning " + modpackRecipes);
steps.forEach((recipe) => {
modpackRecipes = modpackRecipes.filter((item) => item !== recipe);
// console.log("adding recipe !!! " + JSON.stringify(recipe));
});
// console.log("AFter cleaning " + modpackRecipes);

// if (!transitionalItem) transitionalItem = Ingredient.of(input).withNBT({ Process: 1 })
// if (!transitionalItem) transitionalItem = Item.of('item id here', {nbt here})
if (!transitionalItem) transitionalItem = Item.of(input, { Process: 1 })
if (!loops) loops = 1
let recipe = {
type: "create:sequenced_assembly",
ingredient: solveIngredient(input),
transitionalItem: solveIngredient(transitionalItem),
sequence: steps,
results: solveResults(output),
loops: loops
// if (!transitionalItem) transitionalItem = Ingredient.of(input).withNBT({ Process: 1 })
// if (!transitionalItem) transitionalItem = Item.of('item id here', {nbt here})
if (!transitionalItem) {
let incomplete =
Item.of(output).id.split(":")[0] +
":incomplete_" +
Item.of(output).id.split(":")[1];
if (Item.of(incomplete).isEmpty()) {
incomplete = `ptdye:incomplete_${Item.of(output).id.split(":")[1]}`;
}
// console.log("adding recipe !!! " + JSON.stringify(recipe));
modpackRecipes.push(recipe)
return recipe
if (Item.of(incomplete).isEmpty()) {
if (Ingredient.of(input).getItemIds().length > 1)
incomplete = "create:incomplete_precision_mechanism";
else incomplete = Item.of(input, { Process: 1 });
}
transitionalItem = incomplete;
}
if (!loops) loops = 1;
let recipe = {
type: "create:sequenced_assembly",
ingredient: solveIngredient(input),
transitionalItem: solveIngredient(transitionalItem),
sequence: steps,
results: solveResults(output),
loops: loops,
};
// console.log("adding recipe !!! " + JSON.stringify(recipe));
modpackRecipes.push(recipe);
return recipe;
}
/**
* @param {result[]} output
* @param {ingredient} input
* @param {number} processingTime amount of time in ticks default(300)
*/
function addCrushing(output, input, processingTime) {
return addProcessingRecipe('create:crushing', solveResults(output), [solveLimitedIngredient(input)], processingTime)
return addProcessingRecipe(
"create:crushing",
solveResults(output),
[solveLimitedIngredient(input)],
processingTime
);
}
/**
* @param {result} output
* @param {limitedIngredient} input
* @param {number} processingTime amount of time in ticks default(150)
*/
function addCutting(output, input, processingTime) {
return addProcessingRecipe('create:cutting', [solveResult(output)], [solveLimitedIngredient(input)], processingTime)
return addProcessingRecipe(
"create:cutting",
[solveResult(output)],
[solveLimitedIngredient(input)],
processingTime
);
}
/**
* @param {result[]} output
* @param {limitedIngredient} input
* @param {number} processingTime amount of time in ticks default(150)
*/
function addMilling(output, input, processingTime) {
return addProcessingRecipe('create:milling', solveResults(output), [solveLimitedIngredient(input)])
return addProcessingRecipe("create:milling", solveResults(output), [
solveLimitedIngredient(input),
]);
}
/**
* @param {result} output
Expand All @@ -69,58 +95,88 @@ function addMilling(output, input, processingTime) {
* @param {fluid[]} fluidInput
*/
function addCompacting(output, input, heatRequirement, processingTime) {
return addProcessingRecipe('create:compacting',
solveResults(output),
solveLimitedIngredients(input),
processingTime, heatRequirement)
return addProcessingRecipe(
"create:compacting",
solveResults(output),
solveLimitedIngredients(input),
processingTime,
heatRequirement
);
}
/**
* @param {result[]} output
* @param {limitedIngredient} input
* @param {number} processingTime amount of time in ticks default(150)
*/
function addPressing(output, input, processingTime) {
return addProcessingRecipe('create:pressing', solveResults(output), [solveLimitedIngredient(input)], processingTime)
return addProcessingRecipe(
"create:pressing",
solveResults(output),
[solveLimitedIngredient(input)],
processingTime
);
}
/**
* @param {result[]} output
* @param {limitedIngredient} input
* @param {number} processingTime amount of time in ticks default(150)
*/
function addSandpaperPolishing(output, input, processingTime) {
return addProcessingRecipe('create:sandpaper_polishing', [solveResult(output)], [solveLimitedIngredient(input)], processingTime)
return addProcessingRecipe(
"create:sandpaper_polishing",
[solveResult(output)],
[solveLimitedIngredient(input)],
processingTime
);
}
/**
* @param {result[]} output
* @param {limitedIngredient} input
* @param {number} processingTime amount of time in ticks default(150)
*/
function addSplashing(output, input, processingTime) {
return addProcessingRecipe('create:splashing', solveResults(output), [solveLimitedIngredient(input)], processingTime)
return addProcessingRecipe(
"create:splashing",
solveResults(output),
[solveLimitedIngredient(input)],
processingTime
);
}
/**
* @param {result[]} output
* @param {limitedIngredient} input
* @param {limitedIngredient} heldItem
*/
function addDeploying(output, input, heldItem) {
return addProcessingRecipe('create:deploying', solveResults(output), solveLimitedIngredients([input, heldItem]))
return addProcessingRecipe(
"create:deploying",
solveResults(output),
solveLimitedIngredients([input, heldItem])
);
}
/**
* @param {result} output
* @param {limitedIngredient} input
* @param {fluid} fluid
* @param {fluid} fluid
*/
function addFilling(output, input, fluid) {
return addProcessingRecipe('create:filling', [solveResult(output)], [solveLimitedIngredient(input), solveFluid(fluid)])
return addProcessingRecipe(
"create:filling",
[solveResult(output)],
[solveLimitedIngredient(input), solveFluid(fluid)]
);
}
/**
* @param {result} output
* @param {ingredient} input
* @param {fluid} fluid
* @param {fluid} fluid
*/
function addEmptying(output, input, fluid) {
return addProcessingRecipe('create:emptying', [solveResult(output), solveFluid(fluid)], [solveLimitedIngredient(input)])
return addProcessingRecipe(
"create:emptying",
[solveResult(output), solveFluid(fluid)],
[solveLimitedIngredient(input)]
);
}
/**
* @param {result[]} output
Expand All @@ -130,10 +186,23 @@ function addEmptying(output, input, fluid) {
* @param {fluid[]} fluidOutput
* @param {fluid[]} fluidInput
*/
function addMixing(output, input, heatRequirement, processingTime, fluidOutput, fluidInput) {
let inputArr = solveLimitedIngredients(input).concat(solveFluids(fluidInput))
let outputArr = solveResults(output).concat(solveFluids(fluidOutput))
return addProcessingRecipe('create:mixing', outputArr, inputArr, processingTime, heatRequirement)
function addMixing(
output,
input,
heatRequirement,
processingTime,
fluidOutput,
fluidInput
) {
let inputArr = solveLimitedIngredients(input).concat(solveFluids(fluidInput));
let outputArr = solveResults(output).concat(solveFluids(fluidOutput));
return addProcessingRecipe(
"create:mixing",
outputArr,
inputArr,
processingTime,
heatRequirement
);
}
/**
* Adds a mechanical crafting recipe to the modpackRecipes array.
Expand All @@ -143,37 +212,43 @@ function addMixing(output, input, heatRequirement, processingTime, fluidOutput,
* @returns {object} The recipe object that was added to the modpackRecipes array.
*/
function addMechanicalCrafting(output, pattern, key) {
let recipe = {
type: "create:mechanical_crafting",
pattern: pattern,
result: output,
key: key,
};
modpackRecipes.push(recipe)
return recipe;
}
function addProcessingRecipe(type, output, input, processingTime, heatRequirement) {
let recipe = {type: type}

if (Array.isArray(output) && output.length > 0) {
recipe.results = output;
}
if (Array.isArray(input) && input.length > 0) {
recipe.ingredients = input;
}
if (processingTime) recipe.processingTime = processingTime
if (heatRequirement) recipe.heatRequirement = heatRequirement
modpackRecipes.push(recipe)
return recipe
let recipe = {
type: "create:mechanical_crafting",
pattern: pattern,
result: output,
key: key,
};
modpackRecipes.push(recipe);
return recipe;
}
function addProcessingRecipe(
type,
output,
input,
processingTime,
heatRequirement
) {
let recipe = { type: type };

if (Array.isArray(output) && output.length > 0) {
recipe.results = output;
}
if (Array.isArray(input) && input.length > 0) {
recipe.ingredients = input;
}
if (processingTime) recipe.processingTime = processingTime;
if (heatRequirement) recipe.heatRequirement = heatRequirement;
modpackRecipes.push(recipe);
return recipe;
}

function addItemApplication(result, block_input, item_input){
let input = [block_input, item_input]
let recipe = {
type: "create:item_application",
results: solveResult(result),
ingredients: solveIngredient(input),
}
modpackRecipes.push(recipe)
return recipe
function addItemApplication(result, block_input, item_input) {
let input = [block_input, item_input];
let recipe = {
type: "create:item_application",
results: solveResult(result),
ingredients: solveIngredient(input),
};
modpackRecipes.push(recipe);
return recipe;
}

0 comments on commit 00b26e4

Please sign in to comment.