Skip to content

Commit f9bcac4

Browse files
authored
Add set-score (JaylyDev#111)
* Create index.js in set-score * Create tests.js in set-score * Update index.js
1 parent c49d5be commit f9bcac4

2 files changed

Lines changed: 46 additions & 0 deletions

File tree

scripts/set-score/index.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
// Script examples for ScriptAPI
2+
// Author: Jayly#1397 <Bedrock Add-Ons>
3+
4+
import { Entity, ScoreboardObjective, DisplaySlotId, world } from "@minecraft/server";
5+
/**
6+
* Set entity score and fetch scoreboard objective display
7+
* @param {Entity} entity
8+
* @param {ScoreboardObjective} objective
9+
* @param {number} score
10+
*/
11+
function setScore (entity, objective, score) {
12+
// If entity doesnt have scoreboard property, run command
13+
if (!entity.scoreboard) entity.runCommandAsync('scoreboard players set @s ' + objective.id + ' ' + score);
14+
else entity.scoreboard.setScore(objective, score);
15+
16+
// fetch scoreboard objective display
17+
/**
18+
* @type {(keyof typeof DisplaySlotId)[]}
19+
*/
20+
const displaySlots = [ DisplaySlotId.belowname, DisplaySlotId.list, DisplaySlotId.sidebar ];
21+
22+
for (const displaySlotId of displaySlots) {
23+
const displaySlot = world.scoreboard.getObjectiveAtDisplaySlot(DisplaySlotId[displaySlotId]);
24+
25+
if (displaySlot.objective === objective) {
26+
world.scoreboard.clearObjectiveAtDisplaySlot(DisplaySlotId.sidebar);
27+
world.scoreboard.setObjectiveAtDisplaySlot(DisplaySlotId.sidebar, displaySlot);
28+
}
29+
};
30+
};
31+
32+
export { setScore };

scripts/set-score/tests.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// Script examples for ScriptAPI
2+
// Author: Jayly#1397 <Jayly Discord>
3+
4+
import { world } from "@minecraft/server";
5+
import { setScore } from "./index";
6+
7+
const objective = world.scoreboard.getObjective('messages');
8+
9+
world.events.chat.subscribe((event) => {
10+
if (!event.sender.scoreboard) return;
11+
12+
const score = event.sender.scoreboard.getScore(objective);
13+
setScore(event.sender, objective, score + 1);
14+
})

0 commit comments

Comments
 (0)