This commit is contained in:
Shiroyasha 2025-09-14 20:52:18 +03:00
commit d8d0e9d536
Signed by: shiroyashik
GPG key ID: E4953D3940D7860A
2567 changed files with 167778 additions and 0 deletions

View file

@ -0,0 +1,52 @@
/**
* CODEGENERATED! To edit go to /tools/build/codegen/credits/Dev_Capes.template.js
* Adds our fancy capes to contributors
*/
CapeJS.addCapes(event => {
/* Devs */
// Pansmith
event.register("e8e08277-cc3d-4b35-8ac9-da0af044815c", "gregtechcape")
// Pansmith's Camera Account
event.register("37753ebd-9605-47c1-8818-1635160e9d73", "gregtechcape")
/* Contributors */
// Xefyr0
event.register("a3b08192-f19b-4037-abcd-15093454d905", "moni")
// WithersChat
event.register("13d0aeda-c1e9-4d91-a9b7-4d4e6a19128e", "moni")
// Jamiscus
event.register("56db0044-9fc8-4ae3-83d6-1adee75aa799", "moni")
// Mutso
event.register("099b7514-f521-48f6-8f96-e1487801b5de", "moni")
// Cyb0124
event.register("0171c998-50a5-4e31-9277-4516f1643d3e", "moni")
// Deepacat
event.register("15d2f1b4-dd16-405e-a4d4-a89ecbeeb593", "moni")
// CubeBotFan
event.register("848590fb-a983-4e05-acb0-f6e3f0cde4b7", "moni")
// EpicPuppy613
event.register("a1e6faac-7bfa-4f5c-b5df-06942518d218", "moni")
// LetterN
event.register("3f529105-93b0-491b-b545-b4fbcf8a6902", "moni")
// Ciggymunch
event.register("fa544035-5c57-49c9-8c8f-f44deaa086eb", "moni")
// JuiceyBeans
event.register("d7dfa467-51b9-4beb-9a40-24ec2c2b8759", "moni")
// zcarp7220
event.register("f451bf5c-96be-4ea5-b619-1857304ed89b", "moni")
// Jorster
event.register("69364731-905f-49ee-ad47-a43012a2753e", "moni")
// Spicierspace153
event.register("f76fc8b3-ac6b-44b9-9023-76edaf3d5909", "moni")
// eve336
event.register("afcd28b1-e3cd-424f-9a28-ed9e8ccad380", "moni")
// AubreyFumo
event.register("ebfd9025-0ac0-4e2f-8457-73acc20c3fb0", "moni")
// iluha168
event.register("596353a3-f417-4071-90af-132eab180aa4", "moni")
// Jollahs
event.register("b2b0f67c-4db4-4286-b10d-31cebe8cdf7d", "moni")
// NegaNote
event.register("5042daf6-7d30-4673-97a7-d9aa58d07609", "moni")
})

View file

@ -0,0 +1 @@
/** Empty atm */

View file

