Added mod files

This commit is contained in:
Jacob Vinding
2025-12-26 21:38:55 +01:00
parent 64c4d60c47
commit c4ad0f3e2e
5039 changed files with 894558 additions and 0 deletions

View File

@@ -0,0 +1,111 @@
ClientEvents.highPriorityAssets(event=>{
let json = {
added: [
{
"stack": "item:tconstruct:tinkers_anvil{'texture':'create:zinc_block'}",
"after": "item:tconstruct:modifier_worktable"
},
{
"stack": "item:tconstruct:scorched_anvil{'texture':'create:zinc_block'}",
"after": "item:tconstruct:tinkers_anvil"
}
]
}
event.add("emi:index/stacks/kubejs_added_stacks", json)
// Hide Multiblock'd strainer category since it doesn't play well with EMI
json = {
"filters": [
{
"category": "mbd2:strainer"
}
]
}
event.add("emi:recipe/filters/strainer", json)
})
// JEIEvents.groupEntries( event => {
// event.groupItemsByTag('kubejs:rei_groups/supplementaries/hanging_signs', 'Sign Posts', 'supplementaries:hanging_signs')
// event.groupItemsByTag('kubejs:rei_groups/supplementaries/sign_posts', 'Sign Posts', 'supplementaries:sign_posts')
// trades cards need a rework first
// event.groupItemsByTag('kubejs:rei_groups/kubejs/transaction_cards/profession', 'Trade Card: Profession', "kubejs:transaction_cards/profession")
// event.groupItemsByTag('kubejs:rei_groups/kubejs/transaction_cards/import', 'Trade Card: Import', "kubejs:transaction_cards/import")
// const useNbt = [
// 'reliquary:potion',
// 'reliquary:potion_essence',
// 'reliquary:splash_potion',
// 'reliquary:lingering_potion',
// 'reliquary:tipped_arrow',
// 'tconstruct:crafting_station',
// 'tconstruct:tinker_station',
// 'tconstruct:part_builder',
// 'tconstruct:modifier_worktable',
// 'tconstruct:tinkers_anvil',
// 'tconstruct:scorched_anvil',
// 'tconstruct:seared_drain',
// 'tconstruct:seared_duct',
// 'tconstruct:seared_chute',
// 'tconstruct:scorched_drain',
// 'tconstruct:scorched_duct',
// 'tconstruct:scorched_chute',
// 'tconstruct:smeltery_controller',
// 'tconstruct:foundry_controller',
// 'tconstruct:repair_kit',
// 'tconstruct:slime_helmet'
// ]
// useNbt.forEach(id => {
// const item = Item.of(id)
// const { namespace, path } = Utils.id(item.id)
// event.groupSameItem(`kubejs:rei_groups/${namespace}/${path}`, item.name, item)
// })
// event.groupSameItem('kubejs:rei_groups/microblocks', 'Microblocks', "cb_microblock:microblock")
// event.groupItems('kubejs:rei_groups/fluidbuckets', 'Buckets of Fluids', [
// /bucket/
// ])
// event.groupItems('kubejs:rei_groups/buddycards_base_set', 'Buddy Cards Base Set', [
// /buddycards:buddycard_base/
// ])
// event.groupItems('kubejs:rei_groups/buddycards_nether_set', 'Buddy Cards Nether Set', [
// /buddycards:buddycard_nether/
// ])
// event.groupItems('kubejs:rei_groups/buddycards_end_set', 'Buddy Cards End Set', [
// /buddycards:buddycard_end/
// ])
// event.groupItems('kubejs:rei_groups/buddycards_create_set', 'Buddy Cards Create Set', [
// /buddycardsexp:buddycard_create/
// ])
// event.groupItems('kubejs:rei_groups/buddycards_aquaculture_set', 'Buddy Cards Aquaculture Set', [
// /buddycardsexp:buddycard_aquaculture/
// ])
// event.groupItems("kubejs:rei_groups/buddycards_farmers_set", "Buddy Cards Farmer's Set", [
// /buddycardsexp:buddycard_farmers/
// ])
// event.groupItems('kubejs:rei_groups/buddycards_malum_set', 'Buddy Cards Malum Set', [
// /buddycardsexp:buddycard_malum/
// ])
// event.groupItems('kubejs:rei_groups/buddycards_holiday', 'Buddy Cards Holiday', [
// "buddycards:buddycard_holiday1",
// "buddycards:buddycard_holiday2",
// "buddycards:buddycard_holiday3",
// "buddycards:buddycard_holiday4",
// "buddycards:buddycard_holiday5",
// "buddycards:buddycard_holiday6",
// /buddycards:buddycard_holiday/
// ])
// })

View File

@@ -0,0 +1,53 @@
// priority: 99
const POTION_BOTTLES = ["REGULAR", "SPLASH", "LINGERING"];
const POTIONS = [ // The order that we create these rei entries in is important!
["minecraft:mundane", []],
["minecraft:thick", []],
["minecraft:awkward", []],
["minecraft:night_vision", ["long"]],
["minecraft:invisibility", ["long"]],
["minecraft:leaping", ["long", "strong"]],
["minecraft:fire_resistance", ["long"]],
["minecraft:swiftness", ["long", "strong"]],
["minecraft:slowness", ["long", "strong"]],
["minecraft:turtle_master", ["long", "strong"]],
["minecraft:water_breathing", ["long"]],
["minecraft:healing", ["strong"]],
["minecraft:harming", ["strong"]],
["minecraft:poison", ["long", "strong"]],
["minecraft:regeneration", ["long", "strong"]],
["minecraft:strength", ["long", "strong"]],
["minecraft:weakness", ["long"]],
["minecraft:luck", []],
["minecraft:slow_falling", ["long"]],
["kubejs:haste", ["long", "strong"]]
];
// Add Potion fluids to REI
ClientEvents.highPriorityAssets(event => {
let json = {
added: []
}
POTION_BOTTLES.forEach(bottle=>{
for (let i = 0;i < POTIONS.length;++i) {
let potionName = POTIONS[i][0];
json.added.unshift({
"stack": "fluid:create:potion" + `{Bottle: "${bottle}", Potion: "${potionName}"}`,
"after": "fluid:create:chocolate"
})
for (let j = 0;j < POTIONS[i][1].length;++j) {
let subPotionNameArray = potionName.split(":");
subPotionNameArray.splice(1, 0, ":",POTIONS[i][1][j],"_");
let subPotionName = subPotionNameArray.join("");
json.added.unshift({
"stack": "fluid:create:potion" + `{Bottle: "${bottle}", Potion: "${subPotionName}"}`,
"after": "fluid:create:chocolate"
})
}
}
})
event.add("emi:index/stacks/kubejs_potion_fluids", json)
})

View File

