196 lines
5.9 KiB
JavaScript
196 lines
5.9 KiB
JavaScript
//priority: 100
|
|
console.info("[SOCIETY] espressoMachine.js loaded");
|
|
|
|
global.espressoMachineRecipes = new Map([
|
|
["herbalbrews:ground_coffee", { output: ["1x society:espresso"] }],
|
|
["society:large_milk", { output: ["4x society:steamed_milk"] }],
|
|
["society:large_sheep_milk", { output: ["4x society:steamed_milk"] }],
|
|
["society:large_goat_milk", { output: ["4x society:steamed_milk"] }],
|
|
["society:large_warped_milk", { output: ["4x society:steamed_milk"] }],
|
|
["society:large_buffalo_milk", { output: ["4x society:steamed_milk"] }],
|
|
["society:milk", { output: ["1x society:steamed_milk"] }],
|
|
["society:sheep_milk", { output: ["1x society:steamed_milk"] }],
|
|
["society:goat_milk", { output: ["1x society:steamed_milk"] }],
|
|
["society:warped_milk", { output: ["1x society:steamed_milk"] }],
|
|
["society:buffalo_milk", { output: ["1x society:steamed_milk"] }],
|
|
[
|
|
"farmersdelight:milk_bottle",
|
|
{ output: ["1x society:steamed_milk", "1x minecraft:glass_bottle"] },
|
|
],
|
|
[
|
|
"vintagedelight:nut_milk_bottle",
|
|
{ output: ["1x society:steamed_milk", "1x minecraft:glass_bottle"] },
|
|
],
|
|
]);
|
|
|
|
StartupEvents.registry("block", (event) => {
|
|
event
|
|
.create("society:espresso_machine", "cardinal")
|
|
.property(booleanProperty.create("working"))
|
|
.property(booleanProperty.create("mature"))
|
|
.property(booleanProperty.create("upgraded"))
|
|
.box(4, 0, 2, 12, 14, 14)
|
|
.defaultCutout()
|
|
.model("society:block/kubejs/espresso_machine")
|
|
.tagBlock("minecraft:mineable/pickaxe")
|
|
.tagBlock("minecraft:needs_stone_tool")
|
|
.item((item) => {
|
|
item.tooltip(Text.translatable("block.society.espresso_machine.description").gray());
|
|
item.modelJson({
|
|
parent: "society:block/kubejs/espresso_machine",
|
|
});
|
|
})
|
|
.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 { item, block, hand, player, server } = click;
|
|
|
|
if (player.isFake()) return;
|
|
if (hand == "OFF_HAND") return;
|
|
if (hand == "MAIN_HAND") {
|
|
let recipe = global.espressoMachineRecipes.get(`${item.id}`);
|
|
// Handle steamed milk
|
|
if (recipe && recipe.output[0].includes("steamed_milk")) {
|
|
if (!player.isCreative()) item.count--;
|
|
server.runCommandSilent(
|
|
`playsound minecraft:block.lava.extinguish block @a ${player.x} ${player.y} ${player.z}`
|
|
);
|
|
global.giveExperience(server, player, "farming", 10);
|
|
recipe.output.forEach((e) => {
|
|
block.popItemFromFace(e, block.properties.get("facing"));
|
|
});
|
|
}
|
|
}
|
|
|
|
global.handleBERightClick(
|
|
"doapi:brewstation_whistle",
|
|
click,
|
|
new Map([["herbalbrews:ground_coffee", { output: ["1x society:espresso"] }]]),
|
|
4,
|
|
true
|
|
);
|
|
})
|
|
.randomTick((tick) => {
|
|
global.handleBERandomTick(tick, true, 1);
|
|
})
|
|
.blockEntity((blockInfo) => {
|
|
blockInfo.initialData({ stage: 0, recipe: "" });
|
|
}).blockstateJson = {
|
|
multipart: [
|
|
{
|
|
apply: { model: "society:block/kubejs/espresso_machine_particle" },
|
|
},
|
|
{
|
|
when: { mature: true },
|
|
apply: { model: "society:block/kubejs/machine_done" },
|
|
},
|
|
{
|
|
when: { working: false, mature: true, facing: "north" },
|
|
apply: {
|
|
model: "society:block/kubejs/espresso_cup_full",
|
|
y: 0,
|
|
uvlock: false,
|
|
},
|
|
},
|
|
{
|
|
when: { working: false, mature: true, facing: "east" },
|
|
apply: {
|
|
model: "society:block/kubejs/espresso_cup_full",
|
|
y: 90,
|
|
uvlock: false,
|
|
},
|
|
},
|
|
{
|
|
when: { working: false, mature: true, facing: "south" },
|
|
apply: {
|
|
model: "society:block/kubejs/espresso_cup_full",
|
|
y: 180,
|
|
uvlock: false,
|
|
},
|
|
},
|
|
{
|
|
when: { working: false, mature: true, facing: "west" },
|
|
apply: {
|
|
model: "society:block/kubejs/espresso_cup_full",
|
|
y: -90,
|
|
uvlock: false,
|
|
},
|
|
},
|
|
{
|
|
when: { working: true, mature: false, facing: "north" },
|
|
apply: {
|
|
model: "society:block/kubejs/espresso_cup_empty",
|
|
y: 0,
|
|
uvlock: false,
|
|
},
|
|
},
|
|
{
|
|
when: { working: true, mature: false, facing: "east" },
|
|
apply: {
|
|
model: "society:block/kubejs/espresso_cup_empty",
|
|
y: 90,
|
|
uvlock: false,
|
|
},
|
|
},
|
|
{
|
|
when: { working: true, mature: false, facing: "south" },
|
|
apply: {
|
|
model: "society:block/kubejs/espresso_cup_empty",
|
|
y: 180,
|
|
uvlock: false,
|
|
},
|
|
},
|
|
{
|
|
when: { working: true, mature: false, facing: "west" },
|
|
apply: {
|
|
model: "society:block/kubejs/espresso_cup_empty",
|
|
y: -90,
|
|
uvlock: false,
|
|
},
|
|
},
|
|
{
|
|
when: { facing: "north" },
|
|
apply: {
|
|
model: "society:block/kubejs/espresso_machine",
|
|
y: 0,
|
|
uvlock: false,
|
|
},
|
|
},
|
|
{
|
|
when: { facing: "east" },
|
|
apply: {
|
|
model: "society:block/kubejs/espresso_machine",
|
|
y: 90,
|
|
uvlock: false,
|
|
},
|
|
},
|
|
{
|
|
when: { facing: "south" },
|
|
apply: {
|
|
model: "society:block/kubejs/espresso_machine",
|
|
y: 180,
|
|
uvlock: false,
|
|
},
|
|
},
|
|
{
|
|
when: { facing: "west" },
|
|
apply: {
|
|
model: "society:block/kubejs/espresso_machine",
|
|
y: -90,
|
|
uvlock: false,
|
|
},
|
|
},
|
|
],
|
|
};
|
|
});
|