@ -0,0 +1,132 @@
/**
* Hide items, fluids, and recipes in EMI/JEI.
* "/kjs inventory" and "/kjs hand" are your friends for finding item and fluid IDs.
*
* If you seek to both hide an item/fluid and remove it from all recipes and tags, then look into
* KubeJS/startup_scripts/nukeLists/item.js and KubeJS/startup_scripts/nukeLists/fluid.js
*/
JEIEvents.hideItems(event => {
// Hide excess permutations of AE2 Facades
event.hide("ae2:facade")
event.hide(/ae2:facade/)
// Hide excess permutations of EnderIO Clear glass, Fused Quartz
event.hide(/enderio:clear_glass_.*_.*/)
event.hide(/enderio:fused_quartz_.*_.*/)
// snad
event.hide("snad:soul_snad")
if (!doSnad) {
event.hide(["snad:snad", "snad:red_snad"])
}
// fluxbore
if (!doFluxbore) {
event.hide("thermal:flux_drill")
}
// Simple Compacting Drawers (TEMPORARY UNTIL BUG FIXED)
if (doCompacting) {
event.hide("functionalstorage:simple_compacting_drawer")
event.hide("functionalstorage:framed_simple_compacting_drawer")
}
// NuclearCraft
event.hide(["nuclearcraft:diosmeter", "nuclearcraft:steel_frame", "nuclearcraft:rock_crusher", "nuclearcraft:decay_hastener", "nuclearcraft:irradiator", "nuclearcraft:nuclear_furnace", "nuclearcraft:extractor", "nuclearcraft:electrolyzer", "nuclearcraft:pressurizer", "nuclearcraft:alloy_smelter", "nuclearcraft:centrifuge", "nuclearcraft:manufactory", "nuclearcraft:gas_scrubber", "nuclearcraft:fluid_enricher", "nuclearcraft:isotope_separator", "nuclearcraft:fluid_infuser", "nuclearcraft:chemical_reactor", "nuclearcraft:analyzer", "nuclearcraft:ingot_former", "nuclearcraft:pump", "nuclearcraft:fuel_reprocessor", "nuclearcraft:leacher", "nuclearcraft:crystallizer", "nuclearcraft:assembler", "nuclearcraft:steam_turbine", "nuclearcraft:melter"])
event.hide(["nuclearcraft:nitrogen_collector", "nuclearcraft:compact_nitrogen_collector", "nuclearcraft:lava_collector", "nuclearcraft:dense_nitrogen_collector", "nuclearcraft:compact_helium_collector", "nuclearcraft:helium_collector", "nuclearcraft:dense_helium_collector"])
event.hide(["nuclearcraft:magnesium_deepslate_ore", "nuclearcraft:thorium_deepslate_ore", "nuclearcraft:uranium_deepslate_ore", "nuclearcraft:magnesium_ore", "nuclearcraft:boron_deepslate_ore", "nuclearcraft:cobalt_ore", "nuclearcraft:platinum_deepslate_ore", "nuclearcraft:silver_deepslate_ore", "nuclearcraft:lead_ore", "nuclearcraft:lithium_ore", "nuclearcraft:thorium_ore", "nuclearcraft:tin_ore", "nuclearcraft:cobalt_deepslate_ore", "nuclearcraft:silver_ore", "nuclearcraft:uranium_ore", "nuclearcraft:zinc_ore", "nuclearcraft:boron_ore", "nuclearcraft:lithium_deepslate_ore"])
event.hide(["nuclearcraft:foursmore", "nuclearcraft:evenmoresmore", "nuclearcraft:moresmore", "nuclearcraft:smore"])
event.hide(/^nuclearcraft:.*_bucket/)
event.hide(/nuclearcraft:upgrade_.*/)
// Hides all unused isotopes and fuels
event.hide(["nuclearcraft:fuel_mixed_mix_239", "nuclearcraft:fuel_mixed_mix_241", "nuclearcraft:thorium_230", "nuclearcraft:plutonium_241", "nuclearcraft:lithium_6", "nuclearcraft:lithium_7", "nuclearcraft:boron_10", "nuclearcraft:boron_11", "nuclearcraft:plutonium_239", "nuclearcraft:uranium_235", "nuclearcraft:uranium_238",])
// Hides unused or duplicate machines
event.hide(/nuclearcraft:solar_panel.*/)
event.hide(/nuclearcraft:.*_voltaic_pile/)
event.hide(/nuclearcraft:.*_battery/)
event.hide(/nuclearcraft:.*_barrel/)
event.hide(/nuclearcraft:.*bscco.*/)
event.hide(/nuclearcraft:turbine.*/)
event.hide(/nuclearcraft:.*_container/)
event.hide(/nuclearcraft:niobium_tin_.*/)
event.hide(/nuclearcraft:fusion.*/)
event.hide(/water_collector/);
event.hide(/nuclearcraft:.*electromagnet.*/)
// Hides all unused blocks
event.hide(["nuclearcraft:empty_active_heat_sink", "nuclearcraft:villiaumite_heat_sink", "nuclearcraft:carobbiite_heat_sink", "nuclearcraft:empty_frame", "nuclearcraft:supercooler", "nuclearcraft:steel_block", "nuclearcraft:electrum_block", "nuclearcraft:supercold_ice_block", "nuclearcraft:magnesium_block", "nuclearcraft:cobalt_block", "nuclearcraft:aluminum_block", "nuclearcraft:lead_block", "nuclearcraft:bronze_block", "nuclearcraft:californium250_block", "nuclearcraft:lithium_block", "nuclearcraft:platinum_block", "nuclearcraft:thorium_block", "nuclearcraft:americium241_block", "nuclearcraft:plutonium238_block", "nuclearcraft:tin_block", "nuclearcraft:uranium238_block", "nuclearcraft:silver_block", "nuclearcraft:uranium_block", "nuclearcraft:zirconium_block", "nuclearcraft:zinc_block", "nuclearcraft:boron_block",])
// Hides all unused items
event.hide(["nuclearcraft:quantum_flux_regulator", "nuclearcraft:chamber_port", "nuclearcraft:fission_reactor_irradiation_chamber", "nuclearcraft:chamber_terminal", "nuclearcraft:event_horizon_stabilizer", "nuclearcraft:quantum_transformer", "nuclearcraft:black_hole", "nuclearcraft:neutronium_frame", "nuclearcraft:photon_concentrator", "nuclearcraft:redstone_dimmer", "nuclearcraft:rad_x", "nuclearcraft:research_paper", "nuclearcraft:plate_extreme", "nuclearcraft:gelatin", "nuclearcraft:actuator", "nuclearcraft:basic_electric_circuit", "nuclearcraft:sic_fiber", "nuclearcraft:tough_helmet", "nuclearcraft:tough_chest", "nuclearcraft:tough_pants", "nuclearcraft:tough_boots", "nuclearcraft:spaxelhoe_tough", "nuclearcraft:spaxelhoe_thorium", "nuclearcraft:multitool", "nuclearcraft:qnp", "nuclearcraft:lithium_ion_cell", "nuclearcraft:dps", "nuclearcraft:servo", "nuclearcraft:bioplastic", "nuclearcraft:empty_sink", "nuclearcraft:radaway_slow", "nuclearcraft:motor", "nuclearcraft:salt", "nuclearcraft:cocoa_butter", "nuclearcraft:sawdust", "nuclearcraft:flour", "nuclearcraft:dominos", "nuclearcraft:radaway"])
// Hide GT ores to prevent clutter
GTMaterialRegistry.getRegisteredMaterials().forEach(id => {
event.hide([
`gtceu:granite_${id.name}_ore`,
`gtceu:diorite_${id.name}_ore`,
`gtceu:andesite_${id.name}_ore`,
`gtceu:red_granite_${id.name}_ore`,
`gtceu:marble_${id.name}_ore`,
`gtceu:deepslate_${id.name}_ore`,
`gtceu:tuff_${id.name}_ore`,
`gtceu:sand_${id.name}_ore`,
`gtceu:red_sand_${id.name}_ore`,
`gtceu:gravel_${id.name}_ore`,
`gtceu:basalt_${id.name}_ore`,
`gtceu:blackstone_${id.name}_ore`,
`gtceu:moon_${id.name}_ore`,
`gtceu:venus_${id.name}_ore`,
`gtceu:mercury_${id.name}_ore`,
`gtceu:mars_${id.name}_ore`,
`gtceu:glacio_${id.name}_ore`
])
})
})
JEIEvents.addItems(event => {
// Add example AE2 facade after failing to hide all other facade permutations
event.add(Item.of("ae2:facade", { item: "gtceu:infinity_block" }))
// Iron Jetpacks' Cells are hard to selectively remove due to NBT shenanigans
event.add(Item.of("ironjetpacks:cell", {Id: "ironjetpacks:hardened"}))
event.add(Item.of("ironjetpacks:cell", {Id: "ironjetpacks:reinforced"}))
event.add(Item.of("ironjetpacks:cell", {Id: "ironjetpacks:resonant"}))
// NuclearCraft
event.add(["nuclearcraft:tough_alloy_ingot", "nuclearcraft:hard_carbon_ingot", "nuclearcraft:ferroboron_ingot", "nuclearcraft:rhodochrosite_dust"])
// Thermal
event.add("thermal:nuke_tnt")
})
JEIEvents.hideFluids(event => {
// hiding NuclearCraft Fluids
// get all nc fluids from index
let ncFluids = Fluid.getTypes().filter(id => id.includes("nuclearcraft"))
// list of used fluids to not remove
let ncUsedFluid = ["nuclearcraft:hydrated_gelatin", "nuclearcraft:gelatin", "nuclearcraft:sugar", "nuclearcraft:marshmallow", "nuclearcraft:cocoa_butter", "nuclearcraft:pasteurized_milk", "nuclearcraft:chocolate_liquor", "nuclearcraft:unsweetened_chocolate", "nuclearcraft:dark_chocolate", "nuclearcraft:milk_chocolate", "nuclearcraft:technical_water", "nuclearcraft:high_pressure_steam", "nuclearcraft:exhaust_steam"]
// adds flowing fluid variants to the list so they aren't hidden
ncUsedFluid.forEach(fluid => { ncUsedFluid.push(`${fluid}_flowing`) })
// remove used fluids from the full list
ncFluids = ncFluids.filter((el) => !ncUsedFluid.includes(el))
// loops through the list and hides all the unwanted fluids for nc
ncFluids.forEach(element => {
event.hide(element)
})
// Hide Ad Astra fluids
Fluid.getTypes().filter(id=>id.includes("ad_astra")).forEach(id => event.hide(id))
// Hide Thermal fluids
event.hide("thermal:creosote")
event.hide("cofh_core:experience")
event.hide("thermal:glowstone")
event.hide("thermal:redstone")
// Hide Soph Core fluids
event.hide("sophisticatedcore:xp_still")
})