@@ -0,0 +1,183 @@
JEIEvents.hideItems(event => {
event.hide(/^sophisticatedstorage:limited.+barrel.+$/)
event.hide("sophisticatedstorage:copper_barrel")
event.hide("sophisticatedstorage:copper_chest")
event.hide("sophisticatedstorage:copper_shulker_box")
event.hide(/^sophisticatedstorage:.*copper.*tier_upgrade$/)
event.hide("sophisticatedstorage:stack_upgrade_tier_1_plus")
event.hide("sophisticatedbackpacks:stack_upgrade_omega_tier")
event.hide("sophisticatedbackpacks:inception_upgrade")
event.hide(/xp_pump_upgrade/)
event.hide(/itemfilters/)
event.hide(["ae2:inscriber", "ae2:vibration_chamber"])
event.hide(/ae2:.*_budding_quartz/)
event.hide("ae2:small_quartz_bud")
event.hide("ae2:medium_quartz_bud")
event.hide("ae2:large_quartz_bud")
event.hide("ae2:quartz_cluster")
event.hide("architects_palette:withered_bone")
let begoneEarth = [
"tier_1_rover", "tier_2_rocket", "tier_3_rocket", "tier_4_rocket",
"steel_cable", "desh_cable", "desh_fluid_pipe", "ostrum_fluid_pipe", "cable_duct", "fluid_pipe_duct",
"coal_generator", "compressor", "etrionic_blast_furnace", "nasa_workbench", "fuel_refinery",
"water_pump", "energizer", "cryo_freezer",
"etrionic_capacitor",
"oxygen_gear", "wheel", "engine_frame", "fan", "rocket_nose_cone", "rocket_fin",
"etrionic_core", "photovoltaic_vesnium_cell",
"infernal_spire_block", "sky_stone",
"iron_plate",
"cryo_fuel_bucket"
]
event.hide(begoneEarth.map(begone=>{return `ad_astra:${begone}`}))
event.hide(/^ad_astra:(netherite_space|jet_suit)_(helmet|suit|pants|boots)$/)
event.hide("ad_astra:jet_suit")
event.hide(/^ad_astra:(steel|desh|ostrum|calorite)_(tank|engine)$/)
event.hide(/ad_astra:.*mars/)
event.hide(/ad_astra:.*venus/)
event.hide(/ad_astra:.*mercury/)
event.hide(/ad_astra:.*glacio/)
event.hide(/^ad_astra:(?!photovoltaic).*(ostrum|calorite|etrium).*/)
event.hide(/^ad_astra:.*conglomerate.*/)
event.hide(/^ad_astra:.*permafrost.*/)
event.hide(/^(ad_astra|everycomp|supplementaries):.*(aeronos|strophar|glacian).*/)
event.hide(["ad_astra:deepslate_desh_ore", "ad_astra:deepslate_ice_shard_ore"])
event.hide("biomesoplenty:blood")
event.hide("create:crushed_raw_tin")
event.hide("create:crushed_raw_osmium")
event.hide("create:crushed_raw_platinum")
event.hide("create:crushed_raw_silver")
event.hide("create:crushed_raw_quicksilver")
event.hide("create:crushed_raw_aluminum")
event.hide("create:crushed_raw_uranium")
event.hide("create:sturdy_sheet")
event.hide("create:unprocessed_obsidian_sheet")
event.hide(/^createdeco:.*coin/)
event.hide(/incomplete/)
event.hide(/kubejs:growing/)
event.hide(/kubejs:failed/)
event.hide("kubejs:silver_coin")
event.hide("kubejs:gold_coin")
event.hide("decorative_blocks:blockstate_copy_item")
event.hide("occultism:obsidian_dust")
event.hide("occultism:raw_silver")
event.hide("occultism:silver_ingot")
event.hide("occultism:silver_nugget")
event.hide("occultism:silver_ore")
event.hide("occultism:silver_ore_deepslate")
event.hide("occultism:iron_dust")
event.hide("occultism:gold_dust")
event.hide("occultism:copper_dust")
event.hide("occultism:silver_dust")
event.hide("occultism:debug_foliot_lumberjack")
event.hide("occultism:debug_foliot_transport_items")
event.hide("occultism:debug_foliot_cleaner")
event.hide("occultism:debug_foliot_trader")
event.hide("occultism:debug_djinni_manage_machine")
event.hide("occultism:debug_djinni_test")
event.hide("occultism:lighted_air")
event.hide("occultism:jei_dummy/none")
event.hide("occultism:jei_dummy/require_sacrifice")
event.hide("occultism:jei_dummy/require_item_use")
event.hide("prettypipes:blank_module")
event.hide("projectred_core:ruby")
event.hide("projectred_core:sapphire")
event.hide("projectred_core:peridot")
event.hide("projectred_core:electrotine_ingot")
event.hide("projectred_core:electrotine_dust")
event.hide("projectred_core:electrotine_iron_comp")
event.hide("projectred_core:conductive_plate")
event.hide("projectred_core:wired_plate")
event.hide("projectred_core:bundled_plate")
event.hide("projectred_core:anode")
event.hide("projectred_core:cathode")
event.hide("projectred_core:pointer")
event.hide("projectred_core:silicon_chip")
event.hide("projectred_core:energized_silicon_chip")
event.hide("projectred_core:red_iron_comp")
event.hide("projectred_core:sand_coal_comp")
event.hide("projectred_core:boule")
event.hide("projectred_core:silicon")
event.hide("projectred_core:red_silicon_comp")
event.hide("projectred_core:glow_silicon_comp")
event.hide("projectred_core:electrotine_silicon_comp")
event.hide("projectred_core:infused_silicon")
event.hide("projectred_core:energized_silicon")
event.hide("projectred_core:electrotine_silicon")
event.hide("projectred_core:copper_coil")
event.hide("projectred_core:iron_coil")
event.hide("projectred_core:gold_coil")
event.hide("projectred_core:motor")
event.hide("projectred_core:woven_cloth")
event.hide("projectred_core:sail")
event.hide("projectred_core:draw_plate")
event.hide("projectred_core:multimeter")
event.hide("projectred_transmission:low_load_power_wire")
event.hide("projectred_transmission:low_load_framed_power_wire")
event.hide("thermal:rs_control_augment")
event.hide("thermal:side_config_augment")
event.hide("thermal:press_coin_die")
event.hide("thermal:press_gear_die")
event.hide("thermal:press_packing_2x2_die")
event.hide("thermal:press_packing_3x3_die")
event.hide("thermal:press_unpacking_die")
event.hide("thermal:iron_coin")
event.hide("thermal:copper_coin")
event.hide("thermal:tin_coin")
event.hide("thermal:lead_coin")
event.hide("thermal:nickel_coin")
event.hide("thermal:netherite_coin")
event.hide("thermal:bronze_coin")
event.hide("thermal:constantan_coin")
event.hide("thermal:invar_coin")
event.hide("thermal:electrum_coin")
event.hide("thermal:signalum_coin")
event.hide("thermal:lumium_coin")
event.hide("thermal:enderium_coin")
event.hide("thermal:gold_plate")
event.hide("thermal:iron_plate")
event.hide("thermal:copper_plate")
event.hide("thermal:netherite_plate")
event.hide("thermal:silver_ore")
event.hide("thermal:deepslate_silver_ore")
event.hide("thermal:tin_ore")
event.hide("thermal:deepslate_tin_ore")
event.hide("thermal:tin_nugget")
event.hide("thermal:tin_ingot")
event.hide("thermal:tin_block")
event.hide("thermal:tin_dust")
event.hide("thermal:tin_plate")
event.hide("thermal:tin_gear")
event.hide("thermal:raw_tin")
event.hide("thermal:raw_tin_block")
event.hide("thermal:netherite_nugget")
event.hide("thermal:copper_nugget")
event.hide("thermal:ender_pearl_dust")
event.hide("thermal:servo_attachment")
event.hide("thermal:device_hive_extractor")
event.hide("cb_microblock:microblock")
event.hide("ae2:facade")
event.hide("chiselsandbits:block_bit")
event.hide("trials:crafter")
})
JEIEvents.hideFluids(event => {
event.hide("tconstruct:molten_tin")
event.hide("ad_astra:cryo_fuel")
})

View File

