51 lines
949 B
TypeScript
51 lines
949 B
TypeScript
/**
|
|
* This file is just an example.
|
|
* You can delete it!
|
|
*/
|
|
|
|
import {
|
|
abs,
|
|
Advancement,
|
|
MCFunction,
|
|
Objective,
|
|
particle,
|
|
playsound,
|
|
rel,
|
|
Selector,
|
|
sleep,
|
|
_,
|
|
} from "sandstone";
|
|
|
|
const reward = MCFunction("reward", async () => {
|
|
particle("minecraft:heart", rel(0, 1, 0), abs(0, 3, 0), 0.8, 5);
|
|
playsound("minecraft:entity.villager.celebrate", "player", Selector("@a"), rel(0, 0, 0), 100, 0, 0);
|
|
await sleep("2s")
|
|
dmg.revoke(Selector("@a"))
|
|
})
|
|
|
|
const dmg = Advancement("take_dmg", {
|
|
criteria: {
|
|
impossible: {
|
|
trigger: "minecraft:impossible",
|
|
},
|
|
},
|
|
rewards: {
|
|
function: reward
|
|
}
|
|
});
|
|
|
|
const dmg_score = Objective.create("dmg", "minecraft.custom:minecraft.damage_taken");
|
|
MCFunction(
|
|
"ontick",
|
|
async () => {
|
|
const selector = Selector("@a", {
|
|
scores: {
|
|
dmg: [1, +Infinity],
|
|
},
|
|
});
|
|
dmg.grant(selector)
|
|
dmg_score(selector).set(0)
|
|
},
|
|
{runEachTick: true}
|
|
);
|