View file

@ -0,0 +1,45 @@
/** /kjs inventory will be your friend. */
JEIEvents.hideItems(event => {
const gtMachines = ["extractor", "macerator", "compressor", "forge_hammer", "furnace", "alloy_smelter"]
if (!doSteamAge) {
// Hide GT Steam Age items
gtMachines.forEach(machine => {
event.hide([`gtceu:lp_steam_${machine}`, `gtceu:hp_steam_${machine}`])
})
event.hide(["gtceu:firebrick", "gtceu:firebricks", "gtceu:primitive_blast_furnace"])
event.hide(/fireclay/)
// Hide Bronze tier storage
event.hide("sophisticatedstorage:iron_barrel")
event.hide("sophisticatedstorage:iron_chest")
event.hide("sophisticatedstorage:iron_shulker_box")
event.hide(/^sophisticatedstorage:.*iron.*tier_upgrade$/)
}
// Sophisticated compacting upgrades
if (!doCompacting) {
event.hide(/^sophisticated.*(compacting|compression)_upgrade$/)
event.hide(/^functionalstorage:.*compacting.*_drawer$/)
}
if(!doMeowniPlush) {
event.hide("kubejs:meowni_plush")
}
if (!doHNN) {
event.hide(/hostilenetworks/)
}
if(doHarderRecipes) {
event.hide("watercollector:watercollector")
}
if (!doLaserIO) {
event.hide(/laserio:laser/)
event.hide(/laserio:filter/)
event.hide(/laserio:card_/)
event.hide("laserio:overclocker_node")
event.hide("laserio:overclocker_card")
}
if(!doConverters) {
event.hide(/gtceu:[A-Za-z0-9]+_[A-Za-z0-9]+_energy_converter/)
event.hide(/gtceu:[A-Za-z0-9]+_[A-Za-z0-9]+_energy_converter/)
}
})

View file

@ -0,0 +1,77 @@
// priority: 999
/**
! This script loads first before the other startup scripts
* put your util or patches here so that you can access them at other scripts
*/
/**
* # DO NOT USE THIS!!!!
* @private
* @param {string} char 0 - 6
* @param {number} idx
* @returns {Internal.MutableComponent}
*/
const ____rainbowify_idx_to_color = (char, idx) => {
switch (idx) {
case 0:
return Text.red(char);
case 1:
return Text.gold(char); // orange
case 2:
return Text.yellow(char);
case 3:
return Text.green(char);
case 4:
return Text.aqua(char);
case 5:
return Text.blue(char);
case 6:
return Text.lightPurple(char);
default:
return char;
}
}
/**
* Rainbowify text
* @param {string} text
* @param {number} offset
* @returns {Internal.MutableComponent}
*/
const rainbowify = (text, offset) => {
const components = [];
let idx = 0 + (offset || 0);
for (const char of text) {
idx++;
components.push(____rainbowify_idx_to_color(char, (idx % 7)));
}
return Text.join(components);
}
/**
* @param {string} text
* @param {number} offset
* @returns {Internal.MutableComponent}
*/
const rainbowifySingle = (text, offset) => {
return ____rainbowify_idx_to_color(text, (offset % 7));
}
// Tier enums for easier data handling
const TIER_ULV = 0; // ulv
const TIER_LV = 1;
const TIER_MV = 2;
const TIER_HV = 3;
const TIER_EV = 4;
const TIER_IV = 5;
const TIER_LUV = 6;
const TIER_ZPM = 7;
const TIER_UV = 8;
const TIER_UHV = 9;
const TIER_UEV = 10;
const TIER_UIV = 11;
const TIER_MAX = 12;
const TIER_END = 13;
const TIER_ID_MAPPING = [
"ULV", "LV", "MV", "HV", "EV", "IV", "LuV", "ZPM", "UV", "UHV", "UEV", "UIV", "MAX", "END"
]