@@ -0,0 +1,18 @@
// We'd love to be able to hide the control chip item but for some reason nothing seems to work
// if (Platform.isLoaded("create_connected")) {
// JEIEvents.hideItems(event => {
// event.hide("create_connected:control_chip")
// event.hide("create_connected:incomplete_control_chip")
// })
// ClientEvents.highPriorityAssets(event=>{
// json = {
// "removed": [
// "item:create_connected:control_chip",
// "item:create_connected:incomplete_contrl_chip"
// ],
// }
// event.add("emi:index/stacks/create_connected", json)
// })
// }

View File

@@ -0,0 +1,53 @@
if (Platform.isLoaded("createdieselgenerators")) {
JEIEvents.hideItems(event => {
event.hide("createaddition:capacitor")
event.hide("kubejs:incomplete_large_connector")
event.hide("kubejs:incomplete_connector")
event.hide("thermal:diamond_dust")
event.hide("thermal:electrum_ingot")
event.hide("thermal:electrum_nugget")
event.hide("thermal:electrum_plate")
})
ClientEvents.highPriorityAssets(event=>{
event.add("forge:models/tag/item/dusts/diamond",
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "createaddition:item/diamond_grit"
}
}
)
event.add("forge:models/tag/item/nuggets/electrum",
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "createaddition:item/electrum_nugget"
}
}
)
event.add("forge:models/tag/item/ingots/electrum",
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "createaddition:item/electrum_ingot"
}
}
)
event.add("forge:models/tag/item/plates/electrum",
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "createaddition:item/electrum_sheet"
}
}
)
event.add("forge:models/tag/item/storage_blocks/electrum",
{
"parent": "createaddition:block/electrum_block/block"
}
)
})
}

View File

@@ -0,0 +1,30 @@
if (Platform.isLoaded("createdieselgenerators")) {
JEIEvents.hideItems(event => {
event.hide("createcasing:oak_shaft")
event.hide("createcasing:spruce_shaft")
event.hide("createcasing:birch_shaft")
event.hide("createcasing:jungle_shaft")
event.hide("createcasing:acacia_shaft")
event.hide("createcasing:dark_oak_shaft")
event.hide("createcasing:crimson_shaft")
event.hide("createcasing:warped_shaft")
event.hide("createcasing:glass_shaft")
event.hide("createcasing:brass_shaft")
event.hide("createcasing:oak_cogwheel")
event.hide("createcasing:spruce_cogwheel")
event.hide("createcasing:birch_cogwheel")
event.hide("createcasing:jungle_cogwheel")
event.hide("createcasing:acacia_cogwheel")
event.hide("createcasing:dark_oak_cogwheel")
event.hide("createcasing:crimson_cogwheel")
event.hide("createcasing:warped_cogwheel")
event.hide("createcasing:oak_large_cogwheel")
event.hide("createcasing:spruce_large_cogwheel")
event.hide("createcasing:birch_large_cogwheel")
event.hide("createcasing:jungle_large_cogwheel")
event.hide("createcasing:acacia_large_cogwheel")
event.hide("createcasing:dark_oak_large_cogwheel")
event.hide("createcasing:crimson_large_cogwheel")
event.hide("createcasing:warped_large_cogwheel")
})
}

View File

@@ -0,0 +1,6 @@
if (Platform.isLoaded("createdieselgenerators")) {
JEIEvents.hideItems(event => {
event.hide("create_connected:control_chip")
event.hide("create_connected:incomplete_control_chip")
})
}

View File

@@ -0,0 +1,21 @@
if (Platform.isLoaded("createdieselgenerators")) {
JEIEvents.hideItems(event => {
event.hide("createdieselgenerators:crude_oil_bucket")
event.hide("createdieselgenerators:gasoline_bucket")
event.hide("createdieselgenerators:diesel_bucket")
event.hide("createdieselgenerators:biodiesel_bucket")
event.hide("createdieselgenerators:plant_oil_bucket")
})
JEIEvents.hideFluids(event => {
event.hide("createdieselgenerators:crude_oil")
event.hide("createdieselgenerators:flowing_crude_oil")
event.hide("createdieselgenerators:gasoline")
event.hide("createdieselgenerators:flowing_gasoline")
event.hide("createdieselgenerators:diesel")
event.hide("createdieselgenerators:flowing_diesel")
event.hide("createdieselgenerators:biodiesel")
event.hide("createdieselgenerators:flowing_biodiesel")
event.hide("createdieselgenerators:plant_oil")
event.hide("createdieselgenerators:flowing_plant_oil")
})
}

View File

@@ -0,0 +1,21 @@
// priority: 100
// Java imports
// Mysterious Conversion recipe type
const ConversionRecipe = Java.loadClass("com.simibubi.create.compat.jei.ConversionRecipe")
// Used for creating Drawable graphics for JEI
const ResourceLocation = Java.loadClass("net.minecraft.resources.ResourceLocation");
const ChatFormatting = Java.loadClass("net.minecraft.ChatFormatting");
const JEIIDrawableAnimated = Java.loadClass("mezz.jei.api.gui.drawable.IDrawableAnimated");
// Used to make the FE energy tooltip when hovering over the energy bar
const ThermalStringHelper = Java.loadClass("cofh.lib.util.helpers.StringHelper");
// Used for to draw block models in jei categories
const Boolean = Java.loadClass("java.lang.Boolean");
const Axis = Java.loadClass("com.mojang.math.Axis");
const BlockStateProperties = Java.loadClass("net.minecraft.world.level.block.state.properties.BlockStateProperties");
const AnimatedKinetics = Java.loadClass("com.simibubi.create.compat.jei.category.animations.AnimatedKinetics");
const AttachFace = Java.loadClass("net.minecraft.world.level.block.state.properties.AttachFace")
// initialize globals
if (!global.jeiCategories) global.jeiCategories = {}

View File

