forked from JaylyDev/ScriptAPI
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
33 lines (29 loc) · 979 Bytes
/
index.js
File metadata and controls
33 lines (29 loc) · 979 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// Script example for ScriptAPI
// Author: Jayly#1397 <https://github.com/JaylyDev>
// Project: https://github.com/JaylyDev/ScriptAPI
import { world, Player } from '@minecraft/server';
/**
* Get player experience level without using runCommand
* @param {Player} player
* @returns Player experience level
*/
export function getPlayerExperienceLevel (player) {
let minLevel = 0;
let maxLevel = 24791;
let distance = maxLevel - minLevel;
let playerIndex = -1;
// bisection algorithm is used here to find level
while (minLevel !== maxLevel) {
playerIndex = [...world.getPlayers({ minLevel, maxLevel })].findIndex((pl) => pl === player);
if (playerIndex > -1) {
maxLevel -= Math.round(distance / 2);
}
else if (playerIndex === -1) {
minLevel = maxLevel;
maxLevel = maxLevel * 2;
};
distance = maxLevel - minLevel;
};
if (minLevel === 0 && maxLevel === 0 && playerIndex === 0) return 0;
else return minLevel + 1;
};