Guest User

Untitled

a guest
Oct 6th, 2024
26
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // event.recipes.createsifterSifting(output[], input[]) Optional .waterlogged() .processingTime(int time)
  2. // 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'])
  3. // Waterlogged example event.recipes.createsifterSifting([Item.of('minecraft:clay').withChance(0.5).toJson()], ['minecraft:sand','createsifter:string_mesh']).waterlogged()
  4. // 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)
  5.  
  6. console.log('sifting.js script loaded');
  7.  
  8. const Tiers = {
  9.     String: 0,
  10.     Brass: 1,
  11.     Advanced: 2,
  12.     Legendary: 3
  13. };
  14.  
  15. // BLACKLIST ITEMS
  16. const exclusionBlacklist = ["minecraft:iron_nugget", "mekanism:shard_copper", "mekanism:shard_iron"];
  17. var gravel = "minecraft:gravel";
  18. var sand = "minecraft:sand";
  19. var grass = "minecraft:grass";
  20. var dirt = "minecraft:dirt";
  21. var shroom = "minecraft:mycelium";
  22. var soul = "minecraft:soul_sand";
  23. var leaves = "minecraft:oak_leaves";
  24. var dust = "createsifter:dust";
  25.  
  26. // [['input','output','chance','mintier', true/false waterlogged]]
  27. const siftingRecipes = [
  28.     [gravel, "exdeorum:iron_ore_chunk", 0.15, Tiers.Brass, false],
  29. ];
  30. console.log('siftingRecipes array defined');
  31.  
  32. function pushSiftingRecipe(waterloggedRecipes, regularRecipes, tier, waterlogged, json) {
  33.     if (waterlogged) {
  34.         waterloggedRecipes[`${tier}`].push(json);
  35.     } else {
  36.         regularRecipes[`${tier}`].push(json);
  37.     }
  38. }
  39.  
  40. ServerEvents.recipes((event) => {
  41.     console.log('ServerEvents.recipes event triggered');
  42.     event.remove({ type: 'createsifter:sifter' });
  43.     console.log('This Recipe remover is loaded');
  44.     let mesh;
  45.     var gravelRecipes = [[], [], [], []];
  46.     var waterGravelRecipes = [[], [], [], []];
  47.  
  48.     siftingRecipes.forEach((recipeMap) => {
  49.         let input = recipeMap[0];
  50.         let output = recipeMap[1];
  51.         let chance = recipeMap[2];
  52.         let tier = recipeMap[3];
  53.         let waterlogged = recipeMap[4];
  54.  
  55.         console.log(`Processing recipe: input=${input}, output=${output}, chance=${chance}, tier=${tier}, waterlogged=${waterlogged}`);
  56.  
  57.         let json = Item.of(output).withChance(chance);
  58.         console.log(`Input value: ${input}`);
  59.         switch (input) {
  60.             case gravel:
  61.                 console.log('Matched case: gravel');
  62.                 pushSiftingRecipe(waterGravelRecipes, gravelRecipes, tier, waterlogged, json);
  63.                 console.log('This Recipe loop is loaded');
  64.                 break;
  65.             default:
  66.                 console.log(`Default case: input=${input}, output=${output}, chance=${chance}, tier=${tier}, waterlogged=${waterlogged}`);
  67.         }
  68.     });
  69.  
  70.     function getRecipes(material, recipesArray, waterlogged) {
  71.         console.log(`Processing recipes for material: ${material}`);
  72.         for (let i = 0; i < recipesArray.length; i++) {
  73.             let speed = 0;
  74.             switch (i) {
  75.                 case 0: {
  76.                     mesh = "createsifter:string_mesh";
  77.                     break;
  78.                 }
  79.                 case 1: {
  80.                     mesh = "createsifter:brass_mesh";
  81.                     speed = 0;
  82.                     recipesArray[i - 1].forEach((recipe) => {
  83.                         if (!checkExclusion(recipe)) recipesArray[i].push(recipe);
  84.                     });
  85.                     break;
  86.                 }
  87.                 case 2: {
  88.                     mesh = "createsifter:advanced_brass_mesh";
  89.                     speed = 0;
  90.                     recipesArray[i - 1].forEach((recipe) => {
  91.                         if (!checkExclusion(recipe)) recipesArray[i].push(recipe);
  92.                     });
  93.                     break;
  94.                 }
  95.             }
  96.             console.log(`recipesArray[${i}] length: ${recipesArray[i].length}`);
  97.             recipesArray[i].forEach((recipe) => {
  98.                 let recipeBuilder = event.recipes.createsifterSifting([recipe], [mesh]);
  99.                 if (speed > 0) {
  100.                     recipeBuilder.minimumSpeed(speed);
  101.                 }
  102.                 if (waterlogged) {
  103.                     recipeBuilder.waterlogged();
  104.                 }
  105.                 console.log(`Adding recipe: mesh=${mesh}, recipe=${JSON.stringify(recipe)}`);
  106.             });
  107.         }
  108.     }
  109.  
  110.     getRecipes(gravel, gravelRecipes, false);
  111.     getRecipes(gravel, waterGravelRecipes, true);
  112. });
  113.  
  114. function checkExclusion(recipe) {
  115.     if (exclusionBlacklist.includes(recipe.item.id)) {
  116.         return true;
  117.     }
  118.     return false;
  119. }
Advertisement
Add Comment
Please, Sign In to add comment