@@ -0,0 +1,133 @@
if (!global.jeiCategories.alchemy) global.jeiCategories.alchemy = {
recipeType: null,
resources: {
energyEmpty: null,
energyFull: null,
alchemyArrow: null
},
handlers: {
verifyRecipe: undefined,
setRecipe: undefined,
draw: undefined,
tooltips: undefined
},
loadResources: undefined
};
/**
* @param {Internal.IGuiHelper} guiHelper
*/
global.jeiCategories.alchemy.loadResources = function(guiHelper) {
this.resources.energyEmpty = guiHelper.createDrawable(
new ResourceLocation("cabin:textures/gui/jei/widgets.png"),
0,
0,
14,
18
);
this.resources.energyFull = guiHelper.createAnimatedDrawable(
guiHelper.createDrawable(new ResourceLocation("cabin:textures/gui/jei/widgets.png"), 14, 0, 14, 18),
40,
JEIIDrawableAnimated.StartDirection.BOTTOM,
false
);
this.resources.alchemyArrow = guiHelper.createDrawable(
new ResourceLocation("cabin:textures/gui/jei/widgets.png"),
28,
0,
42,
18
);
}
/**
* @param {Internal.IJeiHelpers} jeiHelpers
* @param {any} recipe
* @returns
*/
global.jeiCategories.alchemy.handlers.verifyRecipe = function (jeiHelpers, recipe) {
// IMPORTANT: Always return true or false. If you do not, it could crash the game or cause JEI to not work properly.
if (!recipe) return false;
if (!recipe.data) return false;
if (!recipe.data.input) return false;
if (!recipe.data.output) return false;
return true;
}
/**
* @param {Internal.IJeiHelpers} jeiHelpers
* @param {Internal.IRecipeLayoutBuilder} builder
* @param {any} recipe
* @param {Internal.IFocusGroup} focuses
*/
global.jeiCategories.alchemy.handlers.setRecipe = function (jeiHelpers, builder, recipe, focuses) {
let guiHelper = jeiHelpers.getGuiHelper()
let inputItems = recipe.data.input;
for(let i = 0;i < inputItems.length;++i) {
builder.addSlot("INPUT", 20 + (20 * i), 45)
.addItemStack(Item.of(inputItems[i]))
.setStandardSlotBackground()
.setBackground(guiHelper.getSlotDrawable(), -1, -1);
}
builder.addSlot("CATALYST", 75, 45)
.addItemStack(Item.of("minecraft:hopper_minecart"));
builder.addSlot("OUTPUT", 114, 45)
.addItemStack(Item.of(recipe.data.output))
.setOutputSlotBackground()
.setBackground(guiHelper.getOutputSlot(), -1, -1);
}
/**
* @param {Internal.IJeiHelpers} jeiHelpers
* @param {any} recipe
* @param {Internal.IRecipeSlotsView} recipeSlotsView
* @param {Internal.GuiGraphics} guiGraphics
* @param {number} mouseX
* @param {number} mouseY
*/
global.jeiCategories.alchemy.handlers.draw = function (jeiHelpers, recipe, recipeSlotsView, guiGraphics, mouseX, mouseY) {
global.jeiCategories.alchemy.resources.energyEmpty.draw(guiGraphics, 5, 44);
global.jeiCategories.alchemy.resources.energyFull.draw(guiGraphics, 5, 44);
global.jeiCategories.alchemy.resources.alchemyArrow.draw(guiGraphics, 60, 44);
// I don't fully understand this matrix stuff, most of it is copied from Create
let matrixStack = guiGraphics.pose();
matrixStack.pushPose();
matrixStack.translate(2, 22, 200);
matrixStack.translate(75, 5, 0);
matrixStack.mulPose(Axis.XP.rotationDegrees(-15.5));
matrixStack.mulPose(Axis.YP.rotationDegrees(22.5 + 90));
AnimatedKinetics.defaultBlockElement(Block.getBlock("thermal:machine_frame").defaultBlockState())
.rotateBlock(0, 0, 0)
.scale(20)
.render(guiGraphics);
matrixStack.translate(0, 20, 0);
AnimatedKinetics.defaultBlockElement(Block.getBlock("ad_astra:small_orange_industrial_lamp").defaultBlockState().setValue(BlockStateProperties.ATTACH_FACE, AttachFace.CEILING))
.rotateBlock(0, 0, 0)
.scale(20)
.render(guiGraphics);
matrixStack.popPose();
}
/**
* @param {Internal.IJeiHelpers} jeiHelpers
* @param {any} recipe
* @param {Internal.IRecipeSlotsView} recipeSlotsView
* @param {number} mouseX
* @param {number} mouseY
* @returns {[Internal.Component]}
*/
global.jeiCategories.alchemy.handlers.tooltips = function (jeiHelpers, recipe, recipeSlotsView, mouseX, mouseY) {
if (mouseX > 5 && mouseX < 18 && mouseY > 44 && mouseY < 61) {
return [ThermalStringHelper.getTextComponent("info.cofh.energy").append(": " + ThermalStringHelper.format(recipe.data.energy) + " " + ThermalStringHelper.localize("info.cofh.unit_rf"))];
}
return [];
}

View File

@@ -0,0 +1,38 @@
JEIAddedEvents.registerCategories((event) => {
event.custom("kubejs:alchemy", (category) => {
let guiHelper = category.jeiHelpers.getGuiHelper();
global.jeiCategories.alchemy.recipeType = category.recipeType;
global.jeiCategories.alchemy.loadResources(guiHelper);
category.title("Alchemical Laser")
.background(guiHelper.createBlankDrawable(146, 70))
.icon(guiHelper.createDrawableItemStack(Item.of("kubejs:alchemical_laser")))
.setIsRecipeHandledByCategory((recipe) => {
return global.jeiCategories.alchemy.handlers["verifyRecipe"](category.jeiHelpers, recipe);
})
.setSetRecipeHandler((builder, recipe, focuses) => {
global.jeiCategories.alchemy.handlers["setRecipe"](category.jeiHelpers, builder, recipe, focuses);
})
.setDrawHandler((recipe, recipeSlotsView, guiGraphics, mouseX, mouseY) => {
global.jeiCategories.alchemy.handlers["draw"](category.jeiHelpers, recipe, recipeSlotsView, guiGraphics, mouseX, mouseY);
})
.setTooltipHandler((recipe, recipeSlotsView, mouseX, mouseY) => {
return global.jeiCategories.alchemy.handlers["tooltips"](category.jeiHelpers, recipe, recipeSlotsView, mouseX, mouseY);
})
});
});
JEIAddedEvents.registerRecipeCatalysts(event => {
let addRecipeCatalyst = function(ingredient, recipeTypes) {
return event.data["addRecipeCatalyst(net.minecraft.world.item.ItemStack,mezz.jei.api.recipe.RecipeType[])"](ingredient, recipeTypes);
}
addRecipeCatalyst(Item.of("thermal:machine_frame"), [global.jeiCategories.alchemy.recipeType]);
addRecipeCatalyst(Item.of("kubejs:alchemical_laser"), [global.jeiCategories.alchemy.recipeType]);
addRecipeCatalyst(Item.of("minecraft:hopper_minecart"), [global.jeiCategories.alchemy.recipeType]);
})
JEIAddedEvents.registerRecipes((event) => {
event.custom("kubejs:alchemy")
.add({input: ["thermal:flux_magnet", Item.of("minecraft:basalt", 2)], output: "thermal:basalz_rod", energy: 160})
.add({input: ["ae2:entropy_manipulator", Item.of("minecraft:snowball", 2)], output: "thermal:blizz_rod", energy: 160});
});

View File

@@ -0,0 +1,9 @@
// We have to brute force things since the kubejs create guide doesn't work at all
JEIEvents.removeRecipes(event => {
const mysteryConversion = global.jeiRuntime.jeiHelpers.getRecipeType("create:mystery_conversion").get()
global.jeiRuntime.recipeManager.addRecipes(mysteryConversion, [
// Refined radiance mysterious conversion
new ConversionRecipe.create("create:chromatic_compound", "create:refined_radiance"),
new ConversionRecipe.create("create:chromatic_compound", "create:shadow_steel")
]);
})

View File

