Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // event.recipes.createsifterSifting(output[], input[]) Optional .waterlogged() .processingTime(int time)
- // Basic Example event.recipes.createsifterSifting([Item.of('minecraft:clay').withChance(0.5).toJson(),Item.of('minecraft:redstone').withChance(0.1).toJson()], ['minecraft:sand','createsifter:string_mesh'])
- // Waterlogged example event.recipes.createsifterSifting([Item.of('minecraft:clay').withChance(0.5).toJson()], ['minecraft:sand','createsifter:string_mesh']).waterlogged()
- // Minimum Speed Example event.recipes.createsifterSifting([Item.of('minecraft:redstone_block').withChance(0.5),Item.of('minecraft:redstone').withChance(0.1)], ['minecraft:sand','createsifter:string_mesh']).minimumSpeed(64)
- console.log('sifting.js script loaded');
- const Tiers = {
- String: 0,
- Brass: 1,
- Advanced: 2,
- Legendary: 3
- };
- // BLACKLIST ITEMS
- const exclusionBlacklist = ["minecraft:iron_nugget", "mekanism:shard_copper", "mekanism:shard_iron"];
- var gravel = "minecraft:gravel";
- var sand = "minecraft:sand";
- var grass = "minecraft:grass";
- var dirt = "minecraft:dirt";
- var shroom = "minecraft:mycelium";
- var soul = "minecraft:soul_sand";
- var leaves = "minecraft:oak_leaves";
- var dust = "createsifter:dust";
- // [['input','output','chance','mintier', true/false waterlogged]]
- const siftingRecipes = [
- [gravel, "exdeorum:iron_ore_chunk", 0.15, Tiers.Brass, false],
- ];
- console.log('siftingRecipes array defined');
- function pushSiftingRecipe(waterloggedRecipes, regularRecipes, tier, waterlogged, json) {
- if (waterlogged) {
- waterloggedRecipes[`${tier}`].push(json);
- } else {
- regularRecipes[`${tier}`].push(json);
- }
- }
- ServerEvents.recipes((event) => {
- console.log('ServerEvents.recipes event triggered');
- event.remove({ type: 'createsifter:sifter' });
- console.log('This Recipe remover is loaded');
- let mesh;
- var gravelRecipes = [[], [], [], []];
- var waterGravelRecipes = [[], [], [], []];
- siftingRecipes.forEach((recipeMap) => {
- let input = recipeMap[0];
- let output = recipeMap[1];
- let chance = recipeMap[2];
- let tier = recipeMap[3];
- let waterlogged = recipeMap[4];
- console.log(`Processing recipe: input=${input}, output=${output}, chance=${chance}, tier=${tier}, waterlogged=${waterlogged}`);
- let json = Item.of(output).withChance(chance);
- console.log(`Input value: ${input}`);
- switch (input) {
- case gravel:
- console.log('Matched case: gravel');
- pushSiftingRecipe(waterGravelRecipes, gravelRecipes, tier, waterlogged, json);
- console.log('This Recipe loop is loaded');
- break;
- default:
- console.log(`Default case: input=${input}, output=${output}, chance=${chance}, tier=${tier}, waterlogged=${waterlogged}`);
- }
- });
- function getRecipes(material, recipesArray, waterlogged) {
- console.log(`Processing recipes for material: ${material}`);
- for (let i = 0; i < recipesArray.length; i++) {
- let speed = 0;
- switch (i) {
- case 0: {
- mesh = "createsifter:string_mesh";
- break;
- }
- case 1: {
- mesh = "createsifter:brass_mesh";
- speed = 0;
- recipesArray[i - 1].forEach((recipe) => {
- if (!checkExclusion(recipe)) recipesArray[i].push(recipe);
- });
- break;
- }
- case 2: {
- mesh = "createsifter:advanced_brass_mesh";
- speed = 0;
- recipesArray[i - 1].forEach((recipe) => {
- if (!checkExclusion(recipe)) recipesArray[i].push(recipe);
- });
- break;
- }
- }
- console.log(`recipesArray[${i}] length: ${recipesArray[i].length}`);
- recipesArray[i].forEach((recipe) => {
- let recipeBuilder = event.recipes.createsifterSifting([recipe], [mesh]);
- if (speed > 0) {
- recipeBuilder.minimumSpeed(speed);
- }
- if (waterlogged) {
- recipeBuilder.waterlogged();
- }
- console.log(`Adding recipe: mesh=${mesh}, recipe=${JSON.stringify(recipe)}`);
- });
- }
- }
- getRecipes(gravel, gravelRecipes, false);
- getRecipes(gravel, waterGravelRecipes, true);
- });
- function checkExclusion(recipe) {
- if (exclusionBlacklist.includes(recipe.item.id)) {
- return true;
- }
- return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment