Files
jgl_sunlit_patch/kubejs/startup_scripts/customMachines/preservesJar.js
T
2026-07-31 10:34:32 +09:00

261 lines
11 KiB
JavaScript

//priority: 100
console.info("[SOCIETY] preservesJar.js loaded");
const roeFish = [
{ item: "aquaculture:atlantic_herring" },
{ item: "minecraft:pufferfish" },
{ item: "aquaculture:minnow" },
{ item: "aquaculture:bluegill" },
{ item: "aquaculture:perch" },
{ item: "minecraft:salmon" },
{ item: "aquaculture:blackfish" },
{ item: "aquaculture:brown_trout" },
{ item: "aquaculture:carp" },
{ item: "aquaculture:piranha" },
{ item: "aquaculture:smallmouth_bass" },
{ item: "minecraft:cod" },
{ item: "aquaculture:pollock" },
{ item: "aquaculture:jellyfish" },
{ item: "aquaculture:rainbow_trout" },
{ item: "aquaculture:pink_salmon" },
{ item: "minecraft:tropical_fish" },
{ item: "aquaculture:red_grouper" },
{ item: "aquaculture:gar" },
{ item: "aquaculture:muskellunge" },
{ item: "aquaculture:synodontis" },
{ item: "aquaculture:tambaqui" },
{ item: "aquaculture:atlantic_cod" },
{ item: "aquaculture:boulti" },
{ item: "aquaculture:leech" },
{ item: "aquaculture:catfish" },
{ item: "aquaculture:tuna" },
{ item: "aquaculture:bayad" },
{ item: "aquaculture:arapaima" },
{ item: "aquaculture:atlantic_halibut" },
{ item: "aquaculture:starshell_turtle" },
{ item: "aquaculture:brown_shrooma" },
{ item: "aquaculture:red_shrooma" },
{ item: "aquaculture:arrau_turtle" },
{ item: "aquaculture:capitaine" },
{ item: "aquaculture:box_turtle" },
{ item: "aquaculture:pacific_halibut" },
{ item: "aquaculture:goldfish" },
{ item: "crabbersdelight:shrimp" },
{ item: "crabbersdelight:clawster" },
{ item: "crabbersdelight:crab" },
{ item: "crabbersdelight:clam" },
{ item: "netherdepthsupgrade:searing_cod" },
{ item: "netherdepthsupgrade:blazefish" },
{ item: "netherdepthsupgrade:lava_pufferfish" },
{ item: "netherdepthsupgrade:obsidianfish" },
{ item: "netherdepthsupgrade:bonefish" },
{ item: "netherdepthsupgrade:wither_bonefish" },
{ item: "netherdepthsupgrade:magmacubefish" },
{ item: "netherdepthsupgrade:glowdine" },
{ item: "netherdepthsupgrade:soulsucker" },
{ item: "netherdepthsupgrade:fortress_grouper" },
{ item: "netherdepthsupgrade:eyeball_fish" },
{ item: "society:neptuna" },
{ item: "unusualfishmod:raw_sneep_snorp" },
{ item: "unusualfishmod:raw_picklefish" },
{ item: "unusualfishmod:raw_forkfish" },
{ item: "unusualfishmod:raw_beaked_herring" },
{ item: "unusualfishmod:raw_sailor_barb" },
{ item: "unusualfishmod:raw_demon_herring" },
{ item: "unusualfishmod:raw_triple_twirl_pleco" },
{ item: "unusualfishmod:raw_copperflame_anthias" },
{ item: "unusualfishmod:raw_drooping_gourami" },
{ item: "unusualfishmod:raw_duality_damselfish" },
{ item: "unusualfishmod:raw_blind_sailfin" },
{ item: "unusualfishmod:raw_circus_fish" },
{ item: "unusualfishmod:raw_snowflake" },
{ item: "unusualfishmod:raw_aero_mono" },
{ item: "unusualfishmod:raw_hatchetfish" },
{ item: "unusualfishmod:raw_spindlefish" },
{ item: "unusualfishmod:raw_bark_angelfish" },
{ item: "unusualfishmod:raw_amber_goby" },
{ item: "unusualfishmod:raw_eyelash" },
{ item: "crittersandcompanions:koi_fish" },
];
global.preservesJarRecipes = new Map([
["vintagedelight:gearo_berry", { output: ["vintagedelight:gearo_berry_mason_jar"] }],
["vintagedelight:peanut", { output: ["vintagedelight:nut_mash_mason_jar"] }],
["vintagedelight:cucumber", { output: ["vintagedelight:relish_mason_jar"] }],
["vintagedelight:ghost_pepper", { output: ["vintagedelight:pepper_jam_mason_jar"] }],
["minecraft:glow_berries", { output: ["vintagedelight:glow_berry_mason_jar"] }],
["minecraft:sweet_berries", { output: ["vintagedelight:sweet_berry_mason_jar"] }],
["minecraft:apple", { output: ["vintagedelight:apple_sauce_mason_jar"] }],
["society:ancient_fruit", { output: ["society:ancient_fruit_preserves"] }],
["pamhc2trees:dragonfruititem", { output: ["society:dragonfruit_preserves"] }],
["pamhc2trees:starfruititem", { output: ["society:starfruit_preserves"] }],
["atmospheric:orange", { output: ["society:orange_preserves"] }],
["pamhc2trees:bananaitem", { output: ["society:banana_preserves"] }],
["pamhc2trees:mangoitem", { output: ["society:mango_preserves"] }],
["pamhc2trees:lycheeitem", { output: ["society:lychee_preserves"] }],
["pamhc2trees:peachitem", { output: ["society:peach_preserves"] }],
["vinery:cherry", { output: ["society:cherry_preserves"] }],
["farm_and_charm:strawberry", { output: ["society:strawberry_preserves"] }],
["pamhc2trees:plumitem", { output: ["society:plum_preserves"] }],
["pamhc2trees:pawpawitem", { output: ["society:pawpaw_preserves"] }],
["minecraft:melon_slice", { output: ["society:melon_preserves"] }],
["farmersdelight:pumpkin_slice", { output: ["society:pumpkin_preserves"] }],
["vinery:red_grape", { output: ["society:red_grape_preserves"] }],
["vinery:jungle_grapes_red", { output: ["society:red_grape_preserves"] }],
["vinery:savanna_grapes_red", { output: ["society:red_grape_preserves"] }],
["vinery:taiga_grapes_red", { output: ["society:red_grape_preserves"] }],
["vinery:white_grape", { output: ["society:white_grape_preserves"] }],
["vinery:jungle_grapes_white", { output: ["society:white_grape_preserves"] }],
["vinery:savanna_grapes_white", { output: ["society:white_grape_preserves"] }],
["vinery:taiga_grapes_white", { output: ["society:white_grape_preserves"] }],
["society:blueberry", { output: ["society:blueberry_preserves"] }],
["atmospheric:passion_fruit", { output: ["society:passion_fruit_preserves"] }],
["atmospheric:currant", { output: ["society:currant_preserves"] }],
["atmospheric:yucca_fruit", { output: ["society:yucca_preserves"] }],
["atmospheric:aloe_leaves", { output: ["society:aloe_preserves"] }],
["minecraft:carrot", { output: ["society:carrot_preserves"] }],
["minecraft:potato", { output: ["society:potato_preserves"] }],
["minecraft:beetroot", { output: ["society:beetroot_preserves"] }],
["farm_and_charm:corn", { output: ["society:corn_preserves"] }],
["farmersdelight:tomato", { output: ["society:tomato_preserves"] }],
["pamhc2trees:hazelnutitem", { output: ["society:hazelnut_mash"] }],
["autumnity:foul_berries", { output: ["society:foul_berries_preserves"] }],
["minecraft:chorus_fruit", { output: ["society:chorus_fruit_preserves"] }],
["pamhc2trees:lemonitem", { output: ["society:lemon_preserves"] }],
["farm_and_charm:onion", { output: ["society:onion_preserves"] }],
["society:eggplant", { output: ["society:eggplant_preserves"] }],
["veggiesdelight:cauliflower", { output: ["society:cauliflower_preserves"] }],
["veggiesdelight:bellpepper", { output: ["society:bell_pepper_preserves"] }],
["veggiesdelight:sweet_potato", { output: ["society:sweet_potato_preserves"] }],
["veggiesdelight:garlic", { output: ["society:garlic_preserves"] }],
["snowyspirit:ginger", { output: ["society:ginger_preserves"] }],
["society:salmonberry", { output: ["society:salmonberry_preserves"] }],
["society:boysenberry", { output: ["society:boysenberry_preserves"] }],
["society:cranberry", { output: ["society:cranberry_preserves"] }],
["society:crystalberry", { output: ["society:crystalberry_preserves"] }],
["windswept:wild_berries", { output: ["society:wild_berries_preserves"] }],
["veggiesdelight:zucchini", { output: ["society:zucchini_preserves"] }],
["veggiesdelight:turnip", { output: ["society:turnip_preserves"] }],
["veggiesdelight:broccoli", { output: ["society:broccoli_preserves"] }],
["society:mana_fruit", { output: ["society:mana_fruit_preserves"] }],
["society:sparkpod", { output: ["society:sparkpod_preserves"] }],
["society:mossberry", { output: ["society:mossberry_preserves"] }],
]);
roeFish.forEach((fish) => {
const splitFish = fish.item.split(":");
let fishId = splitFish[1];
if (!fishId.includes("_barrel") && !fishId.includes("_roe")) {
if (fishId.includes("raw_")) {
if (fishId === "raw_snowflake") fishId = "frosty_fin";
else fishId = fishId.substring(4, fishId.length);
}
global.preservesJarRecipes.set(`society:${fishId}_roe`, {
output: [`society:aged_${fishId}_roe`],
});
}
});
StartupEvents.registry("block", (event) => {
event
.create("society:preserves_jar", "cardinal")
.property(booleanProperty.create("working"))
.property(booleanProperty.create("mature"))
.property(booleanProperty.create("upgraded"))
.box(2, 0, 2, 14, 15, 14)
.defaultCutout()
.tagBlock("minecraft:mineable/pickaxe")
.tagBlock("minecraft:mineable/axe")
.tagBlock("minecraft:needs_stone_tool")
.item((item) => {
item.tooltip(Text.translatable("block.society.preserves_jar.description").gray());
item.modelJson({
parent: "society:block/kubejs/preserves_jar",
});
})
.defaultState((state) => {
state
.set(booleanProperty.create("working"), false)
.set(booleanProperty.create("mature"), false)
.set(booleanProperty.create("upgraded"), false);
})
.placementState((state) => {
state
.set(booleanProperty.create("working"), false)
.set(booleanProperty.create("mature"), false)
.set(booleanProperty.create("upgraded"), false);
})
.rightClick((click) => {
const { player, item, block, hand, level } = click;
const upgraded = block.properties.get("upgraded").toLowerCase() == "true";
if (hand == "OFF_HAND") return;
if (hand == "MAIN_HAND" && !upgraded && item == "society:stone_hand") {
if (!player.isCreative()) item.count--;
level.spawnParticles(
"farmersdelight:star",
true,
block.x,
block.y + 1,
block.z,
0.2 * rnd(1, 4),
0.2 * rnd(1, 4),
0.2 * rnd(1, 4),
3,
0.01
);
block.set(block.id, {
facing: block.properties.get("facing"),
working: block.properties.get("working"),
mature: block.properties.get("mature"),
upgraded: true,
});
}
global.handleBERightClick(
"minecraft:block.wood.place",
click,
global.preservesJarRecipes,
upgraded ? 3 : 5,
true,
true
);
})
.blockEntity((blockInfo) => {
blockInfo.initialData({ stage: 0, recipe: "" });
blockInfo.serverTick(artMachineTickRate, 0, (entity) => {
global.handleBETick(entity, global.preservesJarRecipes, 3);
});
}).blockstateJson = {
multipart: [
{
when: { upgraded: false },
apply: { model: "society:block/kubejs/preserves_jar_base" },
},
{
when: { working: true },
apply: { model: "society:block/kubejs/preserves_jar_lid" },
},
{
when: { mature: true, working: false },
apply: { model: "society:block/kubejs/preserves_jar_lid_done" },
},
{
when: { upgraded: true },
apply: { model: "society:block/kubejs/preserves_jar_base_upgraded" },
},
{
when: { working: true, upgraded: false },
apply: { model: "society:block/kubejs/preserves_jar_base" },
},
{
when: { mature: true, upgraded: false },
apply: { model: "society:block/kubejs/preserves_jar_base" },
},
{
when: { mature: true },
apply: { model: "society:block/kubejs/machine_done" },
},
],
};
});