@@ -0,0 +1,106 @@
if (!global.jeiCategories.straining) global.jeiCategories.straining = {
recipeType: null,
resources: {
jeiArrow: null
},
handlers: {
verifyRecipe: undefined,
setRecipe: undefined,
draw: undefined,
tooltips: undefined
},
loadResources: undefined
};
/**
* @param {Internal.IGuiHelper} guiHelper
*/
global.jeiCategories.straining.loadResources = function(guiHelper) {
global.jeiCategories.straining.resources.jeiArrow = guiHelper.createAnimatedDrawable(
guiHelper.getRecipeArrowFilled(),
60,
JEIIDrawableAnimated.StartDirection.LEFT,
false
);
}
/**
* @param {Internal.IJeiHelpers} jeiHelpers
* @param {any} recipe
* @returns
*/
global.jeiCategories.straining.handlers.verifyRecipe = function (jeiHelpers, recipe) {
// IMPORTANT: Always return true or false. If you do not, it could crash the game or cause JEI to not work properly.
if (!recipe) return false;
if (!recipe.data) return false;
if (!recipe.data.input) return false;
if (!recipe.data.output) return false;
return true;
}
/**
* @param {Internal.IJeiHelpers} jeiHelpers
* @param {Internal.IRecipeLayoutBuilder} builder
* @param {any} recipe
* @param {Internal.IFocusGroup} focuses
*/
global.jeiCategories.straining.handlers.setRecipe = function (jeiHelpers, builder, recipe, focuses) {
let guiHelper = jeiHelpers.getGuiHelper()
let inputItem = recipe.data.input;
let outputItems = recipe.data.output;
builder.addSlot("CATALYST", 8, 6)
.addItemStack(Item.of(inputItem))
.setStandardSlotBackground()
.setBackground(guiHelper.getSlotDrawable(), -1, -1);
for(let i = 0;i < 4;++i) {
let slotBuilder = builder.addSlot("OUTPUT", 68 + (18 * i), 6)
slotBuilder.setStandardSlotBackground()
slotBuilder.setBackground(guiHelper.getSlotDrawable(), -1, -1);
if (i < outputItems.length) {
let itemName = outputItems[i].Item;
let chance = outputItems[i].Chance;
if (itemName.startsWith("#")) {
slotBuilder.addItemStacks(Ingredient.of(itemName).getStacks().toArray());
} else {
slotBuilder.addItemStack(Item.of(itemName));
}
slotBuilder.addRichTooltipCallback((recipeSlotView, tooltip) => {
let chancePercent = (Math.round(chance * 100)).toString();
let text = Component.translatable("create.recipe.processing.chance", chancePercent).withStyle(ChatFormatting.GOLD)
tooltip.add(text);
});
}
}
}
/**
* @param {Internal.IJeiHelpers} jeiHelpers
* @param {any} recipe
* @param {Internal.IRecipeSlotsView} recipeSlotsView
* @param {Internal.GuiGraphics} guiGraphics
* @param {number} mouseX
* @param {number} mouseY
*/
global.jeiCategories.straining.handlers.draw = function (jeiHelpers, recipe, recipeSlotsView, guiGraphics, mouseX, mouseY) {
let guiHelper = jeiHelpers.getGuiHelper();
guiHelper.getRecipeArrow().draw(guiGraphics, 34, 6);
global.jeiCategories.straining.resources.jeiArrow.draw(guiGraphics, 34, 6);
}
/**
* @param {Internal.IJeiHelpers} jeiHelpers
* @param {any} recipe
* @param {Internal.IRecipeSlotsView} recipeSlotsView
* @param {number} mouseX
* @param {number} mouseY
* @returns {[Internal.Component]}
*/
global.jeiCategories.straining.handlers.tooltips = function(jeiHelpers, recipe, recipeSlotsView, mouseX, mouseY) {
return [];
}

View File

@@ -0,0 +1,36 @@
JEIAddedEvents.registerCategories((event) => {
event.custom("kubejs:straining", (category) => {
let guiHelper = category.jeiHelpers.getGuiHelper();
global.jeiCategories.straining.recipeType = category.recipeType;
global.jeiCategories.straining.loadResources(guiHelper);
category.title("Straining")
.background(guiHelper.createBlankDrawable(146, 30))
.icon(guiHelper.createDrawableItemStack(Item.of("mbd2:strainer")))
.setIsRecipeHandledByCategory((recipe) => {
return global.jeiCategories.straining.handlers["verifyRecipe"](category.jeiHelpers, recipe);
})
.setSetRecipeHandler((builder, recipe, focuses) => {
global.jeiCategories.straining.handlers["setRecipe"](category.jeiHelpers, builder, recipe, focuses);
})
.setDrawHandler((recipe, recipeSlotsView, guiGraphics, mouseX, mouseY) => {
global.jeiCategories.straining.handlers["draw"](category.jeiHelpers, recipe, recipeSlotsView, guiGraphics, mouseX, mouseY);
})
.setTooltipHandler((recipe, recipeSlotsView, mouseX, mouseY) => {
return global.jeiCategories.straining.handlers["tooltips"](category.jeiHelpers, recipe, recipeSlotsView, mouseX, mouseY);
})
});
});
JEIAddedEvents.registerRecipeCatalysts(event => {
let addRecipeCatalyst = function(ingredient, recipeTypes) {
return event.data["addRecipeCatalyst(net.minecraft.world.item.ItemStack,mezz.jei.api.recipe.RecipeType[])"](ingredient, recipeTypes);
}
addRecipeCatalyst(Item.of("mbd2:strainer"), [global.jeiCategories.straining.recipeType]);
})
JEIAddedEvents.registerRecipes((event) => {
let strainer_filter = Item.of("kubejs:strainer_filter"); strainer_filter.setDamageValue(1);
event.custom("kubejs:straining")
.add({input: strainer_filter, output: [{Item: "#kubejs:strainer/sands", Chance: 0.75}, {Item: "minecraft:clay_ball", Chance: 0.25}]})
});

View File

@@ -0,0 +1,23 @@
const LANGS = ["es_es", "fr_fr", "pt_br", "ru_ru", "zh_cn"]
LANGS.forEach(lang => {
ClientEvents.lang(lang, event => {
global.trades.forEach(id => {
// raw may be "16x mod:custom_item" or "minecraft:dirt"
let raw = global.transactions[id][0].out
let displayName = Text.translatable(Item.of(raw).item.getDescriptionId())
let cardKey = `item.kubejs.trade_card_${id}`
event.add(cardKey, Text.translatable("cabin.import.prefix", displayName).getString())
})
global.professions.forEach(id => {
let profKey = `cabin.profession.${id}`
let display = Text.translatable("cabin.profession.prefix", Text.translatable(profKey)).getString()
let cardKey = `item.kubejs.profession_card_${id}`
event.add(cardKey, display)
})
})
})

View File

@@ -0,0 +1,52 @@
if(Platform.isLoaded("create_central_kitchen")) {
ClientEvents.highPriorityAssets(event=>{
let emiHide = [
"item:create_central_kitchen:creative_tab_icon",
"item:create_central_kitchen:incomplete_egg_sandwich",
"item:create_central_kitchen:incomplete_chicken_sandwich",
"item:create_central_kitchen:incomplete_hamburger",
"item:create_central_kitchen:incomplete_bacon_sandwich",
"item:create_central_kitchen:incomplete_mutton_wrap",
"item:create_central_kitchen:incomplete_apple_pie",
"item:create_central_kitchen:incomplete_sweet_berry_cheesecake",
"item:create_central_kitchen:incomplete_pumpkin_pie",
"item:create_central_kitchen:incomplete_cherry_pie",
"item:create_central_kitchen:incomplete_truffle_pie",
"item:create_central_kitchen:incomplete_mulberry_pie",
];
if (!Platform.isLoaded("upgrade_aquatic")) emiHide.push("item:create_central_kitchen:mulberry_pie_slice")
if (!Platform.isLoaded("peculiars")) {
emiHide.push("item:create_central_kitchen:aloe_cake_slice")
emiHide.push("item:create_central_kitchen:yucca_cake_slice")
emiHide.push("item:create_central_kitchen:passionfruit_cake_slice")
}
if (!Platform.isLoaded("seasonals")) {
emiHide.push("item:create_central_kitchen:pumpkin_cake_slice")
emiHide.push("item:create_central_kitchen:sweet_berry_cake_slice")
}
if (!Platform.isLoaded("createaddition")) {
emiHide.push("item:create_central_kitchen:chocolate_cake_slice")
emiHide.push("item:create_central_kitchen:honey_cake_slice")
}
let json = {
removed: emiHide
}
event.add("emi:index/stacks/create_central_kitchen_removed_stacks", json)
// Hide CABIN's fern deploying recipes from EMI since cck has an automated cuting tab.
let hiddenRecipes = [
"jei:/kubejs/deploying/earth_slime_fern_leaf_using_deployer",
"jei:/kubejs/deploying/sky_slime_fern_leaf_using_deployer",
"jei:/kubejs/deploying/ender_slime_fern_leaf_using_deployer"
]
json = {
filters: hiddenRecipes.map(recipe=>{return {id: recipe}})
}
event.add("emi:recipe/filters/create_central_kitchen_hidden_recipes", json)
})
}

