//材料tag
let $I18n = Java.loadClass('net.minecraft.client.resources.language.I18n')
let tag2tooltip = Utils.newMap()
let tag2tooltip1 = Utils.newMap()
let itemExtraTooltip = Utils.newMap()
tag2tooltip.put("dzzl:stage1", "[阶段一]");
tag2tooltip.put("dzzl:stage2", "§e[阶段二]");
tag2tooltip.put("dzzl:stage3", "§c[阶段三]");

tag2tooltip.put("dzzl:bone", "§e骨");
tag2tooltip1.put("dzzl:bone", "剑刃、剑柄§8等槽位");

tag2tooltip.put("dzzl:sugar_coating", "§e糖裹");
tag2tooltip1.put("dzzl:sugar_coating", "拐杖糖的糖裹特殊改造,活体盔甲的糖衣特殊改造");

tag2tooltip.put("dzzl:fibre", "§4纤维");
tag2tooltip1.put("dzzl:fibre", "裹柄、握环、绑定、弓弦");

tag2tooltip.put("dzzl:dream_metal", "§b融梦");

tag2tooltip.put("dzzl:fabric", "§f布料");
tag2tooltip1.put("dzzl:fabric", "裹柄");

tag2tooltip.put("dzzl:gem", "§9宝石");
tag2tooltip1.put("dzzl:gem", "剑刃§8[除重剑]§r，矛头，镐头§8等§r");

tag2tooltip.put("dzzl:trim_smithing_template", "§9纹饰模板");
tag2tooltip1.put("dzzl:trim_smithing_template", "盔甲纹饰");

tag2tooltip.put("dzzl:smithing_template_materials", "§9纹饰原材料");
tag2tooltip1.put("dzzl:smithing_template_materials", "盔甲纹饰");

tag2tooltip.put("dzzl:jixie", "§7机械");
tag2tooltip1.put("dzzl:jixie", "各不相同");

tag2tooltip.put("dzzl:metal", "§f金属");
tag2tooltip1.put("dzzl:metal", "剑刃、镐头§8等常见槽位");

tag2tooltip.put("dzzl:stone", "§8石头");
tag2tooltip1.put("dzzl:stone", "剑刃，矛头，镐头§8等§r");

tag2tooltip.put("dzzl:wood", "§6木");
tag2tooltip1.put("dzzl:wood", "剑刃、镐头§8等常见槽位");

tag2tooltip.put("dzzl:upgrade_templates", "§6锻造升级模板");
tag2tooltip1.put("dzzl:upgrade_templates", "携带此物品，可对盔甲进行锻造升级");

tag2tooltip.put("dzzl:scale", "§a鳞甲");
tag2tooltip1.put("dzzl:scale", "宽护手、键刃护手、风啸剑刃§8[可用类型:剑 可用槽位:附层]");

tag2tooltip.put("dzzl:skin", "§e皮革");
tag2tooltip1.put("dzzl:skin", "裹柄、握环、绑定、镶边、绑带、弓弦");

tag2tooltip.put("dzzl:xuerou", "§c血肉");
tag2tooltip1.put("dzzl:xuerou", "活体剑刃/盔甲");

tag2tooltip.put("dzzl:toulu", "§8头颅");
tag2tooltip1.put("dzzl:toulu", "京观§8[可用类型:剑 可用槽位:附层]");

tag2tooltip.put("dzzl:reagent", "§d宝珠");
tag2tooltip1.put("dzzl:reagent", "用于饰品 §6炼金之戒");

tag2tooltip.put("dzzl:reinforced_fuller", "§3强化附层材料");
tag2tooltip1.put("dzzl:reinforced_fuller", "强化附层");

tag2tooltip.put("dzzl:rod", "§6棍");
tag2tooltip1.put("dzzl:rod", "各类手柄");

tag2tooltip.put("dzzl:rong_yao_zhi_zheng", "§6荣耀");
tag2tooltip1.put("dzzl:rong_yao_zhi_zheng", "§6荣耀之证饰品");

tag2tooltip.put("dzzl:socket", "§5插槽");
tag2tooltip1.put("dzzl:socket", "镶嵌");

tag2tooltip.put("dzzl:zai_bian", "§4灾变核心");
tag2tooltip1.put("dzzl:zai_bian", "§4灾变之心饰品");

tag2tooltip.put("dzzl:shi_wu", "§e食物");
tag2tooltip1.put("dzzl:shi_wu", "活体剑刃的喂食改进");

tag2tooltip.put("dzzl:xuerou_yaoji", "§4血肉药剂");
tag2tooltip1.put("dzzl:xuerou_yaoji", "原初温床的药剂槽位");