View file

@ -0,0 +1,25 @@
/**
* Client-side pack mode management.
* This file adds a set of constant booleans for convenience in determining if a feature is enabled.
*/
// The !! is to cast the types into boolean since they got transformed into Java Objects from being globals
const doAssemblyLineOrderingWarning = !!global.doAssemblyLineOrderingWarning;
const doBoilers = !!global.doBoilers;
const doCompacting = !!global.doCompacting;
const doConduits = !!global.doConduits;
const doConverters = !!global.doConverters;
const doHarderPrintedSilicon = !!global.doHarderPrintedSilicon;
const doHarderProcessing = !!global.doHarderProcessing;
const doHarderRecipes = !!global.doHarderRecipes;
const doHarderNaqFuel = !!global.doHarderNaqFuel;
const doHardGlassRecipesWarning = !!global.doHardGlassRecipesWarning;
const doHatchRevert = !!global.doHatchRevert;
const doHNN = !!global.doHNN;
const doLaserIO = !!global.doLaserIO;
const doMeowniPlush = !!global.doMeowniPlush;
const doMonicoins = !!global.doMonicoins;
const doSnad = !!global.doSnad;
const doSteamAge = !!global.doSteamAge;
const doStoneline = !!global.doStoneline;
const doFluxbore = !!global.doFluxbore;
const doHarderFluxBore = !!global.doHarderFluxBore;

View file

@ -0,0 +1,30 @@
/**
* This file implements some of the functionality necessary to fulfill the purpose of the deprecation pipeline
* as described in KubeJS/startup_scripts/deprecation_pipeline.js.
*
* In particular, in this file each deprecated item is hidden in EMI/JEI and given a helpful tooltip
* to indicate that it is deprecated.
*/
JEIEvents.hideItems(event => {
Object.entries(global.deprecatedItems).forEach(([oldItemID, replacementItemID]) => {
event.hide(oldItemID)
})
Object.entries(global.deprecatedFluids).forEach(([oldFluidID, replacementFluidID]) => {
event.hide(oldFluidID.concat("_bucket"))
})
})
ItemEvents.tooltip(event => {
Object.entries(global.deprecatedItems).forEach(([oldItemID, replacementItemID]) => {
event.add(oldItemID, Text.red(`Deprecated. Use in a crafting table to convert into ${Item.of(replacementItemID).getDisplayName().getString()}`).bold(true))
})
})
JEIEvents.hideFluids(event => {
Object.entries(global.deprecatedFluids).forEach(([oldFluidID, replacementFluidID]) => {
event.hide(oldFluidID)
})
})
// No corresponding tooltip event/api for fluids

View file

@ -0,0 +1,27 @@
/**
* Discord RPC status
*/
global.tier = 0; // this is clientside tier anyways
ClientEvents.loggedIn(() => {
SDRP.setState("sdrp.ulv", "ULV", "ulv")
})
ClientEvents.loggedOut(() => {
global.tier = 0;
})
NetworkEvents.dataReceived("moni:rpc", (e) => {
global.tier = Number(e.data.tier ?? TIER_ULV);
let tierID = TIER_ID_MAPPING[Math.round(global.tier)]; // putting val inside the global var turns it into float
SDRP.setState(`sdrp.${tierID.toLowerCase()}`, tierID, tierID.toLowerCase())
// console.log("SDRP Update Client By Network")
// console.log(`New tier: ${global.tier} ${tierID}`)
})
// this event is slightly delayed when running an integrated server
sdrp.dimension_change(ev => {
let tierID = TIER_ID_MAPPING[Math.round(global.tier)];
ev.updateSDRPState(`sdrp.${tierID.toLowerCase()}`, tierID, tierID.toLowerCase())
// console.log("SDRP Update Client By Dim")
})

View file

@ -0,0 +1,17 @@
/**
*
* Hide a couple items from Architect's Palette.
* Recipes replace these items
*
*/
if (Platform.isLoaded("architects_palette")) {
console.log("Architect's Palette found, loading client compat scripts...")
JEIEvents.hideItems(event => {
// Hide AP items removed from recipes.
event.hide([
"architects_palette:wardstone_blend",
"architects_palette:withered_bone"
])
})
}

View file

@ -0,0 +1,39 @@
/**
* Hide items from Project Red: Transmission if the mod is loaded.
* Requires both the core and addon to be loaded to take effect.
*/
if (Platform.isLoaded("projectred_transmission")) {
console.log("Project Red: Transmission found, loading client compat scripts...")
JEIEvents.hideItems(event => {
// Hide ProjectRed unused items
event.hide([
"projectred_core:silicon",
"projectred_core:sand_coal_comp",
"projectred_core:red_iron_comp",
"projectred_core:electrotine_iron_comp",
"projectred_core:peridot",
"projectred_core:sapphire",
"projectred_core:ruby",
"projectred_core:electrotine_dust",
"projectred_core:electrotine_generator",
"projectred_core:electrotine_ingot",
"projectred_core:red_ingot",
"projectred_core:sail",
"projectred_core:woven_cloth",
"projectred_core:motor",
"projectred_core:gold_coil",
"projectred_core:iron_coil",
"projectred_core:copper_coil",
"projectred_core:electrotine_silicon_comp",
"projectred_core:electrotine_silicon",
"projectred_core:boule",
"projectred_transmission:low_load_framed_power_wire",
"projectred_core:screwdriver",
"projectred_core:draw_plate",
"projectred_transmission:low_load_power_wire"
])
// Hide CBMultipart blocks
event.hide(/cb_microblock:.*/)
})
}

View file