View File

@@ -0,0 +1,3 @@
if(Platform.isLoaded("quark")) {
POTIONS.push(["quark:resilience", ["long", "strong"]])
}

View File

@@ -0,0 +1,6 @@
if (Platform.isLoaded("trials")) {
POTIONS.push(["trials:winded", []])
POTIONS.push(["trials:infested", []])
POTIONS.push(["trials:weave", []])
POTIONS.push(["trials:ooze", []])
}

View File

@@ -0,0 +1,164 @@
// Ponder.registry((event) => {
// event.create("kubejs:alchemical_laser")
// .scene("alchemy_setup", "The Thermal Alchemy Setup", "laser_alchemy", (scene, util) => {
// scene.configureBasePlate(0, 0, 5);
// scene.showBasePlate();
// scene.idle(10)
// let largeCog = util.select.position(5, 0, 2)
// let deployerSingle = util.select.position(4, 1, 3)
// let smallCog = util.select.position(4, 1, 2)
// let lamp = util.select.fromTo(4, 1, 4, 4, 2, 4)
// let deployer = util.select.fromTo(4, 1, 2, 4, 2, 4)
// let machine = util.select.position(2, 1, 3)
// let light = util.select.position(2, 1, 2)
// scene.world.showSection(machine, Facing.down)
// scene.idle(15)
// scene.overlay.showText(50)
// .text("Start with an Invar Machine")
// .pointAt(util.vector.topOf(2, 1, 3))
// .colored(PonderPalette.WHITE)
// .placeNearTarget()
// scene.idle(60)
// scene.world.showSection(light, Facing.east)
// scene.overlay.showText(40)
// .text("Attach a Cage Lamp of any colour")
// .pointAt(util.vector.centerOf(2, 1, 2))
// .colored(PonderPalette.WHITE)
// .placeNearTarget()
// scene.idle(60)
// scene.overlay.showText(40)
// .text("Toggle it on with a wrench")
// .colored(PonderPalette.GREEN)
// .pointAt(util.vector.centerOf(2, 1, 2))
// .placeNearTarget()
// scene.idle(20)
// scene.overlay.showControls(new PonderInput(util.vector.blockSurface(util.vector.centerOf(2.5, 1, 2), Facing.west), PonderPointing.RIGHT)
// .rightClick().withWrench(),
// 50)
// scene.idle(10)
// scene.world.setBlock(util.grid.at(2, 1, 2), util.getDefaultState("kubejs:ponder_laser_lamp_on"), false)
// scene.idle(15)
// scene.idle(50)
// scene.world.setKineticSpeed(deployer, 0)
// scene.world.showSection(deployerSingle, Facing.down)
// scene.idle(15)
// scene.overlay.showText(60)
// .text("Place a Deployer targeting the Invar Machine")
// .pointAt(util.vector.topOf(4, 1, 3))
// .colored(PonderPalette.WHITE)
// .placeNearTarget()
// scene.idle(70)
// scene.overlay.showControls(new PonderInput(util.vector.blockSurface(util.grid.at(4, 1, 3), Facing.west), PonderPointing.RIGHT)
// .rightClick().withWrench(),
// 50)
// scene.idle(8)
// scene.world.modifyTileNBT(deployerSingle, (nbt) => {nbt.Mode = { Mode: "PUNCH"}});
// scene.overlay.showText(50)
// .text("Set it to Punch mode using a Wrench")
// .colored(PonderPalette.GREEN)
// .pointAt(util.vector.topOf(4, 1, 3))
// .placeNearTarget()
// scene.idle(20)
// scene.world.showSection(largeCog, Facing.up)
// scene.world.showSection(smallCog, Facing.down)
// scene.idle(5)
// scene.world.showSection(lamp, Facing.down)
// scene.idle(5)
// scene.world.setKineticSpeed(deployer, 64)
// scene.idle(60)
// scene.overlay.showText(50)
// .attachKeyFrame()
// .text("Whenever the Deployer activates...")
// .pointAt(util.vector.topOf(4, 1, 3))
// .colored(PonderPalette.WHITE)
// .placeNearTarget()
// scene.idle(30)
// scene.world.toggleRedstonePower(lamp)
// scene.idle(3)
// scene.world.moveDeployer(util.grid.at(4, 1, 3), 1, 25);
// scene.idle(15)
// scene.idle(10)
// scene.effects.indicateSuccess(util.grid.at(2, 1, 2))
// scene.effects.indicateSuccess(util.grid.at(2, 1, 1))
// scene.effects.indicateSuccess(util.grid.at(2, 1, 0))
// scene.effects.indicateSuccess(util.grid.at(2, 1, -1))
// scene.idle(3)
// scene.world.moveDeployer(util.grid.at(4, 1, 3), -1, 25);
// scene.idle(10)
// scene.world.toggleRedstonePower(lamp)
// // scene.effects.indicateRedstone(util.grid.at(4, 2, 4))
// scene.overlay.showText(50)
// .text("...the Laser Lamp will emit a High-Energy Beam")
// .colored(PonderPalette.GREEN)
// .pointAt(util.vector.centerOf(2, 1, 2))
// .placeNearTarget()
// scene.idle(60)
// scene.world.showSection(util.select.fromTo(1, 1, 0, 3, 1, 0), Facing.west)
// scene.idle(5)
// //let HopperMinecart = Java.loadClass("net.minecraft.entity.item.minecart.HopperMinecartEntity")
// //let cartHandle =
// //scene.special.createCart(util.vector.topOf(2, 0, 0), 0, (w, x, y, z) => new HopperMinecart(w, x, y, z))
// scene.world.createEntity("minecraft:hopper_minecart", [2,1,0]);
// scene.idle(20)
// scene.overlay.showText(80)
// .attachKeyFrame()
// .text("Hopper Minecarts caught in the Beam will process their contained Items")
// .pointAt(util.vector.centerOf(2, 1, 0))
// .colored(PonderPalette.WHITE)
// .placeNearTarget()
// scene.idle(70)
// scene.overlay.showControls(new PonderInput(util.vector.centerOf(2, 1, 0), PonderPointing.DOWN)
// .withItem("thermal:flux_magnet"),
// 40)
// scene.idle(5)
// scene.overlay.showControls(new PonderInput(util.vector.centerOf(2, 1, 0), PonderPointing.UP)
// .withItem("minecraft:basalt"),
// 35)
// scene.idle(30)
// scene.world.toggleRedstonePower(lamp)
// scene.idle(3)
// scene.world.moveDeployer(util.grid.at(4, 1, 3), 1, 25);
// scene.idle(15)
// scene.idle(10)
// scene.effects.indicateSuccess(util.grid.at(2, 1, 2))
// scene.effects.indicateSuccess(util.grid.at(2, 1, 1))
// scene.effects.indicateSuccess(util.grid.at(2, 1, 0))
// scene.effects.indicateSuccess(util.grid.at(2, 1, -1))
// scene.idle(3)
// scene.world.moveDeployer(util.grid.at(4, 1, 3), -1, 25);
// scene.idle(10)
// scene.overlay.showControls(new PonderInput(util.vector.centerOf(2, 1, 0), PonderPointing.DOWN)
// .withItem("thermal:flux_magnet"),
// 40)
// scene.idle(5)
// scene.overlay.showControls(new PonderInput(util.vector.centerOf(2, 1, 0), PonderPointing.UP)
// .withItem("thermal:basalz_rod"),
// 35)
// // scene.effects.indicateRedstone(util.grid.at(4, 2, 4))
// scene.world.toggleRedstonePower(lamp)
// })
// })