tag2tooltip.put("dzzl:misc", "§7杂项");
tag2tooltip1.put("dzzl:misc", "跳转ftb自行查看");

// itemExtraTooltip.put("minecraft:iron_ingot", ["铁锭的额外提示",$I18n.get("tetra.slot.slashblade/soul")])

itemExtraTooltip.put("art_of_forging:curious_artifact", ["§8[§f获取方法§8]§f: §7地牢开箱", "§8[§f用途§8]§f: §7置于加工台上进行改造"])
itemExtraTooltip.put("art_of_forging:potent_mixture", ["§8[§f获取方法§8]§f: §7§n纳米注入§r §7后击杀 苦力怕", "    §8[§8纳米注入§8]: 携带纳米昆虫时,新增的特殊打磨项目", "§8[§f用途§8]§f: §7合成火药制品，产出更多"])
itemExtraTooltip.put("art_of_forging:heart_of_ender", ["§8[§f获取方法§8]§f: §7§n纳米注入§r §7后击杀 末影人", "    §8[§8纳米注入§8]: 携带纳米昆虫时,新增的特殊打磨项目", "§8[§f用途§8]§f: §7Tetra插槽类材料，用于镶嵌"])
itemExtraTooltip.put("art_of_forging:eerie_shard", ["§8[§f获取方法§8]§f: §7§n纳米注入§r §7后击杀 坚守者", "    §8[§8纳米注入§8]: 携带纳米昆虫时,新增的特殊打磨项目", "§8[§f用途§8]§f: §7Tetra杂项类材料，携带时为附层位新增 [§3怪异覆层§r] 改进"])
itemExtraTooltip.put("art_of_forging:devils_soul_gem", ["§8[§f获取方法§8]§f: §7§n纳米注入§r  §7后击杀 凋零", "    §8[§8纳米注入§8]: 携带纳米昆虫时,新增的特殊打磨项目", "§8[§f用途§8]§f: §7制作特殊弓材 [§5忆念§r]"])
itemExtraTooltip.put("art_of_forging:ancient_blade", ["§8[§f获取方法§8]§f: §7古城战利品", "§8[§f用途§8]§f: §7合成后可制作特殊剑刃 [§4灾祸§r]"])
itemExtraTooltip.put("art_of_forging:ancient_axe", ["§8[§f获取方法§8]§f: §7古城战利品", "§8[§f用途§8]§f: §7合成后可制作特殊双头工具头部(左) [§4湮灭§r]"])
itemExtraTooltip.put("art_of_forging:ancient_flail", ["§8[§f获取方法§8]§f: §7古城战利品", "§8[§f用途§8]§f: §7合成后可制作特殊单头工具头部 [§4哀星§r]"])
// itemExtraTooltip.put("art_of_forging:demonic_blade", ["§8[§f获取方法§8]§f: §7合成", "§8[§f用途§8]§f: §7可制作特殊特殊剑刃 [§4灾祸§r]"])
// itemExtraTooltip.put("art_of_forging:demonic_axe", ["§8[§f获取方法§8]§f: §7合成", "§8[§f用途§8]§f: §7可制作特殊双头工具头部(左) [§4湮灭§r]"])
// itemExtraTooltip.put("art_of_forging:demonic_flail", ["§8[§f获取方法§8]§f: §7合成", "§8[§f用途§8]§f: §7可制作特殊单头工具头部 [§4哀星§r]"])
// itemExtraTooltip.put("art_of_forging:nano_insectoid", ["§8[§f获取方法§8]§f: §7锻造遗迹 中的 锻造容器战利品", "§8[§f用途§8]§f: §7携带时,新增特殊打磨项目[§8纳米注入§7]"])
itemExtraTooltip.put("art_of_forging:encoded_canister", ["§8[§f获取方法§8]§f: §7锻造遗迹 中的 锻造容器战利品", "§8[§f用途§8]§f: §7用于合成缔造者秘典，进而制作缔造者裁决剑卷轴"])
itemExtraTooltip.put("art_of_forging:esoteric_codex", ["§8[§f获取方法§8]§f: §7锻造遗迹 中的 锻造容器战利品", "§8[§f用途§8]§f: §7用于合成缔造者秘典，进而制作缔造者裁决剑卷轴]"])
itemExtraTooltip.put("art_of_forging:fragment_of_eden", ["§8[§f获取方法§8]§f: §7击杀凋零概率获取", "§8[§f用途§8]§f: §7用于合成§d伊甸印记§7，进而制作特殊剑刃卷轴[§6欧几里得匕首§r]"])
// itemExtraTooltip.put("art_of_forging:soul_ember", ["§8[§f获取方法§8]§f: §7在 §n灵魂沙峡谷群系§7 击杀烈焰人获取", "§8[§f用途§8]§f: §7用于制作特殊双头工具头部[§3魂火镰刀头§r]"])
// itemExtraTooltip.put("art_of_forging:shockwave_chamber", ["§8[§f获取方法§8]§f: §7合成", "§8[§f用途§8]§f: §7用于制作特殊双头工具头部[震击锤头§r]"])
itemExtraTooltip.put("art_of_forging:sigil_of_eden", ["§8[§f获取方法§8]§f: 合成", "§8[§f用途§8]§f: §7用于制作特殊剑刃卷轴[§6欧几里得匕首§r]"])
itemExtraTooltip.put("art_of_forging:shards_of_malice", ["§8[§f获取方法§8]§f: §7击杀凋零骷髅", "§8[§f用途§8]§f: §7Tetra插槽类材料，用于镶嵌，也可用于合成其他物品"])
itemExtraTooltip.put("art_of_forging:vobrivium_ingot", ["§8[§f获取方法§8]§f: §7合成", "§8[§f用途§8]§f: §7Tetra金属类材料"])
itemExtraTooltip.put("art_of_forging:vobrite_crystal", ["§8[§f获取方法§8]§f: §7溺尸遗迹战利品", "§8[§f用途§8]§f: §7Tetra插槽类材料，用于镶嵌，也可用于合成[§e白澜钢§7]"])
itemExtraTooltip.put("art_of_forging:sigil_of_eden", ["§8[§f获取方法§8]§f: §7合成", "§8[§f用途§8]§f: §7用于制作特殊剑刃卷轴[§6欧几里得匕首§r]"])
// itemExtraTooltip.put("art_of_forging:rending_scissor_purple", ["§8[§f获取方法§8]§f: §7合成", "§8[§f用途§8]§f: §7用于制作特殊剑刃[§5斩断之剪[紫]§r]"])
// itemExtraTooltip.put("art_of_forging:rending_scissor_red", ["§8[§f获取方法§8]§f: §7合成", "§8[§f用途§8]§f: §7用于制作特殊剑刃[§4斩断之剪[红]§r]"])
// itemExtraTooltip.put("art_of_forging:rending_scissor_complete", ["§8[§f获取方法§8]§f: §7合成", "§8[§f用途§8]§f: §7用于制作特殊剑刃[§4斩断之剪§r]"])
itemExtraTooltip.put("born_in_chaos_v1:chaos_component", ["§8[§f获取方法§8]§f: §7使用§4混沌种子§7炼药获取", "§8[§f用途§8]§f: §7在原mod中用于合成§b转化试剂 "])
itemExtraTooltip.put("tetra:yuan_chu_wen_chuang1", ["§8[§f获取方法§8]§f: §7将原初温床'物品'放入加工台改造成'饰品'"])
itemExtraTooltip.put("tetra:ryzz", ["§8[§f获取方法§8]§f: §7将荣耀之证'物品'放入加工台改造成'饰品'"])
itemExtraTooltip.put("tetra:zai_bian_zhi_xin1", ["§8[§f获取方法§8]§f: §7将灾变之心'物品'放入加工台改造成'饰品'"])
itemExtraTooltip.put("kubejs:zhou_yi", ["§8[§f获取方法§8]§f: §7击杀§3咒翼灵骸", "§8[§f用途§8]§f: §7用于胸甲(肩甲)栏位的羽翼改造，可解锁鞘翅飞行功能 "])
itemExtraTooltip.put("born_in_chaos_v1:fire_dust", ["§8[§f获取方法§8]§f: §7部分生于混沌生物掉落，具体查看JEI", "§8[§f用途§8]§f: §7携带时,新增剑刃特殊改进项目[§4涂抹§7]"])
// itemExtraTooltip.put("faded_conquest_2:key_of_conquest", ["§8[§f获取方法§8]§f: §7恐怖十杰掉落", "§8[§f用途§8]§f: §7制作深渊装置"])
// itemExtraTooltip.put("faded_conquest_2:key_of_war", ["§8[§f获取方法§8]§f: §7衰落之王掉落", "§8[§f用途§8]§f: §7制作深渊装置"])
// itemExtraTooltip.put("faded_conquest_2:key_of_death", ["§8[§f获取方法§8]§f: §7厄运港巫妖掉落", "§8[§f用途§8]§f: §7制作深渊装置"])
// itemExtraTooltip.put("faded_conquest_2:keyof_pestilence", ["§8[§f获取方法§8]§f: §7瘟疫使者掉落", "§8[§f用途§8]§f: §7制作深渊装置"])
itemExtraTooltip.put("pasterdream:flower_12", ["§8[§f获取方法§8]§f: §7花园解密，或者去真世界树采摘", "§8[§f用途§8]§f: §7制作奇异炖菜"])
itemExtraTooltip.put("create:wrench", ["§8[§f特殊用途§8]§f: §7可置于加工台进行改造 "])
itemExtraTooltip.put("biomancy:primordial_cradle", ["§8[§f特殊用途§8]§f: §7可置于加工台进行改造 "])
itemExtraTooltip.put("kubejs:rong_yao_zhi_zheng", ["§8[§f特殊用途§8]§f: §7可置于加工台进行改造 "])
itemExtraTooltip.put("kubejs:zai_bian_zhi_xin", ["§8[§f特殊用途§8]§f: §7可置于加工台进行改造 "])