@ -0,0 +1,21 @@
// priority: -10
/**
* Hides all objects on the nukeLists and items matching the Unification Patterns from JEI/EMI.
*/
JEIEvents.hideItems(event => {
global.itemNukeList.forEach(item => {
event.hide(item);
})
// Hide items matching the unification patterns.
// For definitions, see KubeJS/startup_scripts/unificationPatterns.js
event.hide(global.unificationPattern)
event.hide(global.nuclearcraftFuelPattern)
event.hide(global.nuclearcraftIsotopePattern)
})
JEIEvents.hideFluids(event => {
global.fluidNukeList.forEach(fluid => {
event.hide(fluid)
})
})

View file

@ -0,0 +1,299 @@
/**
* Tooltips under item names
*/
const FusionReactorMachine = Java.loadClass("com.gregtechceu.gtceu.common.machine.multiblock.electric.FusionReactorMachine")
ItemEvents.tooltip(tooltip => {
// Microminers
function microminer_tooltip(tier) {
tooltip.add(`kubejs:microminer_t${tier}`, Text.translatable(`item.kubejs.microminer_t${tier}.desc`))
}
for (let i = 1; i <= 12; i++) {
microminer_tooltip(i)
}
tooltip.add("kubejs:microminer_t2half", Text.translatable("item.kubejs.microminer_t2half.desc"))
tooltip.add("kubejs:microminer_t4half", Text.translatable("item.kubejs.microminer_t4half.desc"))
tooltip.add("kubejs:microminer_t8half", Text.translatable("item.kubejs.microminer_t8half.desc"))
tooltip.addAdvanced(["/kubejs:stabilized_microminer/"], (item, adv, text) => {
text.add(1, Text.translatable("item.kubejs.stabilized_microminer.tooltip.1"))
text.add(2, Text.translatable("item.kubejs.stabilized_microminer.tooltip.2"))
text.add(3, Text.translatable("item.kubejs.stabilized_microminer.tooltip.3"))
})
tooltip.addAdvanced(["/kubejs:microminer.*damaged/"], (item, adv, text) => {
text.add(1, Text.translatable("item.kubejs.damaged_microminer.tooltip"))
})
// Microminer Components
tooltip.add("kubejs:universal_navigator", Text.translatable("kubejs.universal_navigator.tooltip"))
// Endgame Items
tooltip.add("kubejs:ultimate_gem", Text.translatable("kubejs.ultimate_gem.tooltip"))
// Assembly line ordering
if (doAssemblyLineOrderingWarning) {
tooltip.add("gtceu:assembly_line", Text.translatable("gtceu.assembly_line.tooltip.hardmode"))
} else {
tooltip.add("gtceu:assembly_line", Text.translatable("gtceu.assembly_line.tooltip.normal"))
}
// Meowni Plush
if (doMeowniPlush) {
tooltip.add("kubejs:meowni_plush", Text.translatable("kubejs.meowni_plush.tooltip.hardmode.1"))
tooltip.add("kubejs:meowni_plush", Text.translatable("kubejs.meowni_plush.tooltip.hardmode.2"))
} else {
tooltip.add("kubejs:meowni_plush", Text.translatable("kubejs.meowni_plush.tooltip.normal.1"))
tooltip.add("kubejs:meowni_plush", Text.translatable("kubejs.meowni_plush.tooltip.normal.2"))
}
// Questbook
tooltip.addAdvanced("ftbquests:book", (item, adv, text) => { text.add(2, Text.gray(Text.translatable("ftbquests.book.tooltip"))) })
tooltip.add("patchouli:guide_book", Text.translatable("item.patchouli.guide_book.tooltip"))
// Redstone Clock
tooltip.add("redstoneclock:redstone_clock", Text.translatable("redstoneclock.redstone_clock.tooltip"))
// DML Data Model
tooltip.add("hostilenetworks:blank_data_model", Text.translatable("hostilenetworks.blank_data_model.tooltip"))
tooltip.add("hostilenetworks:data_model", Text.translatable("hostilenetworks.data_model.tooltip"))
// DML Matters
tooltip.add("hostilenetworks:overworld_prediction", Text.translatable("hostilenetworks.overworld_prediction.tooltip"))
tooltip.add("hostilenetworks:nether_prediction", Text.translatable("hostilenetworks.nether_prediction.tooltip"))
tooltip.add("hostilenetworks:end_prediction", Text.translatable("hostilenetworks.end_prediction.tooltip"))
// Conduits
tooltip.add("enderio:conductive_conduit", Text.translatable("enderio.conductive_conduit.tooltip"))
tooltip.add("enderio:energetic_conduit", Text.translatable("enderio.energetic_conduit.tooltip"))
tooltip.add("enderio:vibrant_conduit", Text.translatable("enderio.vibrant_conduit.tooltip"))
tooltip.add("enderio:endsteel_conduit", Text.translatable("enderio.endsteel_conduit.tooltip"))
tooltip.add("enderio:lumium_conduit", Text.translatable("enderio.lumium_conduit.tooltip"))
tooltip.add("enderio:signalum_conduit", Text.translatable("enderio.signalum_conduit.tooltip"))
tooltip.add("enderio:enderium_conduit", Text.translatable("enderio.enderium_conduit.tooltip"))
tooltip.add("enderio:cryolobus_conduit", Text.translatable("enderio.cryolobus_conduit.tooltip"))
tooltip.add("enderio:sculk_superconductor_conduit", Text.translatable("enderio.sculk_superconductor_conduit.tooltip"))
tooltip.add("thermal:device_rock_gen", Text.translatable("thermal.device_rock_gen.tooltip"))
tooltip.add("thermal:device_water_gen", Text.translatable("thermal.device_water_gen.tooltip"))
tooltip.add(
[
"thermal:upgrade_augment_1",
"thermal:upgrade_augment_2",
"thermal:upgrade_augment_4",
"thermal:upgrade_augment_3",
"thermal:rf_coil_augment_advanced",
"thermal:rf_coil_storage_augment_advanced",
"thermal:rf_coil_xfer_augment_advanced",
"thermal:fluid_tank_augment_advanced"
], Text.translatable("thermal.emi.tooltip")
)
// Circuits
tooltip.addAdvanced("kubejs:matter_processor_mainframe", (item, adv, text) => { text.add(1, rainbowifySingle(Text.translatable("item.kubejs.uev_tier_circuit"), Math.round(Client.lastNanoTime / 1000000000))) })
tooltip.addAdvanced("kubejs:matter_processor_computer", (item, adv, text) => { text.add(1, rainbowifySingle(Text.translatable("item.kubejs.uhv_tier_circuit"), Math.round(Client.lastNanoTime / 1000000000))) })
tooltip.addAdvanced("kubejs:matter_processor_assembly", (item, adv, text) => { text.add(1, rainbowifySingle(Text.translatable("item.kubejs.uv_tier_circuit"), Math.round(Client.lastNanoTime / 1000000000))) })
tooltip.addAdvanced("kubejs:matter_processor", (item, adv, text) => { text.add(1, rainbowifySingle(Text.translatable("item.kubejs.zpm_tier_circuit"), Math.round(Client.lastNanoTime / 1000000000))) })
tooltip.addAdvanced("kubejs:dimensional_processor_mainframe", (item, adv, text) => { text.add(1, rainbowifySingle(Text.translatable("item.kubejs.uiv_tier_circuit"), Math.round(Client.lastNanoTime / 100000000))) })
tooltip.addAdvanced("kubejs:dimensional_processor_computer", (item, adv, text) => { text.add(1, rainbowifySingle(Text.translatable("item.kubejs.uev_tier_circuit"), Math.round(Client.lastNanoTime / 100000000))) })
tooltip.addAdvanced("kubejs:dimensional_processor_assembly", (item, adv, text) => { text.add(1, rainbowifySingle(Text.translatable("item.kubejs.uhv_tier_circuit"), Math.round(Client.lastNanoTime / 100000000))) })
tooltip.addAdvanced("kubejs:dimensional_processor", (item, adv, text) => { text.add(1, rainbowifySingle(Text.translatable("item.kubejs.uv_tier_circuit"), Math.round(Client.lastNanoTime / 100000000))) })
tooltip.addAdvanced("kubejs:monic_processor_mainframe", (item, adv, text) => { text.add(1, Text.blue(Text.translatable("item.kubejs.max_tier_circuit"))) })
tooltip.addAdvanced("kubejs:monic_processor_computer", (item, adv, text) => { text.add(1, Text.blue(Text.translatable("item.kubejs.uiv_tier_circuit"))) })
tooltip.addAdvanced("kubejs:monic_processor_assembly", (item, adv, text) => { text.add(1, Text.blue(Text.translatable("item.kubejs.uev_tier_circuit"))) })
tooltip.addAdvanced("kubejs:monic_processor", (item, adv, text) => { text.add(1, Text.blue(Text.translatable("item.kubejs.uhv_tier_circuit"))) })
tooltip.addAdvanced(["kubejs:matter_processor_mainframe", "kubejs:matter_processor_computer", "kubejs:matter_processor_assembly", "kubejs:matter_processor"], (item, adv, text) => { text.add(1, Text.gray(Text.translatable("item.kubejs.matter_circuit.tooltip"))) })
tooltip.addAdvanced(["kubejs:dimensional_processor_mainframe", "kubejs:dimensional_processor_computer", "kubejs:dimensional_processor_assembly", "kubejs:dimensional_processor"], (item, adv, text) => { text.add(1, Text.gray(Text.translatable("item.kubejs.dimensional_circuit.tooltip"))) })
tooltip.addAdvanced("kubejs:monic_processor_mainframe", (item, adv, text) => { text.add(1, Text.gray(Text.translatable("item.kubejs.monic_processor_mainframe.tooltip"))) })
tooltip.addAdvanced("kubejs:monic_processor_computer", (item, adv, text) => { text.add(1, Text.gray(Text.translatable("item.kubejs.monic_processor_computer.tooltip"))) })
tooltip.addAdvanced("kubejs:monic_processor_assembly", (item, adv, text) => { text.add(1, Text.gray(Text.translatable("item.kubejs.monic_processor_assembly.tooltip"))) })
tooltip.addAdvanced("kubejs:monic_processor", (item, adv, text) => { text.add(1, Text.gray(Text.translatable("item.kubejs.monic_processor.tooltip"))) })
// Multiblocks
tooltip.add("gtceu:discharger", Text.translatable("gtceu.multiblock.discharger.description"))
tooltip.add("gtceu:greenhouse", Text.translatable("gtceu.multiblock.greenhouse.description"))
tooltip.add("gtceu:basic_microverse_projector", Text.translatable("gtceu.multiblock.basic_microverse_projector.description"))
tooltip.add("gtceu:advanced_microverse_projector", Text.translatable("gtceu.multiblock.advanced_microverse_projector.description"))
tooltip.add("gtceu:advanced_microverse_projector_ii", Text.translatable("gtceu.multiblock.advanced_microverse_projector_ii.description"))
tooltip.add("gtceu:subatomic_digital_assembler", Text.translatable("gtceu.multiblock.subatomic_digital_assembler.description"))
tooltip.add("gtceu:large_naquadah_reactor", Text.translatable("gtceu.multiblock.large_naquadah_reactor.description"))
tooltip.add("gtceu:naquadah_refinery", Text.translatable("gtceu.multiblock.naquadah_refinery.description"))
// Singleblocks
tooltip.addAdvanced(["gtceu:lv_atomic_reconstructor", "gtceu:mv_atomic_reconstructor", "gtceu:hv_atomic_reconstructor", "gtceu:ev_atomic_reconstructor"], (item, adv, text) => { text.add(1, Text.gray(Text.translatable("block.gtceu.lvev_atomic_reconstructor.desc"))) })
tooltip.addAdvanced(["gtceu:iv_atomic_reconstructor", "gtceu:luv_atomic_reconstructor", "gtceu:zpm_atomic_reconstructor"], (item, adv, text) => { text.add(1, Text.gray(Text.translatable("block.gtceu.ivzpm_atomic_reconstructor.desc"))) })
tooltip.addAdvanced(["gtceu:uv_atomic_reconstructor", "gtceu:uhv_atomic_reconstructor", "gtceu:uev_atomic_reconstructor", "gtceu:uiv_atomic_reconstructor"], (item, adv, text) => { text.add(1, Text.gray(Text.translatable("block.gtceu.uvuiv_atomic_reconstructor.desc"))) })
tooltip.add("gtceu:sterilizing_filter_casing", Text.gray(Text.translatable("gtceu.sterilizing_filter_casing.tooltip")))
tooltip.addAdvanced("gtceu:naquadah_reactor", (item, adv, text) => {
text.add(1, Text.gray("An reactor that produces energy from the decay of Enriched Naquadah and Naquadria bolts"))
text.add(2, [Text.white("Produces exactly 3 amps of "), Text.red("ZPM"), Text.white(".")])
text.add(3, rainbowifySingle("Does not overclock!", Math.round(Client.lastNanoTime / 1000000000)))
})
// Parallel multiblocks
const parallelMultis = [
"simulation_supercomputer",
"loot_superfabricator",
"rock_cycle_simulator",
"atmospheric_accumulator",
"matter_alterator",
"implosion_collider",
"quintessence_infuser",
"hyperbolic_microverse_projector",
"dimensional_superassembler",
"universal_crystallizer",
"sculk_biocharger"
]
parallelMultis.forEach(multi => {
tooltip.addAdvanced(`gtceu:${multi}`, (item, adv, text) => {
text.add(1, Text.translatable(`gtceu.multiblock.${multi}.description`))
})
})
tooltip.addAdvanced("gtceu:helical_fusion_reactor", (item, adv, text) => {
text.add(1, Text.translatable("gtceu.machine.fusion_reactor.capacity", Math.trunc(FusionReactorMachine.calculateEnergyStorageFactor(GTValues.UHV, 16) / 1000000)))
text.add(2, Text.translatable("gtceu.multiblock.parallelizable.tooltip"))
text.add(3, Text.translatable("gtceu.multiblock.helical_fusion_reactor.description"))
})
tooltip.addAdvanced("gtceu:mega_alloy_blast_smelter", (item, adv, text) => {
text.add(1, Text.translatable("gtceu.multiblock.parallelizable.tooltip"))
text.add(2, Text.translatable("gtceu.machine.available_recipe_map_1.tooltip", Text.translatable("gtceu.alloy_blast_smelter")))
text.add(3, Text.translatable("gtceu.machine.electric_blast_furnace.tooltip.0"))
text.add(4, Text.translatable("gtceu.machine.electric_blast_furnace.tooltip.1"))
text.add(5, Text.translatable("gtceu.machine.electric_blast_furnace.tooltip.2"))
})
tooltip.addAdvanced("gtceu:omnic_forge", (item, adv, text) => {
text.add(1, Text.translatable("gtceu.multiblock.parallelizable.tooltip"))
})
// Parallel hatches
tooltip.add("gtceu:uhv_uhv_parallel_hatch", Text.translatable("gtceu.giga_parallel_hatch.desc"))
tooltip.add("gtceu:uev_uev_parallel_hatch", Text.translatable("gtceu.omega_parallel_hatch.desc"))
// Assorted info & warnings for GT machines
tooltip.add(/^gtceu:.*a_energy_converter$/, Text.translatable("gtceu.energy_converter.tooltip"));
tooltip.add("gtceu:basic_tape", Text.translatable("gtceu.basic_tape.tooltip"));
tooltip.add("gtceu:ender_fluid_link_cover", Text.translatable("gtceu.ender_fluid_link_cover.tooltip"));
tooltip.add("gtceu:nightvision_goggles", Text.translatable("gtceu.nightvision_goggles.tooltip"));
tooltip.add(/^gtceu:.*_robot_arm$/, Text.translatable("gtceu:robot_arm.tooltip"))
tooltip.add(/^gtceu:.*_fluid_regulator$/, Text.translatable("gtceu:fluid_regulator.tooltip"))
// Sophisticated Storage
tooltip.add("functionalstorage:storage_controller", Text.translatable("functionalstorage.storage_controller.tooltip"));
tooltip.add("functionalstorage:framed_storage_controller", Text.translatable("functionalstorage.framed_storage_controller.tooltip"));
// AE2
tooltip.add("ae2:facade", Text.gray(Text.translatable("ae2.facade.tooltip")));
tooltip.add("ae2:memory_card", Text.gray(Text.translatable("ae2.memory_card.tooltip")));
tooltip.add("betterp2p:advanced_memory_card", Text.gray(Text.translatable("betterp2p.advanced_memory_card.tooltip")));
tooltip.add("ae2:creative_fluid_cell", Text.red(Text.translatable("ae2.creative_fluid_cell.tooltip")));
tooltip.add("mae2:eu_p2p_tunnel", Text.red(Text.translatable("mae2.eu_p2p_deprecation_tooltip")));
tooltip.add("mae2:eu_multi_p2p_tunnel", Text.red(Text.translatable("mae2.eu_p2p_deprecation_tooltip")));
// EIO Cap Banks
tooltip.add(/^enderio:.*_bank$/, Text.red(Text.translatable("enderio.cap_bank.tooltip")));
// Misc
tooltip.add("kubejs:eternal_catalyst", Text.darkGray(Text.translatable("kubejs.eternal_catalyst.tooltip")));
tooltip.add("kubejs:infinity_catalyst", Text.darkGray(Text.translatable("kubejs.infinity_catalyst.tooltip")));
tooltip.add("gtceu:infinity_ingot", Text.darkGray(Text.translatable("gtceu.infinity_ingot.tooltip")));
tooltip.add("gtceu:monium_ingot", Text.darkGray(Text.translatable("gtceu.monium_ingot.tooltip")));
tooltip.add("extendedcrafting:the_ultimate_catalyst", Text.darkGray(Text.translatable("extendedcrafting.the_ultimate_catalyst.tooltip")));
tooltip.add("extendedcrafting:the_ultimate_component", Text.darkGray(Text.translatable("extendedcrafting.the_ultimate_component.tooltip")));
tooltip.add("extendedcrafting:auto_flux_crafter", Text.translatable("extendedcrafting.auto_flux_crafter.tooltip"));
tooltip.add("extendedcrafting:flux_alternator", Text.translatable("extendedcrafting.flux_alternator.tooltip"));
tooltip.addAdvanced(["extendedcrafting:basic_auto_table", "extendedcrafting:advanced_auto_table", "extendedcrafting:elite_auto_table", "extendedcrafting:ultimate_auto_table", "extendedcrafting:epic_auto_table", "extendedcrafting:auto_flux_crafter"], (item, adv, text) => {
text.add(1, Text.translatable("extendedcrafting.auto_table.tooltip.1"))
text.add(2, Text.translatable("extendedcrafting.auto_table.tooltip.2"))
})
tooltip.add("kubejs:excitationcoil", Text.translatable("kubejs.excitationcoil.tooltip"));
tooltip.add("gtceu:terminal", Text.translatable("gtceu.terminal.tooltip"));
tooltip.add(["gtceu:prospector.lv", "gtceu:prospector.hv", "gtceu:prospector.luv"], Text.translatable("gtceu.prospector.tooltip.1"));
tooltip.add(["gtceu:prospector.lv", "gtceu:prospector.hv", "gtceu:prospector.luv"], Text.translatable("gtceu.prospector.tooltip.2"));
// TelePastries
const TelePastries = ["nether", "overworld", "end", "custom", "lost_city"]
TelePastries.forEach(dim => {
tooltip.addAdvanced(`telepastries:${dim}_cake`, (item, adv, text) => {
text.add(1, Text.translatable(`telepastries.${dim}_cake.tooltip.1`))
text.add(2, Text.translatable(`telepastries.${dim}_cake.tooltip.2`))
})
})
// NuclearCraft
tooltip.add("nuclearcraft:rhodochrosite_dust", "§eMnCO₃");
tooltip.add("nuclearcraft:tough_alloy_ingot", "§eLiFeB");
tooltip.add("nuclearcraft:ferroboron_ingot", "§eFeB");
tooltip.add("nuclearcraft:hard_carbon_ingot", "§eFe₃C");
tooltip.add("nuclearcraft:uranium_233", "§eU²³³");
tooltip.add("nuclearcraft:plutonium_238", "§ePu²³⁸");
tooltip.add("nuclearcraft:plutonium_242", "§ePu²⁴²");
tooltip.add("nuclearcraft:neptunium_236", "§eNp²³⁶");
tooltip.add("nuclearcraft:neptunium_237", "§eNp²³⁷");
tooltip.add("nuclearcraft:americium_241", "§eAm²⁴¹");
tooltip.add("nuclearcraft:americium_242", "§eAm²⁴²");
tooltip.add("nuclearcraft:americium_243", "§eAm²⁴³");
tooltip.add("nuclearcraft:curium_243", "§eCm²⁴³");
tooltip.add("nuclearcraft:curium_245", "§eCm²⁴⁵");
tooltip.add("nuclearcraft:curium_246", "§eCm²⁴⁶");
tooltip.add("nuclearcraft:curium_247", "§eCm²⁴⁷");
tooltip.add("nuclearcraft:berkelium_247", "§eBk²⁴⁷");
tooltip.add("nuclearcraft:berkelium_248", "§eBk²⁴⁸");
tooltip.add("nuclearcraft:californium_249", "§eCf²⁴⁹");
tooltip.add("nuclearcraft:californium_251", "§eCf²⁵¹");
tooltip.add("nuclearcraft:californium_252", "§eCf²⁵²");
tooltip.addAdvanced(["/^kubejs:.+infinity_dust_block$/", "kubejs:infinity_dust_block"], (item, adv, text) => {
text.add(1, Text.translatable("item.kubejs.infinity_dust_block.tooltip"))
})
// Wooden pipe, tank warning
tooltip.add([
"gtceu:wood_small_fluid_pipe",
"gtceu:treated_wood_small_fluid_pipe",
"gtceu:wood_normal_fluid_pipe",
"gtceu:treated_wood_normal_fluid_pipe",
"gtceu:wood_large_fluid_pipe",
"gtceu:treated_wood_large_fluid_pipe",
"gtceu:wooden_multiblock_tank"
], Text.translatable("gtceu.wood_pipe_warning.tooltip"))
// Chipped workbenches
tooltip.addAdvanced([
"chipped:botanist_workbench",
"chipped:glassblower",
"chipped:carpenters_table",
"chipped:loom_table",
"chipped:mason_table",
"chipped:alchemy_bench",
"chipped:tinkering_table"], (item, adv, text) => {
text.add(1, Text.translatable("chipped.workbenches.tooltip.1"))
text.add(2, Text.translatable("chipped.workbenches.tooltip.2"))
})
tooltip.add("chisel_chipped_integration:drill", Text.translatable("chipped.drill.tooltip"))
// Note about PEX crafter speed
tooltip.add([
"packagedexcrafting:advanced_crafter",
"packagedexcrafting:elite_crafter",
"packagedexcrafting:ultimate_crafter",
"packagedexexcrafting:epic_crafter"
], Text.translatable("packagedexcrafting.crafterspeed.tooltip"))
// Tempad
if (Platform.isLoaded("tempad")) {
tooltip.add("tempad:tempad", Text.translatable("tempad.tempad.tooltip"))
}
})