View File

@@ -0,0 +1,2 @@
// Use scene = new CreateSceneBuilder(scene) to get a scene builder object with Create Scene Building Methods
const CreateSceneBuilder = Java.loadClass("com.simibubi.create.foundation.ponder.CreateSceneBuilder")

View File

@@ -0,0 +1,177 @@
Ponder.tags((event) => {
/**
* "kubejs:getting_started" -> the tag name
* "minecraft:paper" -> the icon
* "Getting Started" -> the title
* "This is a description" -> the description
* [...items] -> default items
*/
event.createTag(
"cabin:ponders",
"kubejs:gold_machine",
// Ponder for Kubejs is bugged to not show non kubejs namespace text, edit these in en_us.json instead
"CABIN",
"Components which are distinctive to A&B and CABIN",
["kubejs:alchemical_laser"]
);
});
Ponder.registry((event) => {
event.create("kubejs:alchemical_laser")
.scene("alchemy_setup", "The Alchemical Laser", "cabin:laser_alchemy", (scene, util) => {
scene = new CreateSceneBuilder(scene)
scene.configureBasePlate(0, 0, 5);
scene.showBasePlate();
scene.idle(10)
let largeCog = util.select.position(5, 0, 2)
let deployerSingle = util.select.position(4, 1, 3)
let smallCog = util.select.position(4, 1, 2)
let lamp = util.select.fromTo(4, 1, 4, 4, 2, 4)
let deployer = util.select.fromTo(4, 1, 2, 4, 2, 4)
let machine = util.select.position(2, 1, 3)
let light = util.select.position(2, 1, 2)
scene.world.showSection(machine, Facing.down)
scene.idle(15)
scene.overlay.showText(50)
.text("Start with an Invar Machine")
.pointAt(util.vector.topOf(2, 1, 3))
.colored(PonderPalette.WHITE)
.placeNearTarget()
scene.idle(60)
scene.world.showSection(light, Facing.east)
scene.overlay.showText(40)
.text("Attach an Industrial Lamp of any colour")
.pointAt(util.vector.centerOf(2, 1, 2))
.colored(PonderPalette.WHITE)
.placeNearTarget()
scene.idle(60)
// scene.overlay.showText(40)
// .text("Toggle it on with a wrench")
// .colored(PonderPalette.GREEN)
// .pointAt(util.vector.centerOf(2, 1, 2))
// .placeNearTarget()
// scene.idle(20)
// scene.showControls(50, [2.5, 1, 2], "right")
// .rightClick().withItem("create:wrench")
// scene.idle(10)
// scene.world.setBlock(util.grid.at(2, 1, 2), util.getDefaultState("kubejs:ponder_laser_lamp_on"), false)
// scene.idle(15)
//
// scene.idle(50)
scene.world.setKineticSpeed(deployer, 0)
scene.world.showSection(deployerSingle, Facing.down)
scene.idle(15)
scene.overlay.showText(60)
.text("Place a Deployer targeting the Invar Machine")
.pointAt(util.vector.topOf(4, 1, 3))
.colored(PonderPalette.WHITE)
.placeNearTarget()
scene.idle(70)
scene.showControls(50, [4, 1, 3], "right")
.rightClick().withItem("create:wrench")
scene.idle(8)
scene.world.modifyBlockEntityNBT(deployerSingle, (nbt) => {nbt.Mode = { Mode: "PUNCH"}});
scene.overlay.showText(50)
.text("Set it to Punch mode using a Wrench")
.colored(PonderPalette.GREEN)
.pointAt(util.vector.topOf(4, 1, 3))
.placeNearTarget()
scene.idle(20)
scene.world.showSection(largeCog, Facing.up)
scene.world.showSection(smallCog, Facing.down)
scene.idle(5)
scene.world.showSection(lamp, Facing.down)
scene.idle(5)
scene.world.setKineticSpeed(deployer, 64)
scene.idle(60)
scene.overlay.showText(50)
.attachKeyFrame()
.text("Whenever the Deployer activates...")
.pointAt(util.vector.topOf(4, 1, 3))
.colored(PonderPalette.WHITE)
.placeNearTarget()
scene.idle(30)
scene.world.toggleRedstonePower(lamp)
scene.idle(3)
scene.world.moveDeployer(util.grid.at(4, 1, 3), 1, 25);
scene.idle(15)
scene.idle(10)
scene.effects.createRedstoneParticles(util.grid.at(2, 1, 2), 0xFF9600, 10)
scene.effects.createRedstoneParticles(util.grid.at(2, 1, 1), 0xFF9600, 10)
scene.effects.createRedstoneParticles(util.grid.at(2, 1, 0), 0xFF9600, 10)
scene.effects.createRedstoneParticles(util.grid.at(2, 1, -1), 0xFF9600, 10)
scene.idle(3)
scene.world.moveDeployer(util.grid.at(4, 1, 3), -1, 25);
scene.idle(10)
scene.world.toggleRedstonePower(lamp)
// scene.effects.indicateRedstone(util.grid.at(4, 2, 4))
scene.overlay.showText(50)
.text("...the Laser Lamp will emit a High-Energy Beam")
.colored(PonderPalette.GREEN)
.pointAt(util.vector.centerOf(2, 1, 2))
.placeNearTarget()
scene.idle(60)
scene.world.showSection(util.select.fromTo(1, 1, 0, 3, 1, 0), Facing.west)
scene.idle(5)
// let HopperMinecart = java("net.minecraft.entity.item.minecart.HopperMinecartEntity")
// let cartHandle =
// scene.special.createCart(util.vector.topOf(2, 0, 0), 0, (w, x, y, z) => new HopperMinecart(w, x, y, z))
scene.world.createEntity("minecraft:hopper_minecart", [2.5,1,0]);
scene.idle(20)
scene.overlay.showText(80)
.attachKeyFrame()
.text("Hopper Minecarts caught in the Beam will process their contained Items")
.pointAt(util.vector.centerOf(2, 1, 0))
.colored(PonderPalette.WHITE)
.placeNearTarget()
scene.idle(70)
scene.showControls(40, [2.5, 2, 0.5], "down")
.withItem("thermal:flux_magnet")
scene.idle(5)
scene.showControls(35, [2.5, 1.75, 0.5], "up")
.withItem("minecraft:basalt")
scene.idle(30)
scene.world.toggleRedstonePower(lamp)
scene.idle(3)
scene.world.moveDeployer(util.grid.at(4, 1, 3), 1, 25);
scene.idle(15)
scene.idle(10)
scene.effects.createRedstoneParticles(util.grid.at(2, 1, 2), 0xFF9600, 10)
scene.effects.createRedstoneParticles(util.grid.at(2, 1, 1), 0xFF9600, 10)
scene.effects.createRedstoneParticles(util.grid.at(2, 1, 0), 0xFF9600, 10)
scene.effects.createRedstoneParticles(util.grid.at(2, 1, -1), 0xFF9600, 10)
scene.idle(3)
scene.world.moveDeployer(util.grid.at(4, 1, 3), -1, 25);
scene.idle(10)
scene.showControls(40, [2.5, 2, 0.5], "down")
.withItem("thermal:flux_magnet")
scene.idle(5)
scene.showControls(35, [2.5, 1.75, 0.5], "up")
.withItem("thermal:basalz_rod")
// scene.effects.indicateRedstone(util.grid.at(4, 2, 4))
scene.world.toggleRedstonePower(lamp)
})
})

