aboutsummaryrefslogtreecommitdiff
path: root/features/stat_next_to_name/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'features/stat_next_to_name/index.js')
-rw-r--r--features/stat_next_to_name/index.js65
1 files changed, 64 insertions, 1 deletions
diff --git a/features/stat_next_to_name/index.js b/features/stat_next_to_name/index.js
index ee8d7d2..014006c 100644
--- a/features/stat_next_to_name/index.js
+++ b/features/stat_next_to_name/index.js
@@ -1,6 +1,7 @@
/// <reference types="../../../CTAutocomplete" />
/// <reference lib="es2015" />
import Feature from "../../featureClass/class";
+import soopyV2Server from "../../socketConnection";
import SettingBase from "../settings/settingThings/settingBase";
class StatNextToName extends Feature {
@@ -9,10 +10,72 @@ class StatNextToName extends Feature {
}
onEnable(){
- new SettingBase("NOTE: this does not work", "COMING SOON(tm) (sooner than sb 1.0)", true, "stat_next_to_name_description", this)
+ new SettingBase("(ONLY WEIGHT ATM) NOTE: A pink star thing (&d⚝§0)", "Means that player is also using SoopyV2", true, "stat_next_to_name_description", this)
+
+ this.userStats = {}
+
+ this.loadingStats = []
+
+ this.statsThing = "weight"
+ this.decimalPlaces = 0
+
+ soopyV2Server.onPlayerStatsLoaded = (stats)=>{this.playerStatsLoaded.call(this, stats)}
+
+ this.registerStep(false, 5, this.loadPlayerStatsTick)
+ }
+
+ loadPlayerStatsTick(){
+ let nearestPlayer = undefined
+ let nearestDistance = Infinity
+
+ World.getAllPlayers().forEach(player => {
+ if(this.userStats[player.getUUID().toString().replace(/-/g, "")]){
+ this.updatePlayerNametag(player)
+ return
+ }
+ if(this.loadingStats.includes(player.getUUID().toString().replace(/-/g, ""))) return
+
+ let dist = Math.pow(player.getX() - Player.getX(), 2) + Math.pow(player.getY() - Player.getY(), 2) + Math.pow(player.getZ() - Player.getZ(), 2)
+ if(dist < nearestDistance){
+ nearestDistance = dist
+ nearestPlayer = player.getUUID().toString().replace(/-/g, "")
+ }
+ })
+
+ if(nearestPlayer){
+ this.loadPlayerStats(nearestPlayer)
+ }
+ }
+
+ updatePlayerNametag(player){
+ let stats = this.userStats[player.getUUID().toString().replace(/-/g, "")]
+
+ let nameTagString = player.getName()
+
+ nameTagString += " &2["
+ if(stats.usingSoopyv2) nameTagString += "&d⚝&2"
+ if(stats.exists && stats[this.statsThing]){
+ nameTagString +=stats[this.statsThing].toFixed(this.decimalPlaces)
+ }else{
+ nameTagString += "?"
+ }
+ nameTagString += "]"
+ player.setNametagName(new TextComponent(nameTagString));
+ }
+
+ loadPlayerStats(uuid){
+ // console.log("loading stats for " + uuid)
+ soopyV2Server.requestPlayerStats(uuid)
+ this.loadingStats.push(uuid)
+ }
+
+ playerStatsLoaded(stats){
+ // console.log(JSON.stringify(stats, undefined, 2))
+ this.userStats[stats.uuid] = stats
}
onDisable(){
+ this.userStats = undefined
}
}