aboutsummaryrefslogtreecommitdiff
path: root/features
diff options
context:
space:
mode:
Diffstat (limited to 'features')
-rw-r--r--features/cosmetics/cosmetic.js1
-rw-r--r--features/cosmetics/cosmetic/dragon/dragonWings.js3
-rw-r--r--features/cosmetics/index.js64
-rw-r--r--features/lockedFeatures/index.js26
-rw-r--r--features/settings/settingThings/FakeRequireToggle.js27
-rw-r--r--features/settings/settingThings/settingBase.js12
6 files changed, 93 insertions, 40 deletions
diff --git a/features/cosmetics/cosmetic.js b/features/cosmetics/cosmetic.js
index 997b219..878e425 100644
--- a/features/cosmetics/cosmetic.js
+++ b/features/cosmetics/cosmetic.js
@@ -1,3 +1,4 @@
+
class Cosmetic{
constructor(player, parent, id){
diff --git a/features/cosmetics/cosmetic/dragon/dragonWings.js b/features/cosmetics/cosmetic/dragon/dragonWings.js
index 08a45cc..ee6b055 100644
--- a/features/cosmetics/cosmetic/dragon/dragonWings.js
+++ b/features/cosmetics/cosmetic/dragon/dragonWings.js
@@ -1,10 +1,11 @@
import { f, m, m } from "../../../../../mappings/mappings.js";
+import ToggleSetting from "../../../settings/settingThings/toggle.js";
import Cosmetic from "../../cosmetic.js";
const ModelDragon = Java.type("net.minecraft.client.model.ModelDragon")
if(!GlStateManager){
- var GL11 = Java.type("org.lwjgl.opengl.GL11"); //using var so it goes to global scope
+ // var GL11 = Java.type("org.lwjgl.opengl.GL11"); //using var so it goes to global scope
var GlStateManager = Java.type("net.minecraft.client.renderer.GlStateManager");
}
const Essential = Java.type("gg.essential.Essential")
diff --git a/features/cosmetics/index.js b/features/cosmetics/index.js
index 1eb73d7..f442c45 100644
--- a/features/cosmetics/index.js
+++ b/features/cosmetics/index.js
@@ -4,6 +4,7 @@ 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";
class Cosmetics extends Feature {
constructor() {
@@ -29,6 +30,13 @@ class Cosmetics extends Feature {
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.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.loadCosmeticsData()
this.worldLoad()
@@ -44,6 +52,20 @@ class Cosmetics extends Feature {
})
this.registerEvent("renderEntity", this.renderEntity)
this.loadedRenderEntity = false
+
+ if(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){
@@ -54,8 +76,8 @@ class Cosmetics extends Feature {
renderEntity(entity, pos, ticks, event){
if(ticks !== 1) return
- if(this.uuidToCosmeticDirect[entity.getUUID().toString()]){
- Object.values(this.uuidToCosmeticDirect[entity.getUUID().toString()]).forEach(cosmetic => {
+ if(this.uuidToCosmeticDirect[entity.getUUID().toString().replace(/-/g,"")]){
+ Object.values(this.uuidToCosmeticDirect[entity.getUUID().toString().replace(/-/g,"")]).forEach(cosmetic => {
cosmetic.onRenderEntity(ticks, true)
})
}
@@ -76,14 +98,26 @@ class Cosmetics extends Feature {
setUserCosmeticsInformation(uuid, cosmetics){
if(!this.enabled) return
-
- this.filterUnloadedCosmetics()
+ uuid = uuid.replace(/-/g,"")
if(!cosmetics){
delete this.cosmeticsData[uuid]
return
}
this.cosmeticsData[uuid] = cosmetics
+
+ 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]
+
this.scanForNewCosmetics()
}
@@ -93,7 +127,7 @@ class Cosmetics extends Feature {
scanForNewCosmetics(){
this.loadCosmeticsForPlayer(Player)
World.getAllPlayers().forEach(p=>{
- if(p.getUUID().toString() === Player.getUUID().toString()) return
+ if(p.getUUID().toString().replace(/-/g,"") === Player.getUUID().toString().replace(/-/g,"")) return
this.loadCosmeticsForPlayer(p)
})
}
@@ -109,8 +143,8 @@ class Cosmetics extends Feature {
this.loadedCosmetics.push(cosmetic)
this.uuidToCosmetic[cosmeticName][player.getUUID().toString().replace(/-/g,"")] = cosmetic
- if(!this.uuidToCosmeticDirect[player.getUUID.toString()]) this.uuidToCosmeticDirect[player.getUUID().toString()] = {}
- this.uuidToCosmeticDirect[player.getUUID().toString()][cosmeticName] = cosmetic
+ if(!this.uuidToCosmeticDirect[player.getUUID.toString()]) this.uuidToCosmeticDirect[player.getUUID().toString().replace(/-/g,"")] = {}
+ this.uuidToCosmeticDirect[player.getUUID().toString().replace(/-/g,"")][cosmeticName] = cosmetic
}
})
}
@@ -125,18 +159,18 @@ class Cosmetics extends Feature {
}
playerJoined(player){
- if(player.getUUID().toString() === Player.getUUID().toString()) return
+ if(player.getUUID().toString().replace(/-/g,"") === Player.getUUID().toString().replace(/-/g,"")) return
this.loadCosmeticsForPlayer(player)
}
playerLeft(playerName){
- this.loadedCosmetics.filter(cosmetic=>{
- if(cosmetic.player.getUUID().toString() === Player.getUUID().toString()) return true
+ 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()] = undefined
+ this.uuidToCosmeticDirect[cosmetic.player.getUUID().toString().replace(/-/g,"")] = undefined
return false
}
return true
@@ -157,11 +191,11 @@ class Cosmetics extends Feature {
filterUnloadedCosmetics(tick=false){
this.loadedCosmetics = this.loadedCosmetics.filter(cosmetic => {
if(tick) cosmetic.onTick()
- if(cosmetic.player.getUUID().toString() === Player.getUUID().toString()) return true
+ 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()] = undefined
+ this.uuidToCosmeticDirect[cosmetic.player.getUUID().toString().replace(/-/g,"")] = undefined
return false
}
return true
@@ -199,6 +233,8 @@ class Cosmetics extends Feature {
}
}
+let instance = new Cosmetics()
+
module.exports = {
- class: new Cosmetics()
+ class: instance
} \ No newline at end of file
diff --git a/features/lockedFeatures/index.js b/features/lockedFeatures/index.js
index 04ac729..0226859 100644
--- a/features/lockedFeatures/index.js
+++ b/features/lockedFeatures/index.js
@@ -6,6 +6,7 @@ import SoopyV2Server from "../../socketConnection"
import HudTextElement from "../hud/HudTextElement";
import LocationSetting from "../settings/settingThings/location";
import { numberWithCommas, timeNumber2, timeSince } from "../../utils/numberUtils";
+import FakeRequireToggle from "../settings/settingThings/FakeRequireToggle";
class LockedFeatures extends Feature {
constructor() {
@@ -102,28 +103,3 @@ class LockedFeatures extends Feature {
module.exports = {
class: new LockedFeatures()
}
-
-class FakeRequireToggle{
- constructor(val){
- this.val = val
-
- this.thisToggleEvents = []
-
- this.toggleObject = {
- addEvent: (event)=>{
- this.thisToggleEvents.push(event)
- }
- }
- }
-
- set(newVal){
- if(this.val === newVal) return
- this.val = newVal
-
- this.thisToggleEvents.forEach(e=>e._trigger(this, [this.val]))
- }
-
- getValue(){
- return this.val
- }
-} \ No newline at end of file
diff --git a/features/settings/settingThings/FakeRequireToggle.js b/features/settings/settingThings/FakeRequireToggle.js
new file mode 100644
index 0000000..41932f3
--- /dev/null
+++ b/features/settings/settingThings/FakeRequireToggle.js
@@ -0,0 +1,27 @@
+
+class FakeRequireToggle{
+ constructor(val){
+ this.val = val
+
+ this.thisToggleEvents = []
+
+ this.toggleObject = {
+ addEvent: (event)=>{
+ this.thisToggleEvents.push(event)
+ }
+ }
+ }
+
+ set(newVal){
+ if(this.val === newVal) return
+ this.val = newVal
+
+ this.thisToggleEvents.forEach(e=>e._trigger(this, [this.val]))
+ }
+
+ getValue(){
+ return this.val
+ }
+}
+
+export default FakeRequireToggle \ No newline at end of file
diff --git a/features/settings/settingThings/settingBase.js b/features/settings/settingThings/settingBase.js
index a0d3bc7..02cfd9f 100644
--- a/features/settings/settingThings/settingBase.js
+++ b/features/settings/settingThings/settingBase.js
@@ -40,6 +40,10 @@ class SettingBase {
this.temp_val = temp_val_temp
this.requiresO = undefined
+
+ this.onchangethings = []
+
+ this.initTime = Date.now()
}
getValue(){
@@ -47,6 +51,7 @@ class SettingBase {
}
setValue(val){
+ if(this.val === val) return
this.val = val;
if(!this.requiresO || this.requiresO.getValue()){
@@ -63,6 +68,8 @@ class SettingBase {
this.module.FeatureManager.featureSettingsDataLastUpdated = true
}
+
+ if(this.onchangethings && Date.now()-this.initTime > 1000) this.onchangethings.forEach(([fun, context])=>{fun.call(context)})
}
getName(){
@@ -102,6 +109,11 @@ class SettingBase {
delete(){
settingsCommunicator.removeSetting(this.module, this.settingId)
}
+
+ onchange(context, fun){
+ this.onchangethings.push([fun, context])
+ return this
+ }
}
export default SettingBase \ No newline at end of file