let getShowTagTooltip = (item) => {
  let itemTags = item.tags.map(key => key.location().toString()).toList()
  return tag2tooltip.keySet()
    .filter(res => itemTags.contains(res))
    .map(tag => tag2tooltip.get(tag))
}
let getShowTagTooltip1 = (item) => {
  let itemTags = item.tags.map(key => key.location().toString()).toList()
  return tag2tooltip1.keySet()
    .filter(res => itemTags.contains(res))
    .map(tag => tag2tooltip1.get(tag))
}

let getExtraTooltip = (item) => {
  return itemExtraTooltip.get(item.id)
}

ItemEvents.tooltip(event => {
  event.addAdvancedToAll((item, advanced, text) => {
    let tooltipBuffer = Utils.newList()

    let tagsTooltip = getShowTagTooltip(item)

    let tagsTooltip1 = getShowTagTooltip1(item)

    if (!tagsTooltip.isEmpty())

      // if (event.isCtrl()||event.isShift()||event.isAlt()) 
      if (event.isCtrl()) {
        //tooltipBuffer.add(Component.literal("§8[§f材料类型§8]§8§r : " + tagsTooltip.join(" §r ")+"§8 JEI可搜索关键词§r"))
        tooltipBuffer.add(Component.literal("§8[§f可用槽位§8]§8§r : " + tagsTooltip1.join(" §r ")))
        tooltipBuffer.add(Component.literal("§8[§f鼠标滚轮§8]§8§r : §f下一页"))
      } else {
        tooltipBuffer.add(Component.literal("§7[§8材料类型§7]§8§r : " + tagsTooltip.join(" §r ") + "§8 JEI可搜索左侧关键词§r"))
        tooltipBuffer.add(Component.literal("§7[§8可用槽位§7]§8§r : " + tagsTooltip1.join(" §r ")))
      }

    let extraTooltip = getExtraTooltip(item)
    /*
     if (extraTooltip)
       if (event.isShift()) {
         tooltipBuffer.add(Component.literal("§8[§fshift§8]§f +"))
         tooltipBuffer.addAll(extraTooltip)
       } else {
         tooltipBuffer.add(Component.literal("§7[§8shift§7]§8 +"))
       }

     if (extraTooltip)  
       if (event.isCtrl()) {
         tooltipBuffer.add(Component.literal("§8[§fctrl§8]§f +"))
         tooltipBuffer.addAll(extraTooltip)
       } else {
         tooltipBuffer.add(Component.literal("§7[§8ctrl§7]§8 +"))
       }
    */

    if (extraTooltip)
      if (event.isAlt()) {
        tooltipBuffer.add(Component.literal("§8[§falt§8]§f + "))
        tooltipBuffer.addAll(extraTooltip)
      } else {
        tooltipBuffer.add(Component.literal("§7[§8alt§7]§8 + §7[§8查看获取方法&用途§7]§8§r"))
      }

    text.addAll(1, tooltipBuffer)
  })
})

//可加工物品描述
let $DataManager = Java.loadClass("se.mickelus.tetra.data.DataManager").instance
let $TooltipHandler = Java.loadClass("net.yiran.extraholopage.gui.TooltipHandler").INSTANCE.get()
let $Arrays = Java.loadClass("java.util.Arrays")
/**
 * @type {$ConfigActionImpl_[]}
 */
let actionData = () => $DataManager.actionData.getData()
  .values()
  .stream()
  .flatMap(v => $Arrays.stream(v))
  .toList()

let getAction = (item) => {
  return actionData()
    .filter(action => action.requirement.matches(item))
    .map(action => action.requiredTools)
}

ItemEvents.tooltip(event => {
  event.addAdvancedToAll((item, advanced, text) => {
    let tooltipBuffer = Utils.newList()
    getAction(item).forEach(action => {
      tooltipBuffer.add("§7[§8可于加工台加工§7]")
      let tooltip = $TooltipHandler.addRequiredToolTooltip(tooltipBuffer, action)
    })
    text.addAll(1, tooltipBuffer)
  })
})