diff options
Diffstat (limited to 'features/cosmetics/index.js')
-rw-r--r-- | features/cosmetics/index.js | 271 |
1 files changed, 0 insertions, 271 deletions
diff --git a/features/cosmetics/index.js b/features/cosmetics/index.js deleted file mode 100644 index 7c09bce..0000000 --- a/features/cosmetics/index.js +++ /dev/null @@ -1,271 +0,0 @@ -/// <reference types="../../../CTAutocomplete" /> -/// <reference lib="es2015" /> -import Feature from "../../featureClass/class"; -import DragonWings from "./cosmetic/dragon/dragonWings" -import Toggle from "../settings/settingThings/toggle" -import { f } from "../../../mappings/mappings"; -import FakeRequireToggle from "../settings/settingThings/FakeRequireToggle"; -import { fetch } from "../../utils/networkUtils"; - -class Cosmetics extends Feature { - constructor() { - super() - } - - onEnable() { - this.initVariables() - this.loadedCosmetics = [] - this.uuidToCosmetic = {} - this.uuidToCosmeticDirect = {} - - this.cosmeticsData = {} - - this.hiddenEssentialCosmetics = [] - - this.cosmeticsList = { - "dragon_wings": DragonWings - } - - this.playerHasACosmeticA = false - - this.firstPersonVisable = new Toggle("Cosmetics visable in first person", "", false, "cosmetics_first_person_visable", this) - this.lessFirstPersonVisable = new Toggle("Make cosmetics less visable in first person mode", "", true, "cosmetics_first_person_less_visable", this).requires(this.firstPersonVisable) - this.ownCosmeticAudio = new Toggle("Audio for own cosmetics", "", false, "cosmetics_own_audio", this) - - this.dragon_wings_enabled = new Toggle("Dragon Wings Toggle", "", true, "cosmetic_dragon_wings_toggle", this).requires(new FakeRequireToggle(false)).onchange(this, () => { - global.soopyV2Server.updateCosmeticsData({ - cosmetic: "dragon_wings", - type: this.dragon_wings_enabled.getValue() ? "enable" : "disable" - }) - }) - - this.postRenderEntityTrigger = undefined - - this.loadCosmeticsData() - - this.worldLoad() - - this.registerEvent("tick", this.tick) - this.registerEvent("renderWorld", this.renderWorld) - this.registerEvent("playerJoined", this.playerJoined) - this.registerEvent("playerLeft", this.playerLeft) - this.registerEvent("worldLoad", this.worldLoad) - this.registerStep(false, 2, this.step) - this.registerEvent('gameUnload', () => { - if (this.postRenderEntityTrigger) { - this.postRenderEntityTrigger.unregister() - this.postRenderEntityTrigger = undefined - } - }) - // this.registerStep(false, 60*10, ()=>{ - // new Thread(()=>{this.loadCosmeticsData.call(this)}).start() - // }) - // this.registerEvent("renderEntity", this.renderEntity) - - if (global.soopyV2Server && global.soopyV2Server.userCosmeticPermissions) { - this.updateUserCosmeticPermissionSettings() - } - } - - updateUserCosmeticPermissionSettings() { - if (!this.enabled) return - - if (global.soopyV2Server.userCosmeticPermissions === "*" || global.soopyV2Server.userCosmeticPermissions.dragon_wings) { - this.dragon_wings_enabled.requiresO.set(true) - } else { - this.dragon_wings_enabled.requiresO.set(false) - } - } - - renderWorld(ticks) { - for (let i = 0; i < this.loadedCosmetics.length; i++) { - this.loadedCosmetics[i].onRenderEntity(ticks, false) - } - } - - loadCosmeticsData() { - fetch("http://soopy.dev/api/soopyv2/cosmetics.json").json(data => { - this.cosmeticsData = data - this.playerHasACosmeticA = !!data[Player.getUUID().toString().replace(/-/g, "")] - if (this.playerHasACosmeticA && !this.postRenderEntityTrigger) { - // this.registerEvent("postRenderEntity", this.renderEntity) - this.postRenderEntityTrigger = register("postRenderEntity", (entity, pos, ticks, event) => { - if (ticks !== 1) return - if (this.uuidToCosmeticDirect[entity.getUUID().toString().replace(/-/g, "")]) { - let cosmetics = Object.values(this.uuidToCosmeticDirect[entity.getUUID().toString().replace(/-/g, "")]) - for (let cosmetic of cosmetics) { - cosmetic.onRenderEntity(ticks, true) - } - } - }) - } - - this.scanForNewCosmetics() - }) - } - - setUserCosmeticsInformation(uuid, cosmetics) { - if (!this.enabled) return - uuid = uuid.replace(/-/g, "") - - this.loadedCosmetics = this.loadedCosmetics.filter(cosmetic => { - if (cosmetic.player.getUUID().toString().replace(/-/g, "") === uuid) { - return false - } - return true - }) - Object.keys(this.uuidToCosmetic).forEach(cosmeticName => { - delete this.uuidToCosmetic[cosmeticName][uuid] - }) - - delete this.uuidToCosmeticDirect[uuid] - - if (!cosmetics) { - delete this.cosmeticsData[uuid] - return - } - this.cosmeticsData[uuid] = cosmetics - - this.scanForNewCosmetics() - } - - step() { - this.scanForNewCosmetics() - - this.filterUnloadedCosmetics(false) - - this.restoreEssentialCosmetics() - - this.loadedCosmetics.forEach(c => { - c.removeEssentialCosmetics() - }) - } - scanForNewCosmetics() { - this.loadCosmeticsForPlayer(Player) - World.getAllPlayers().forEach(p => { - if (p.getUUID().toString().replace(/-/g, "") === Player.getUUID().toString().replace(/-/g, "")) return - this.loadCosmeticsForPlayer(p) - }) - } - - loadCosmeticsForPlayer(player) { - Object.keys(this.cosmeticsList).forEach(cosmeticName => { - if (!this.uuidToCosmetic[cosmeticName]) this.uuidToCosmetic[cosmeticName] = {} - - if (this.uuidToCosmetic[cosmeticName][player.getUUID().toString().replace(/-/g, "")]) return - - if (this.shouldPlayerHaveCosmetic(player, cosmeticName)) { - let cosmetic = new (this.cosmeticsList[cosmeticName])(player, this) - this.loadedCosmetics.push(cosmetic) - this.uuidToCosmetic[cosmeticName][player.getUUID().toString().replace(/-/g, "")] = cosmetic - - if (!this.uuidToCosmeticDirect[player.getUUID.toString()]) this.uuidToCosmeticDirect[player.getUUID().toString().replace(/-/g, "")] = {} - this.uuidToCosmeticDirect[player.getUUID().toString().replace(/-/g, "")][cosmeticName] = cosmetic - } - }) - } - - worldLoad() { - this.loadedCosmetics = [] - this.uuidToCosmetic = {} - this.uuidToCosmeticDirect = {} - - this.loadCosmeticsForPlayer(Player) - this.scanForNewCosmetics() - } - - playerJoined(player) { - if (player.getUUID().toString().replace(/-/g, "") === Player.getUUID().toString().replace(/-/g, "")) return - - this.loadCosmeticsForPlayer(player) - } - - playerLeft(playerName) { - this.loadedCosmetics = this.loadedCosmetics.filter(cosmetic => { - if (cosmetic.player.getUUID().toString().replace(/-/g, "") === Player.getUUID().toString().replace(/-/g, "")) return true - if (cosmetic.player.getName() === playerName) { - this.uuidToCosmetic[cosmetic.id][cosmetic.player.getUUID().toString().replace(/-/g, "")] = undefined - - this.uuidToCosmeticDirect[cosmetic.player.getUUID().toString().replace(/-/g, "")] = undefined - return false - } - return true - }) - } - - shouldPlayerHaveCosmetic(player, cosmetic) { - if (this.getPlayerCosmeticSettings(player, cosmetic)) { - if (!this.getPlayerCosmeticSettings(player, cosmetic).enabled) return false - return true - } - return false - } - getPlayerCosmeticSettings(player, cosmetic) { - return this.cosmeticsData[player.getUUID().toString().replace(/-/g, "")]?.[cosmetic] - } - - filterUnloadedCosmetics(tick = false) { - this.loadedCosmetics = this.loadedCosmetics.filter(cosmetic => { - if (tick) cosmetic.onTick() - if (cosmetic.player.getUUID().toString().replace(/-/g, "") === Player.getUUID().toString().replace(/-/g, "")) return true - if (cosmetic.player.getPlayer()[f.isDead]) { //filter out players that are no longer loaded - this.uuidToCosmetic[cosmetic.id][cosmetic.player.getUUID().toString().replace(/-/g, "")] = undefined - - this.uuidToCosmeticDirect[cosmetic.player.getUUID().toString().replace(/-/g, "")] = undefined - return false - } - return true - }) - } - - tick() { - for (let cosmetic of this.loadedCosmetics) { - cosmetic.onTick() - } - } - - restoreEssentialCosmetics() { - this.hiddenEssentialCosmetics.forEach(cosmetic => { - setField(cosmetic, "showModel", true) - }) - this.hiddenEssentialCosmetics = [] - } - - initVariables() { - this.loadedCosmetics = undefined - this.uuidToCosmetic = undefined - this.uuidToCosmeticDirect = {} - this.playerHasACosmeticA = undefined - this.cosmeticsData = undefined - this.hiddenEssentialCosmetics = undefined - this.hiddenEssentialCosmetics = undefined - this.cosmeticsList = undefined - } - - onDisable() { - - if (this.postRenderEntityTrigger) { - this.postRenderEntityTrigger.unregister() - this.postRenderEntityTrigger = undefined - } - - this.restoreEssentialCosmetics() - - this.initVariables() - } -} - -let instance = new Cosmetics() - -module.exports = { - class: instance -} - -function setField(e, field, value) { - - let field2 = e.class.getDeclaredField(field); - - field2.setAccessible(true) - - return field2.set(e, value) -}
\ No newline at end of file |