View File

@@ -0,0 +1,33 @@
const Minecraft = Java.loadClass("net.minecraft.client.Minecraft");
const ResourceOverridesManager = Java.loadClass("fuzs.resourcepackoverrides.client.data.ResourceOverridesManager")
// Resets resource packs to the default, including resource packs configured by Resource Pack Overrides.
// The version only needs to be updated when the default enabled resource packs are changed. Otherwise this number can stay the same.
// Uses the 3 numbers from the semantic version. 5.3.2 would have 5 as the major version, 3 as the minor version, 2 as the patch version.
const MAJOR_VERSION = 2;
const MINOR_VERSION = 0;
const PATCH_VERSION = 0;
const RESOURCE_VERSION = (MAJOR_VERSION << 16) + (MINOR_VERSION << 8) + PATCH_VERSION;
const FILE_NAME = "kubejs_client_data.json";
{
// read data from the file saved in the client's Minecraft folder
let data = JsonIO.read(FILE_NAME) || {}
if (data.resourceOptionsVersion != RESOURCE_VERSION) {
let instance = Minecraft.getInstance()
let resourcePacks = ResourceOverridesManager.getDefaultResourcePacks(true)
// In client_scripts, If we set the resource packs in options to our list of resource packs we want to use, it'll load up the game using those resources
instance.options.resourcePacks.clear()
for(let i = 0;i < resourcePacks.size();++i) {
instance.options.resourcePacks.add(resourcePacks.get(i))
}
instance.options.save()
// write the new version into the file so that we don't reset enabled resource packs until the defaults are changed again.
data.resourceOptionsVersion = RESOURCE_VERSION
JsonIO.write(FILE_NAME, data)
}
}

View File

@@ -0,0 +1,88 @@
ItemEvents.tooltip(tooltip => {
let holds = (id, slots) => tooltip.add("metalbarrels:" + id + "_barrel", Text.translatable("item.metalbarrels.barrel.tooltip", slots));
let main_assembly = (id, stage) => tooltip.add(id, Text.translatable("item.kubejs.main_assembly", stage == "4" ? "Finale" : "Chapter " + stage));
let bonus_assembly = (id, stage) => tooltip.add(id, Text.translatable("item.kubejs.bonus_assembly", "Chapter " + stage));
let not_consumed = (id) => tooltip.add(id, Text.translatable("item.kubejs.not_consumed_in_assembly"));
tooltip.add("minecraft:redstone_ore", Text.translatable("item.minecraft.redstone_ore.tooltip"));
tooltip.add("minecraft:deepslate_redstone_ore", Text.translatable("item.minecraft.deepslate_redstone_ore.tooltip"));
tooltip.add("supplementaries:ash", Text.translatable("item.supplementaries.ash.tooltip"));
tooltip.add("functionalstorage:storage_controller", Text.translatable("item.functionalstorage.controller.tooltip"));
tooltip.add("functionalstorage:controller_extension", Text.translatable("item.functionalstorage.controller_extension.tooltip"));
holds("copper", 5 * 9);
holds("iron", 6 * 9);
holds("silver", 8 * 9);
holds("gold", 9 * 9);
main_assembly("kubejs:kinetic_mechanism", "1");
bonus_assembly("kubejs:sealed_mechanism", "1A");
bonus_assembly("kubejs:reinforced_mechanism", "1B");
main_assembly("create:precision_mechanism", "2");
bonus_assembly("kubejs:infernal_mechanism", "2A");
bonus_assembly("kubejs:logistic_mechanism", "2B");
main_assembly("kubejs:inductive_mechanism", "3");
bonus_assembly("kubejs:abstruse_mechanism", "3A");
main_assembly("kubejs:calculation_mechanism", "4");
not_consumed("cb_microblock:stone_saw");
not_consumed("cb_microblock:iron_saw");
not_consumed("cb_microblock:diamond_saw");
not_consumed("projectred-core:screwdriver");
not_consumed("kubejs:chromatic_resonator");
not_consumed("kubejs:flash_drive");
global.substrates[0].forEach(e => tooltip.add(e.id, Text.translatable("item.kubejs.category.igneous")));
global.substrates[1].forEach(e => tooltip.add(e.id, Text.translatable("item.kubejs.category.herbal")));
global.substrates[2].forEach(e => tooltip.add(e.id, Text.translatable("item.kubejs.category.volatile")));
global.substrates[3].forEach(e => tooltip.add(e.id, Text.translatable("item.kubejs.category.crystalline")));
global.substrates[4].forEach(e => tooltip.add(e.id, Text.translatable("item.kubejs.category.metallurgic")));
global.substrates[5].forEach(e => tooltip.add(e.id, Text.translatable("item.kubejs.category.gemstone")));
global.substrates[6].forEach(e => tooltip.add(e.id, Text.translatable("item.kubejs.category.catalyst")));
tooltip.add("structurescompass:structures_compass", Text.translatable("item.structurescompass.structures_compass.tooltip"));
tooltip.add("reliquary:alkahestry_tome", Text.translatable("item.reliquary.alkahestry_tome.tooltip"));
tooltip.add("kubejs:accellerator_redstone", Text.translatable("item.kubejs.accellerator_redstone.tooltip"));
tooltip.add("kubejs:accellerator_glowstone", Text.translatable("item.kubejs.accellerator_glowstone.tooltip"));
for (let i = 0; i < 15; i++) {
tooltip.add(`kubejs:failed_alchemy_${i}`, Text.translatable("item.kubejs.failed_alchemy.tooltip"));
}
const pureore = ["minecraft:raw_iron", "minecraft:raw_copper", "minecraft:raw_gold", "thermal:raw_lead", "thermal:raw_nickel", "create:raw_zinc"];
pureore.forEach(pureore => {
tooltip.add(pureore, Text.translatable("item.kubejs.pureore.tooltip"));
});
tooltip.addAdvanced(["/^kubejs:.+machine$/", "thermal:machine_frame", "ae2:controller"], (item, adv, text) => {
if (!tooltip.shift) {
text.add(1, Text.translatable("item.kubejs.shift.summary"));
} else {
text.add(1, Text.translatable("item.kubejs.shift.summary"));
text.add(2, Text.translatable("item.kubejs.machine.details"));
text.add(3, Text.translatable("item.kubejs.machine.transformation"));
}
});
tooltip.addAdvanced(["/^kubejs:trial.+$/"], (item, adv, text) => {
if (!tooltip.shift) {
text.add(1, Text.translatable("item.kubejs.shift.summary"));
} else {
text.add(1, Text.translatable("item.kubejs.shift.summary"));
text.add(2, Text.translatable("item.kubejs.trial.details"));
text.add(3, Text.translatable("item.kubejs.trial.special_info"));
}
});
tooltip.addAdvanced(["occultism:spirit_fire"], (item, adv, text) => {
if (!tooltip.shift) {
text.add(1, Text.translatable("item.kubejs.shift.summary"));
} else {
text.add(1, Text.translatable("item.kubejs.shift.summary"));
text.add(2, Text.translatable("item.spirit_fire.info"));
text.add(3, Text.translatable("item.spirit_fire.creation"));
}
});
tooltip.add("trials:crafter", Text.red(Text.translatable("cabin.trials.crafter.deprecation.tooltip")))
});