79 lines
2.9 KiB
JavaScript
79 lines
2.9 KiB
JavaScript
/**
|
|
* Item modification.
|
|
* Used to modify items not added by KJS
|
|
* except for the Infinity/Ultimate crafting tools.
|
|
*/
|
|
const $ItemBuilder = Java.loadClass("dev.latvian.mods.kubejs.item.custom.BasicItemJS$Builder")
|
|
|
|
const $Rarity = Java.loadClass("net.minecraft.world.item.Rarity")
|
|
const $UnaryOperator = Java.loadClass("java.util.function.UnaryOperator")
|
|
const $UtilsJS = Java.loadClass("dev.latvian.mods.kubejs.util.UtilsJS")
|
|
const $Style = Java.loadClass("net.minecraft.network.chat.Style")
|
|
|
|
// All Items that need to have a different rarity
|
|
let itemRarityMap = Utils.newMap()
|
|
itemRarityMap.put("functionalstorage:copper_upgrade", createRarity("bronze", 0xa47b47))
|
|
itemRarityMap.put("functionalstorage:gold_upgrade", createRarity("steel", 0x69696b))
|
|
itemRarityMap.put("functionalstorage:diamond_upgrade", createRarity("aluminum", 0x4e748b))
|
|
itemRarityMap.put("functionalstorage:netherite_upgrade", createRarity("stainless_steel", 0x9695a3))
|
|
|
|
ItemEvents.modification(event => {
|
|
|
|
// Make it so Sugar Cane can be used as fuel in the Furnace
|
|
event.modify("minecraft:sugar_cane", item => { item.burnTime = 300 })
|
|
|
|
|
|
// Make some items glint like enchanted items
|
|
const itemsToModify = [
|
|
"gtceu:dark_soularium_nugget",
|
|
"gtceu:dark_soularium_dust",
|
|
"gtceu:tiny_dark_soularium_dust",
|
|
"gtceu:dark_soularium_block",
|
|
"gtceu:dark_soularium_ingot",
|
|
"gtceu:small_dark_soularium_dust",
|
|
"hostilenetworks:prediction",
|
|
/empowered/,
|
|
/activated_netherite/
|
|
]
|
|
|
|
|
|
// Change rarities
|
|
itemRarityMap.forEach((item, rarity) => {
|
|
event.modify(item, i => i.rarity = rarity)
|
|
})
|
|
|
|
itemsToModify.forEach(itemName => {
|
|
event.modify(itemName, item => {
|
|
const builder = new $ItemBuilder(itemName).glow(true)
|
|
item.setItemBuilder(builder)
|
|
})
|
|
})
|
|
|
|
|
|
// Increase the maximum stack size of Ender Pearls up to 64
|
|
event.modify("minecraft:ender_pearl", item => {
|
|
item.maxStackSize = 64
|
|
})
|
|
|
|
|
|
// Make Infinity and Ultimate tools work as unbreakable crafting tools
|
|
const toolTypes = [
|
|
"file",
|
|
"hammer",
|
|
"screwdriver",
|
|
"wrench",
|
|
"wire_cutter"
|
|
]
|
|
toolTypes.forEach(type => {
|
|
event.modify(`kubejs:infinity_${type}`, item => { item.craftingRemainder = Item.of(`kubejs:infinity_${type}`).item })
|
|
event.modify(`kubejs:ultimate_${type}`, item => { item.craftingRemainder = Item.of(`kubejs:ultimate_${type}`).item })
|
|
})
|
|
})
|
|
|
|
const withColorMethod = $Style.EMPTY.class.declaredMethods.filter((method) => method.name.includes("m_131148_"))[0]
|
|
function createRarity (/** @type {string} */ name, /** @type {number} */ colorCode) {
|
|
let color = $UtilsJS.makeFunctionProxy("startup", $UnaryOperator, (style) => {
|
|
return withColorMethod.invoke(style, Color.of(colorCode).createTextColorJS())
|
|
})
|
|
return $Rarity["create(java.lang.String,java.util.function.UnaryOperator)"](name, color)
|
|
}
|