console.info("[SOCIETY] addRefurbishedWorkbenchRecipes.js loaded");

const getCraftingItems = (name, wordMap, defaultItem) => {
  let craftItem = defaultItem;
  wordMap.forEach((entry) => {
    if (name.includes(entry.word)) craftItem = entry.craftItem;
  });
  return craftItem;
};
const fantasyWordMap = [
  { word: "nordic", craftItem: "trials:breeze_rod" },
  { word: "bone", craftItem: "minecraft:bone" },
  { word: "wither", craftItem: "minecraft:wither_rose" },
  { word: "venthyr", craftItem: "quark:soul_bead" },
  { word: "royal", craftItem: "minecraft:gold_block" },
  { word: "necrolord", craftItem: "minecraft:fermented_spider_eye" },
  { word: "dunmer", craftItem: "minecraft:spectral_arrow" },
];

const tanukiWordMap = [
  { word: "brown_mushroom", craftItem: "society:mudstone" },
  { word: "red_mushroom", craftItem: "society:lunarite" },
  { word: "regal", craftItem: "society:granite_slate" },
  { word: "cabana", craftItem: "society:baryte" },
  { word: "minimalist", craftItem: "society:limestone_pebble" },
  { word: "sweets", craftItem: "society:nekoite" },
  { word: "neon", craftItem: "society:helvite" },
  { word: "wooden_block", craftItem: "society:esperite" },
  { word: "antique", craftItem: "society:bixbyite" },
  { word: "egyptian", craftItem: "society:sandstone_slate" },
  { word: "blue", craftItem: "society:kyanite" },
  { word: "green", craftItem: "society:petrified_slime" },
  { word: "gorgeous", craftItem: "society:pyrite" },
  { word: "rocket_lamp", craftItem: "society:hematite" },
  { word: "streamer", craftItem: "society:slate" },
  { word: "fireplace", craftItem: "society:jasper" },
  { word: "vase", craftItem: "society:fluorapatite" },
  { word: "tarp", craftItem: "society:geminite" },
  { word: "clock", craftItem: "society:jade" },
  { word: "log", craftItem: "society:soapstone" },
  { word: "string", craftItem: "society:calcite_gem" },
  { word: "firewood", craftItem: "society:calcite_gem" },
  { word: "handcart", craftItem: "society:calcite_gem" },
  { word: "science", craftItem: "society:prismatic_shard" },
];
const modernWordMap = [
  { word: "tv", craftItem: "society:battery" },
  { word: "projector", craftItem: "society:battery" },
  { word: "beach", craftItem: "beachparty:coconut" },
  { word: "painting", craftItem: "society:canvas" },
  { word: "canvas", craftItem: "society:canvas" },
  { word: "picture", craftItem: "society:canvas" },
  { word: "trophy", craftItem: "minecraft:gold_block" },
  { word: "chimes", craftItem: "moreminecarts:hard_light_lens" },
];
ServerEvents.recipes((e) => {
  let tanukiRecipes = [];
  e.forEachRecipe({ type: "tanukidecor:diy" }, (r) => {
    tanukiRecipes.push({
      item: r.originalRecipeResult,
      craftItem: getCraftingItems(
        r.originalRecipeResult.displayName.toString(),
        tanukiWordMap,
        "society:prismatic_shard"
      ),
    });
  });
  tanukiRecipes.forEach((recipe) => {
    e.custom({
      type: "refurbished_furniture:workbench_constructing",
      materials: [
        {
          count: 1,
          item: "society:tanuki_leaf",
        },
        {
          count: 1,
          item: recipe.craftItem,
        },
      ],
      result: recipe.item,
      show_notification: false,
    });
  });
  Ingredient.of("@fantasyfurniture").stacks.forEach((item) => {
    if (item.toString().includes("furniture_station")) return;
    const craftItem = getCraftingItems(
      item.toString(),
      fantasyWordMap,
      "minecraft:ender_eye"
    );
    e.custom({
      type: "refurbished_furniture:workbench_constructing",
      materials: [
        {
          count: 1,
          item: "society:fantasy_dust",
        },
        {
          count: craftItem === "minecraft:ender_eye" ? 1 : 4,
          item: craftItem,
        },
      ],
      result: item,
      show_notification: false,
    });
    e.custom({
      type: "tanukidecor:diy",
      result: {
        item: item.id,
      },
    });
  });
  const yuushyaCatalog = [
    "yuushya:sign_blueprint",
    "yuushya:store_blueprint",
    "yuushya:living_being_blueprint",
    "yuushya:catering_blueprint",
    "yuushya:fabric_blueprint",
    "yuushya:stone_blueprint",
    "yuushya:wood_blueprint",
    "yuushya:block_blueprint",
    "yuushya:furniture_blueprint",
    "yuushya:lighting_blueprint",
    "yuushya:facility_blueprint",
    "yuushya:traffic_blueprint",
    "yuushya:extra_shapes_blueprint",
    "yuushya:window_blueprint",
  ];
  yuushyaCatalog.forEach((item) => {
    const cheaperItems = [
      "yuushya:stone_blueprint",
      "yuushya:wood_blueprint",
      "yuushya:block_blueprint",
    ];
    e.custom({
      type: "refurbished_furniture:workbench_constructing",
      materials: [
        {
          count: cheaperItems.includes(item) ? 1 : 16,
          item: "society:blooming_token",
        },
        {
          count: cheaperItems.includes(item) ? 1 : 4,
          item: "create:zinc_ingot",
        },
      ],
      result: item,
      show_notification: false,
    });
    e.custom({
      type: "tanukidecor:diy",
      result: {
        item: item,
      },
    });
  });
  const yuushyaTemplates = [
    "yuushya:handrail_right",
    "yuushya:ladder",
    "yuushya:slippers",
    "yuushya:big_table",
    "yuushya:medium_table",
    "yuushya:average_table",
    "yuushya:half_side_slab",
    "yuushya:column",
    "yuushya:shelf",
    "yuushya:couch",
    "yuushya:half_slab",
    "yuushya:bookshelf",
    "yuushya:uncovered_shelf",
    "yuushya:leaning_ladder",
    "yuushya:foldable_ladder",
    "yuushya:clock",
    "yuushya:round_clock",
    "yuushya:park_bench_no_handrail",
    "yuushya:park_bench",
    "yuushya:bench",
    "yuushya:bucket",
    "yuushya:decorative_shelf",
    "yuushya:decoration_bookshelf",
    "yuushya:stick",
    "yuushya:pole",
    "yuushya:fence_corner",
    "yuushya:new_fence",
    "yuushya:hollow_stairs",
    "yuushya:handrail_left",
    "yuushya:frame_bottom",
    "yuushya:platform",
    "yuushya:horizontal_stick",
    "yuushya:frame_left",
    "yuushya:frame_right",
    "yuushya:skateboard",
    "yuushya:leaned_skateboard",
    "yuushya:park_stool",
    "yuushya:seat",
    "yuushya:cushion_armchair",
    "yuushya:chair",
    "yuushya:bar_stool",
    "yuushya:basket",
    "yuushya:white_bow_gift_box",
    "yuushya:black_bow_gift_box",
    "yuushya:white_bow_small_gift_box",
    "yuushya:black_bow_small_gift_box",
    "yuushya:rain_shed",
    "yuushya:lengthened_rain_shed",
    "yuushya:mounted_fern_pot",
    "yuushya:venetian_blinds",
    "yuushya:board",
    "yuushya:bottle_container",
    "yuushya:cart",
    "yuushya:handrail_middle",
    "yuushya:bicycle",
    "yuushya:post",
    "yuushya:frame_top",
    "yuushya:horizontal_pole",
    "yuushya:horizontal_post",
    "yuushya:horizontal_column",
    "yuushya:fence",
    "yuushya:new_fence",
  ];
  yuushyaTemplates.forEach((item) => {
    e.custom({
      type: "refurbished_furniture:workbench_constructing",
      materials: [
        {
          count: 8,
          item: "society:blooming_token",
        },
        {
          count: 1,
          item: "minecraft:cherry_log",
        },
      ],
      result: item,
      show_notification: false,
    });
    e.custom({
      type: "tanukidecor:diy",
      result: {
        item: item,
      },
    });
  });
  const yuushyaStone = [
    "yuushya:marble_bricks_0",
    "yuushya:dark_square_bricks",
    "yuushya:pale_bricks_0",
    "yuushya:mossy_bricks",
    "yuushya:marble_bricks_1",
    "yuushya:pale_bricks_2",
    "yuushya:square_brick",
    "yuushya:embbed_dark_bricks",
    "yuushya:yellow_worn_concrete",
    "yuushya:wore_stone",
    "yuushya:scarlet_tile",
    "yuushya:gray_tile",
    "yuushya:cut_tile",
    "yuushya:orange_worn_concrete",
    "yuushya:light_gray_worn_concrete",
    "yuushya:mink_worn_concrete",
    "yuushya:cream_worn_concrete",
    "yuushya:white_worn_concrete",
    "yuushya:stone_with_dot",
    "yuushya:wore_lime_wall",
    "yuushya:marble",
    "yuushya:gray_wall",
    "yuushya:embbed_pale_bricks",
    "yuushya:embbed_magenta_pale_bricks",
    "yuushya:smooth_marble",
    "yuushya:smooth_stonetile",
    "yuushya:smooth_sandtile",
    "yuushya:park_tile",
    "yuushya:fossilized_cobblestone",
    "yuushya:pale_bricks_3",
    "yuushya:smooth_dark_stonetile",
    "yuushya:pale_bricks_1",
    "yuushya:smoke_bricks",
    "yuushya:marble_cobblestone",
    "yuushya:egg_cobblestone",
    "yuushya:terracotta_cobblestone",
    "yuushya:pale_bricks",
    "yuushya:black_bricks",
    "yuushya:red_bricks",
    "yuushya:framed_bricks_alt",
    "yuushya:framed_bricks",
    "yuushya:top_reinforced_concrete",
    "yuushya:reinforced_concrete",
    "yuushya:embbed_stone_bricks",
    "yuushya:lime__concrete",
    "yuushya:embbed_marble_bricks",
  ];
  yuushyaStone.forEach((item) => {
    e.custom({
      type: "refurbished_furniture:workbench_constructing",
      materials: [
        {
          count: 1,
          item: "society:blooming_token",
        },
        {
          count: 1,
          item: "minecraft:cobbled_deepslate",
        },
      ],
      result: {
        count: 4,
        item: item,
      },
      show_notification: false,
    });
    e.custom({
      type: "tanukidecor:diy",
      result: {
        item: item,
      },
    });
  });
  const yuushyaSpecial = [
    "yuushya:form_trans_item",
    "yuushya:falling_oak_spawner",
    "yuushya:falling_sakura_spawner",
    "yuushya:falling_maple_spawner",
  ];
  yuushyaSpecial.forEach((item) => {
    e.custom({
      type: "refurbished_furniture:workbench_constructing",
      materials: [
        {
          count: 64,
          item: "society:blooming_token",
        },
        {
          count: 1,
          item: "society:prismatic_shard",
        },
      ],
      result: item,
      show_notification: false,
    });
    e.custom({
      type: "tanukidecor:diy",
      result: {
        item: item,
      },
    });
  });
  
  e.forEachRecipe({ mod: "yuushya", type: "stonecutting" }, (r) => {
    let ingredients = r.originalRecipeIngredients;
    let valid = false;
    let item = r.originalRecipeResult.id;
    let outputToTag = []
    for (let index = 0; index < ingredients.length; index++) {
      valid = ingredients[index].itemIds[0] === "yuushya:block_blueprint";
    }
    if (valid) {
      outputToTag.push(item)
      e.custom({
        type: "refurbished_furniture:workbench_constructing",
        materials: [
          {
            count: 1,
            item: "society:blooming_token",
          },
          {
            count: 1,
            item: "create:zinc_ingot",
          },
        ],
        result: {
          count: 4,
          item: item,
        },
        show_notification: false,
      });
      e.custom({
        type: "tanukidecor:diy",
        result: {
          item: item,
        },
      });
    }
  });

  global.lootFurniture.forEach((item) => {
    if (item.includes("tanukidecor")) return;
    const craftItem = getCraftingItems(
      item.toString(),
      modernWordMap,
      "minecraft:quartz_block"
    );
    e.custom({
      type: "refurbished_furniture:workbench_constructing",
      materials: [
        {
          count: 1,
          item: "society:architects_digest",
        },
        {
          count: craftItem === "minecraft:quartz_block" ? 16 : 4,
          item: craftItem,
        },
      ],
      result: item,
      show_notification: false,
    });
    e.custom({
      type: "tanukidecor:diy",
      result: {
        item: item,
      },
    });
  });
});
