aboutsummaryrefslogtreecommitdiff
path: root/features
diff options
context:
space:
mode:
authorSoopyboo32 <49228220+Soopyboo32@users.noreply.github.com>2022-05-29 12:06:18 +0800
committerSoopyboo32 <49228220+Soopyboo32@users.noreply.github.com>2022-05-29 12:06:18 +0800
commit9ec9aa2d495df5a6c48b8edbd5fe31052d20b37b (patch)
treeaa20f5314241d517b0a50b123926077685fb700e /features
parenta6593709b0e1e99e241b6c163fe66623685b6efc (diff)
parent51cdd4ca4ea64e1a9a67b99c274693a54f7f535d (diff)
downloadSoopyV2-9ec9aa2d495df5a6c48b8edbd5fe31052d20b37b.tar.gz
SoopyV2-9ec9aa2d495df5a6c48b8edbd5fe31052d20b37b.tar.bz2
SoopyV2-9ec9aa2d495df5a6c48b8edbd5fe31052d20b37b.zip
Merge branch 'master' of https://github.com/Soopyboo32/SoopyV2
Diffstat (limited to 'features')
-rw-r--r--features/agentlaiThings/hiddenRequirement.js8
-rw-r--r--features/agentlaiThings/index.js195
-rw-r--r--features/agentlaiThings/metadata.json8
-rw-r--r--features/bestiary/index.js240
-rw-r--r--features/betterGuis/index.js2
-rw-r--r--features/cosmetics/cosmetic/dragon/dragonWings.js360
-rw-r--r--features/cosmetics/textures/dragon/classic.pngbin11845 -> 0 bytes
-rw-r--r--features/cosmetics/textures/dragon/purple.pngbin19740 -> 0 bytes
-rw-r--r--features/dataLoader/index.js20
-rw-r--r--features/dungeonMap/index.js5
-rw-r--r--features/dungeonSolvers/index.js64
-rw-r--r--features/events/index.js2
-rw-r--r--features/eventsGUI/index.js221
-rw-r--r--features/globalSettings/index.js21
-rw-r--r--features/hud/index.js25
-rw-r--r--features/mining/index.js92
-rw-r--r--features/nether/index.js10
-rw-r--r--features/soopyGui/GuiPage.js8
-rw-r--r--features/soopyGui/index.js92
19 files changed, 893 insertions, 480 deletions
diff --git a/features/agentlaiThings/hiddenRequirement.js b/features/agentlaiThings/hiddenRequirement.js
deleted file mode 100644
index effd23b..0000000
--- a/features/agentlaiThings/hiddenRequirement.js
+++ /dev/null
@@ -1,8 +0,0 @@
-let allowedUUIDS = [
- "f2bcfe6aa54c4eb9b37156b4f1d20beb",
- "dc8c39647b294e03ae9ed13ebd65dd29"
-]
-
-module.exports = {hidden: function(featureManager){
- return !allowedUUIDS.includes(Player.getUUID().toString().replace(/-/g, ""))
-}} \ No newline at end of file
diff --git a/features/agentlaiThings/index.js b/features/agentlaiThings/index.js
deleted file mode 100644
index 1654be4..0000000
--- a/features/agentlaiThings/index.js
+++ /dev/null
@@ -1,195 +0,0 @@
-/// <reference types="../../../CTAutocomplete" />
-/// <reference lib="es2015" />
-import { SoopyGui, SoopyRenderEvent } from "../../../guimanager";
-import SoopyBoxElement from "../../../guimanager/GuiElement/SoopyBoxElement";
-import SoopyGuiElement from "../../../guimanager/GuiElement/SoopyGuiElement";
-import renderLibs from "../../../guimanager/renderLibs";
-import Feature from "../../featureClass/class";
-import ToggleSetting from "../settings/settingThings/toggle";
-
-class AgentThings extends Feature {
- constructor() {
- super()
- }
-
- onEnable(){
- return;
- this.initVariables()
-
- this.nearPlayerData = []
- while(this.nearPlayerData.length < 100){this.nearPlayerData.push({})}
-
- this.recordNearestPlayers = new ToggleSetting("Record nearby players", "You can then view this data with /nearplayers", false, "record_near_players", this)
-
- this.registerStep(false, 1, this.step)
-
- this.nearPlayersGui = new SoopyGui().setOpenCommand("nearplayers")
-
- this.nearPlayersGuiBox = new SoopyBoxElement().setLocation(0.25, 0.25, 0.5, 0.5)
- this.nearPlayersGui.element.addChild(this.nearPlayersGuiBox)
-
- this.nearPlayersRenderElement = new SoopyGuiElement()
- this.nearPlayersGuiBox.addChild(this.nearPlayersRenderElement)
-
-
- let selected = undefined
- let selectedDist = undefined
- let lastXY = 0
- this.nearPlayersRenderElement.addEvent(new SoopyRenderEvent().setHandler((mouseX, mouseY)=>{
- let moved = lastXY !== mouseX+mouseY
- lastXY = mouseX+mouseY
-
- let x = this.nearPlayersRenderElement.location.getXExact()
- let y = this.nearPlayersRenderElement.location.getYExact()
- let width = this.nearPlayersRenderElement.location.getWidthExact()
- let height = this.nearPlayersRenderElement.location.getHeightExact()
-
- x+=width*0.125
- y+=height*0.125
- width*=0.75
- height*=0.75
-
- Renderer.drawLine(Renderer.color(0, 0, 0), x, y+height, x+width, y+height, 2)//bottom axis line
- Renderer.drawLine(Renderer.color(0, 0, 0), x, y, x, y+height, 2)//left axis line
-
- renderLibs.drawStringCentered("&0100s ago", x, y+height+6, Renderer.screen.getWidth()/1000)
- renderLibs.drawStringCentered("&050s ago", x+width/2, y+height+6, Renderer.screen.getWidth()/1000)
- renderLibs.drawStringCentered("&0Now", x+width, y+height+6, Renderer.screen.getWidth()/1000) //bottom axis markers
-
-
- renderLibs.drawStringCenteredVertically("&025m away", x+3-Renderer.getStringWidth("&025m away")*Renderer.screen.getWidth()/1000, y, Renderer.screen.getWidth()/1000)
- renderLibs.drawStringCenteredVertically("&020m away", x+3-Renderer.getStringWidth("&020m away")*Renderer.screen.getWidth()/1000, y+height/5*1, Renderer.screen.getWidth()/1000)
- renderLibs.drawStringCenteredVertically("&010m away", x+3-Renderer.getStringWidth("&010m away")*Renderer.screen.getWidth()/1000, y+height/5*3, Renderer.screen.getWidth()/1000)
- renderLibs.drawStringCenteredVertically("&00m away", x+3-Renderer.getStringWidth("&00m away")*Renderer.screen.getWidth()/1000, y+height-6, Renderer.screen.getWidth()/1000)
-
- if(moved){
- selected = undefined
- selectedDist = undefined
- }
- let lastUuids = []
- this.nearPlayerData.forEach((data, i)=>{
- let newLastUuids = []
- Object.keys(data).forEach(uuid=>{
- newLastUuids.push(uuid)
- lastUuids = lastUuids.filter(a=>a!==uuid)
-
- let dist = data[uuid].distance
- let oldDist = this.nearPlayerData[i-1]?.[uuid]?.distance || 25
-
- let thisX = x+(i)/100*width
- let thisY = y+height-(dist/25)*height
-
- if(moved && (thisX-mouseX)**2 + (thisY-mouseY)**2 < 3){
- selected = uuid
- selectedDist = dist
- }
-
- if(i !== 0){
- Renderer.drawLine(Renderer.color(0, 0, 0), x+(i-1)/100*width, y+height-(oldDist/25)*height, thisX, thisY, 1)
- }
-
- Renderer.drawRect(Renderer.color(0, 0, 0), thisX-1, thisY-1, 3, 3)
- })
-
- lastUuids.forEach(uuid=>{
- let dist = 25
- let oldDist = this.nearPlayerData[i-1]?.[uuid]?.distance || 25
-
- let thisX = x+(i)/100*width
- let thisY = y+height-(dist/25)*height
-
- if(i !== 0){
- Renderer.drawLine(Renderer.color(0, 0, 0), x+(i-1)/100*width, y+height-(oldDist/25)*height, thisX, thisY, 1)
- }
- })
-
- lastUuids = newLastUuids
- })
-
- if(selected){
- width = this.nearPlayersRenderElement.location.getWidthExact()
- height = this.nearPlayersRenderElement.location.getHeightExact()
-
- width*=0.75
- height*=0.75
-
- renderLibs.scizzorFast(0,0,Renderer.screen.getWidth(), Renderer.screen.getHeight())
- let selectedIgn = undefined
- let lastRenderedSelected = false
- this.nearPlayerData.forEach((data, i)=>{
- if(data[selected]){
- lastRenderedSelected = true
-
- selectedIgn = data[selected].name
-
- let dist = data[selected].distance
- let oldDist = this.nearPlayerData[i-1]?.[selected]?.distance || 25
-
- let thisX = x+(i)/100*width
- let thisY = y+height-(dist/25)*height
-
- if(i !== 0){
- Renderer.drawLine(Renderer.color(255, 0, 0), x+(i-1)/100*width, y+height-(oldDist/25)*height, thisX, thisY, 3)
- }
- }else{
- if(lastRenderedSelected){
- lastRenderedSelected = false
-
- let dist = 25
- let oldDist = this.nearPlayerData[i-1]?.[selected]?.distance || 25
-
- let thisX = x+(i)/100*width
- let thisY = y+height-(dist/25)*height
-
- if(i !== 0){
- Renderer.drawLine(Renderer.color(255, 0, 0), x+(i-1)/100*width, y+height-(oldDist/25)*height, thisX, thisY, 3)
- }
- }
- }
- })
-
- let width = Math.max(Renderer.getStringWidth(selectedIgn)*2, Renderer.getStringWidth("Distance: " + selectedDist.toFixed(1)))+8
- let height = 32
- renderLibs.drawBox([255, 255, 255], mouseX+10, mouseY-height/2, width,height, 3)
- renderLibs.drawString("&0" + selectedIgn, mouseX+14, mouseY-height/2+3, 2)
- renderLibs.drawString("&0Distance: &7" + selectedDist.toFixed(1) , mouseX+14, mouseY-height/2+21, 1)
- }
-
- }))
- }
-
- step(){
- if(!this.recordNearestPlayers.getValue()) return
-
- let thisSecondPlayerData = {}
- World.getAllPlayers().forEach(p=>{
- let distSq = (p.getX()-Player.getX())**2+(p.getY()-Player.getY())**2+(p.getZ()-Player.getZ())**2
-
- if(distSq < 25*25 && distSq !== 0){
- thisSecondPlayerData[p.getUUID().toString()] = {name: p.getName(), distance: Math.sqrt(distSq)}
- }
- })
-
- this.nearPlayerData.push(thisSecondPlayerData)
-
- if(this.nearPlayerData.length > 100) this.nearPlayerData.shift()
- }
-
- initVariables(){
- this.recordNearestPlayers = undefined
- this.nearPlayerData = undefined
- this.nearPlayersGui = undefined
- this.nearPlayersGuiBox = undefined
- this.nearPlayersRenderElement = undefined
- }
-
- onDisable(){
- this.nearPlayersGui.delete()
-
- this.initVariables()
- }
-}
-
-module.exports = {
- class: new AgentThings()
-} \ No newline at end of file
diff --git a/features/agentlaiThings/metadata.json b/features/agentlaiThings/metadata.json
deleted file mode 100644
index e44e8fa..0000000
--- a/features/agentlaiThings/metadata.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "name": "Agentlai Settings",
- "description": "Settings only avalible to agentlai",
- "isHidden": "hiddenRequirement.js",
- "isTogglable": true,
- "defaultEnabled": false,
- "sortA": 0
-} \ No newline at end of file
diff --git a/features/bestiary/index.js b/features/bestiary/index.js
index 3888ffb..00d5752 100644
--- a/features/bestiary/index.js
+++ b/features/bestiary/index.js
@@ -1,37 +1,257 @@
/// <reference types="../../../CTAutocomplete" />
/// <reference lib="es2015" />
-import { m } from "../../../mappings/mappings";
import Feature from "../../featureClass/class";
-import { drawCoolWaypoint } from "../../utils/renderUtils";
+import { numberWithCommas } from "../../utils/numberUtils";
+import HudTextElement from "../hud/HudTextElement";
+import DropdownSetting from "../settings/settingThings/dropdownSetting";
+import LocationSetting from "../settings/settingThings/location";
import SettingBase from "../settings/settingThings/settingBase";
import ToggleSetting from "../settings/settingThings/toggle";
+let dontUseApi = new Set()
+dontUseApi.add("arachne")
+dontUseApi.add("barbarian_duke_x")
+dontUseApi.add("bladesoul")
+dontUseApi.add("mage_outlaw")
+dontUseApi.add("ashfang")
+dontUseApi.add("magma_cube_boss")
+dontUseApi.add("headless_horseman")
+dontUseApi.add("dragon")
-class Waypoints extends Feature {
+
+class Bestiary extends Feature {
constructor() {
super()
}
onEnable() {
- this.initVariables()
-
this.bestiaryData = JSON.parse(FileLib.read("soopyAddonsData", "bestiaryData.json") || "{}")
this.bestiaryChanged = false
+
+ this.bestiaryApiTracking = {}
+
+ this.registerStep(true, 5, this.scanInv)
+ this.registerStep(false, 5, this.saveData)
+
+
+ this.bestiaryStatTypes = {
+ "barbarian_duke_x": "Barbarian Duke X"
+ }
+ Object.keys(this.bestiaryData).forEach(k => {
+ if (this.bestiaryData[k].guiName) this.bestiaryStatTypes[k] = this.bestiaryData[k].guiName
+ })
+
+ new SettingBase("NOTE: u need to open ur bestiary menu", "before this will work", true, "info_bestiary", this)
+ this.hudStat = []
+ for (let i = 0; i < 10; i++) {
+ this.hudStat[i] = {}
+ this.hudStat[i].enabled = new ToggleSetting("Bestiary Slot #" + (i + 1), "Allows you to render a custom besiary kills on your hud", false, "bestiary_stat_" + i, this)
+ this.hudStat[i].type = new DropdownSetting("Bestiary Slot #" + (i + 1) + " Type", "The bestiary type", "barbarian_duke_x", "bestiary_stat_" + i + "_type", this, this.bestiaryStatTypes)
+ this.hudStat[i].location = new LocationSetting("Bestiary Slot #" + (i + 1) + " Location", "Allows you to edit the location of the bestiary stat", "bestiary_stat_" + i + "_location", this, [10, 50 + i * 10, 1, 1]).editTempText("&6Bestiary Stat Stat&7> &f12,345")
+ this.hudStat[i].textElement = new HudTextElement().setToggleSetting(this.hudStat[i].enabled).setLocationSetting(this.hudStat[i].location).setText("&6Bestiary Stat&7> &fLoading...")
+ this.hudStat[i].onlySb = new ToggleSetting("Bestiary Slot #" + (i + 1) + " Only SB", "Only render this stat when you are in skyblock", true, "bestiary_stat_" + i + "_only_sb", this).requires(this.hudStat[i].enabled)
+
+ this.hudStat[i].location.requires(this.hudStat[i].enabled)
+ this.hudStat[i].type.requires(this.hudStat[i].enabled)
+ if (this.hudStat[i - 1]) {
+ this.hudStat[i].enabled.requires(this.hudStat[i - 1].enabled)
+ }
+ }
+
+ this.registerStep(false, 5, this.updateHudElements)
+ this.registerEvent("renderOverlay", this.renderHUD)
+ // TODO
+ // dragon
+ // headless_horseman
+ let lastThing = undefined
+ let lastThingTime = 0
+ this.registerChat("${chat}", (chat) => {
+ let thing
+ switch (chat.trim()) {
+ case "MAGE OUTLAW DOWN!":
+ thing = "mage_outlaw"
+ break;
+ case "BARBARIAN DUKE X DOWN!":
+ thing = "barbarian_duke_x"
+ break;
+ case "BLADESOUL DOWN!":
+ thing = "bladesoul"
+ break;
+ case "ASHFANG DOWN!":
+ thing = "ashfang"
+ break;
+ // case "MAGMA BOSS DOWN!":
+ // thing = "magma_cube_boss"
+ // break;
+ case "ARACHNE DOWN!":
+ lastThing = "arachne"
+ lastThingTime = Date.now()
+ break;
+ case "HORSEMAN DOWN!":
+ lastThing = "arachne"
+ lastThingTime = Date.now()
+ break;
+ default:
+ break;
+ }
+ if (chat.includes("DRAGON")) {
+ lastThing = "dragon"
+ lastThingTime = Date.now()
+ }
+
+ if (chat.trim().startsWith("Your Damage: ")) {
+ let dmg = parseInt(chat.trim().split("Your Damage: ")[1].split(" ")[0])
+ if (dmg > 0 && Date.now() - lastThingTime < 1000) {
+ thing = lastThing
+ lastThing = ""
+ lastThingTime = 0
+ }
+ }
+
+ if (thing) {
+ this.bestiaryData[thing].guessCount++
+ this.bestiaryChanged = true
+ }
+ })
+ this.registerSoopy("apiLoad", this.apiLoad);
+
+ if (this.FeatureManager.features["dataLoader"] && this.FeatureManager.features["dataLoader"].class.lastApiData.skyblock_raw) {
+ this.apiLoad(this.FeatureManager.features["dataLoader"].class.lastApiData.skyblock_raw, "skyblock", false, true);
+ }
+ }
+
+ renderHUD() {
+ for (let stat of this.hudStat) {
+ stat.textElement.render()
+ }
}
- initVariables() {
+ getBestiaryCount(id) {
+ if (!this.bestiaryData[id]) return "???"
+ let count = this.bestiaryData[id].count
+
+ if (!dontUseApi.has(id)) {
+ let currApiData = this.bestiaryApiTracking[id]
+
+ count += currApiData - this.bestiaryData[id].apiCount
+ }
+ count += this.bestiaryData[id].guessCount
+
+ return count
}
- onDisable() {
+ updateHudElements() {
+ if (!this.FeatureManager.features["dataLoader"]) return
+
+ let insb = this.FeatureManager.features["dataLoader"].class.isInSkyblock
+
+ this.hudStat.forEach(stat => {
+ if (stat.enabled.getValue()) {
+ if (!insb && stat.onlySb.getValue()) {
+ stat.textElement.setText("")
+ return
+ }
+
+ let type = stat.type.getValue()
+
+ stat.textElement.setText(`&6${this.bestiaryData[type]?.guiName}&7> &f${numberWithCommas(this.getBestiaryCount(type))}`)
+ }
+ })
+ }
+
+ apiLoad(data, dataType, isSoopyServer, isLatest) {
+ if (isSoopyServer || !isLatest) return;
+ if (dataType !== "skyblock") return;
+
+ let currentProfile = {}
+ let currentProfileTime = 0
+
+ data.profiles.forEach(p => {
+ if (p.members[Player.getUUID().toString().replace(/-/g, "")].last_save > currentProfileTime) {
+ currentProfileTime = p.members[Player.getUUID().toString().replace(/-/g, "")].last_save
+ currentProfile = p.members[Player.getUUID().toString().replace(/-/g, "")]
+ }
+ })
+
+ Object.keys(currentProfile.stats).forEach(key => {
+ if (key.startsWith("kills_")) {
+ this.bestiaryApiTracking[key.replace("kills_", "")] = currentProfile.stats[key]
+ }
+ })
+ }
+
+ scanInv() {
+ if (!Player.getContainer()) return
+ if (!Player.getContainer().getName().startsWith("Bestiary ➜ ")) return
+ let tempChanged = false
+ let seen = new Set()
+
+ for (let item of Player.getContainer().getItems()) {
+ if (!item) continue
+ let name = ChatLib.removeFormatting(item.getName()).split(" ")
+ name.pop()
+ let apiName = name.join("_").toLowerCase()
+ if (seen.has(apiName)) continue
+ seen.add(apiName)
+
+ if (apiName === "skeletor_prime") continue
+
+ if (this.bestiaryApiTracking[apiName] || dontUseApi.has(apiName)) {
+
+ let count = 0
+
+ for (let l of item.getLore()) {
+ l = ChatLib.removeFormatting(l)
+
+ if (l.startsWith("Kills: ")) {
+ count = parseInt(l.split("Kills: ")[1].replace(/,/g, ""))
+ break;
+ }
+ }
+
+ let needsChange = !this.bestiaryData[apiName] || this.bestiaryData[apiName].guiName !== name.join(" ") || this.bestiaryData[apiName].count !== count || this.bestiaryData[apiName].apiCount !== (this.bestiaryApiTracking[apiName] || 0) || this.bestiaryData[apiName].guessCount !== 0
+ if (needsChange) {
+ this.bestiaryData[apiName] = {
+ guiName: name.join(" "),
+ count,
+ apiCount: this.bestiaryApiTracking[apiName] || 0,
+ guessCount: 0
+ }
+ this.bestiaryChanged = true
+
+ tempChanged = true
+
+ }
+ }
+ }
+
+ if (tempChanged) {
+ this.bestiaryStatTypes = {}
+ Object.keys(this.bestiaryData).forEach(k => {
+ if (this.bestiaryData[k]?.guiName) this.bestiaryStatTypes[k] = this.bestiaryData[k].guiName
+ })
+
+ this.hudStat.forEach(s => {
+ s.type.dropdownObject.setOptions(this.bestiaryStatTypes)
+ })
+
+ this.updateHudElements()
+ }
+ start = Date.now()
+ }
+
+ saveData() {
if (this.bestiaryChanged) {
FileLib.write("soopyAddonsData", "bestiaryData.json", JSON.stringify(this.bestiaryData))
}
+ }
- this.initVariables()
+ onDisable() {
+ this.saveData()
}
-}
+}
module.exports = {
- class: new Waypoints()
+ class: new Bestiary()
}
diff --git a/features/betterGuis/index.js b/features/betterGuis/index.js
index cb0b5a0..2d188bf 100644
--- a/features/betterGuis/index.js
+++ b/features/betterGuis/index.js
@@ -24,7 +24,7 @@ class BetterGuis extends Feature {
this.reliableSbMenuClicks = { getValue: () => false }//removed because hypixel fixed, code kept incase hypixel adds back bug later //new ToggleSetting("Make SBMENU clicks reliable", "This will delay clicks on sbmenu to time them so they dont get canceled", true, "sbmenu_time", this)
this.museumGuiEnabled = new ToggleSetting("Custom Museum GUI", "Custom gui for the Museum", true, "custom_museum_enabled", this)
- this.dungeonReadyGuiEnabled = new ToggleSetting("Custom Dungeon Ready GUI (UNFINISHED)", "Custom gui for the dungeon ready up menu", false, "custom_dungeon_ready_enabled", this)
+ this.dungeonReadyGuiEnabled = new ToggleSetting("Custom Dungeon Ready GUI", "Custom gui for the dungeon ready up menu", false, "custom_dungeon_ready_enabled", this)
this.chestSearchBar = new ToggleSetting("Inventory Search Bar", "u can use '&' to make it filter buy stuff that contains multiple things", false, "inv_search", this)
diff --git a/features/cosmetics/cosmetic/dragon/dragonWings.js b/features/cosmetics/cosmetic/dragon/dragonWings.js
index 0d7341f..f050141 100644
--- a/features/cosmetics/cosmetic/dragon/dragonWings.js
+++ b/features/cosmetics/cosmetic/dragon/dragonWings.js
@@ -1,10 +1,11 @@
+import renderLibs from "../../../../../guimanager/renderLibs.js";
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){
+if (!GlStateManager) {
// 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");
}
@@ -13,10 +14,15 @@ const EssentialCosmeticSlot = Java.type("gg.essential.cosmetics.CosmeticSlot")
const FACING = Java.type("net.minecraft.block.BlockDirectional").field_176387_N
let dragon = new ModelDragon(0) //too lazy to make my own model so i just yoink it from modelDragon lmfao
-let textures = {//TODO: dynamicly load textures from server
- classic: new Image(javax.imageio.ImageIO.read(new java.io.File("./config/ChatTriggers/modules/SoopyV2/features/cosmetics/textures/dragon/classic.png"))),
- purple: new Image(javax.imageio.ImageIO.read(new java.io.File("./config/ChatTriggers/modules/SoopyV2/features/cosmetics/textures/dragon/purple.png")))
+let textures = new Map()
+let loadingTextures = new Set()
+function loadTexture(id) {
+ new Thread(() => {
+ loadingTextures.add(id)
+ textures.set(id, renderLibs.getImage("http://soopymc.my.to/api/soopyv2/textures/cosmetic/dragon/" + id + "/img.png", true))
+ }).start()
}
+loadTexture("classic")
let wing = getField(dragon, f.wing)
let wingTip = getField(dragon, f.wingTip)
@@ -24,132 +30,136 @@ class DragonWings extends Cosmetic {
constructor(player, parent) {
super(player, parent, "dragon_wings");
- this.animOffset = Math.random()*20*Math.PI
+ this.animOffset = Math.random() * 20 * Math.PI
this.lastRender = Date.now()
this.lastFlapSound = this.animOffset
this.i = 0
this.flying = false
+
+ if (!textures.has(this.settings.texture) && !loadingTextures.has(this.settings.texture)) {
+ loadTexture(this.settings.texture)
+ }
}
- onRenderEntity(ticks, isInGui){
-
- if(this.player.getPlayer()[m.isInvisibleToPlayer](Player.getPlayer()) || this.player.getPlayer()[m.isInvisible]()){
+ onRenderEntity(ticks, isInGui) {
+
+ if (this.player.getPlayer()[m.isInvisibleToPlayer](Player.getPlayer()) || this.player.getPlayer()[m.isInvisible]()) {
return
}
-
+ if (!textures.has("classic")) return
let isSelfPlayer = this.player.getUUID().toString() === Player.getUUID().toString()
let isInInv = isSelfPlayer && ticks === 1
let thirdPersonView = Client.getMinecraft()[f.gameSettings.Minecraft][f.thirdPersonView]
- if(!this.parent.firstPersonVisable.getValue() && thirdPersonView === 0 && isSelfPlayer && !isInInv) return
+ if (!this.parent.firstPersonVisable.getValue() && thirdPersonView === 0 && isSelfPlayer && !isInInv) return
// return;
// wing.func_78785_a(1)
- let timeSince = (Date.now()-this.lastRender)/1000
+ let timeSince = (Date.now() - this.lastRender) / 1000
this.lastRender = Date.now()
- let rotation = isInInv?0:this.player.getPlayer()[f.prevRenderYawOffset]+(this.player.getPlayer()[f.renderYawOffset]-this.player.getPlayer()[f.prevRenderYawOffset])*ticks
+ let rotation = isInInv ? 0 : this.player.getPlayer()[f.prevRenderYawOffset] + (this.player.getPlayer()[f.renderYawOffset] - this.player.getPlayer()[f.prevRenderYawOffset]) * ticks
// rotation += entity.field_70761_aq+(entity.field_70761_aq-entity.field_70760_ar)*ticks
// console.log(rotation, entity.getEntity().field_70761_aq+(entity.getEntity().field_70761_aq-entity.getEntity().field_70760_ar)*ticks)
- let horisontalSpeed = Math.hypot((this.player.getPlayer()[f.posX.Entity]-this.player.getPlayer()[f.lastTickPosX]),(this.player.getPlayer()[f.posZ.Entity]-this.player.getPlayer()[f.lastTickPosZ]))
+ let horisontalSpeed = Math.hypot((this.player.getPlayer()[f.posX.Entity] - this.player.getPlayer()[f.lastTickPosX]), (this.player.getPlayer()[f.posZ.Entity] - this.player.getPlayer()[f.lastTickPosZ]))
+
+ let verticleSpeed = this.player.getPlayer()[f.posY.Entity] - this.player.getPlayer()[f.lastTickPosY]
- let verticleSpeed = this.player.getPlayer()[f.posY.Entity]-this.player.getPlayer()[f.lastTickPosY]
-
- this.animOffset += Math.min(1, horisontalSpeed)*10*timeSince+1*timeSince
+ this.animOffset += Math.min(1, horisontalSpeed) * 10 * timeSince + 1 * timeSince
let flapAmountMultiplyerNoEnd = 1
let flapAmountMultiplyer = 1
let wingEndOffsetThing = 0
-
- flapAmountMultiplyerNoEnd += Math.min(5, (horisontalSpeed*5))
+
+ flapAmountMultiplyerNoEnd += Math.min(5, (horisontalSpeed * 5))
let flapMainOffsetThing = 0
let wingBackAmount = 0
let shouldStandStillWingCurve = true
- if(this.player.getPlayer()[f.hurtResistantTime] > 17){ //damage tick
- this.animOffset += 25*timeSince
+ if (this.player.getPlayer()[f.hurtResistantTime] > 17) { //damage tick
+ this.animOffset += 25 * timeSince
}
// if((this.player === Player &&this.player.getPlayer().field_71075_bZ.field_75100_b) || (this.player !== Player && Math.abs(verticleSpeed)<0.2 && !this.player.getPlayer().field_70122_E)){//playerCapabilities.isFlying
- if(this.flying){ //flying
+ if (this.flying) { //flying
shouldStandStillWingCurve = false
- this.animOffset += 5*timeSince //flap in mid air
+ this.animOffset += 5 * timeSince //flap in mid air
flapAmountMultiplyer *= 1.75 //flap harder
- if(isSelfPlayer && thirdPersonView === 0){
- if(!this.parent.lessFirstPersonVisable.getValue()){
+ if (isSelfPlayer && thirdPersonView === 0) {
+ if (!this.parent.lessFirstPersonVisable.getValue()) {
flapAmountMultiplyerNoEnd += 0.4
flapMainOffsetThing = 0.3
}
- }else{
+ } else {
flapAmountMultiplyer *= 1.25
flapAmountMultiplyer *= 0.9
flapMainOffsetThing = 0.1
- wingEndOffsetThing+= -0.1
+ wingEndOffsetThing += -0.1
}
wingEndOffsetThing += -0.75
- if(verticleSpeed > 0){
- this.animOffset += verticleSpeed*25*timeSince //flap when flying upwards
+ if (verticleSpeed > 0) {
+ this.animOffset += verticleSpeed * 25 * timeSince //flap when flying upwards
}
- }else{
- if(this.lastFlapSound < this.animOffset-this.animOffset%(Math.PI*2)){
- this.lastFlapSound = this.animOffset-this.animOffset%(Math.PI*2)
+ } else {
+ if (this.lastFlapSound < this.animOffset - this.animOffset % (Math.PI * 2)) {
+ this.lastFlapSound = this.animOffset - this.animOffset % (Math.PI * 2)
}
}
- if(verticleSpeed < -0.5){
- wingBackAmount = Math.min(1, (verticleSpeed+0.5)*-1.5) //lift wings back further ur falling
+ if (verticleSpeed < -0.5) {
+ wingBackAmount = Math.min(1, (verticleSpeed + 0.5) * -1.5) //lift wings back further ur falling
- this.animOffset += (verticleSpeed+0.5)*-3*timeSince
+ this.animOffset += (verticleSpeed + 0.5) * -3 * timeSince
}
GlStateManager[m.pushMatrix](); // pushMatrix
Tessellator.colorize(this.settings.color.r, this.settings.color.g, this.settings.color.b);
- if(!isSelfPlayer){
+ if (!isSelfPlayer) {
Tessellator.translate(
- (this.player.getPlayer()[f.lastTickPosX] + (this.player.getPlayer()[f.posX.Entity]-this.player.getPlayer()[f.lastTickPosX]) * ticks) - (Player.getPlayer()[f.lastTickPosX] + (Player.getPlayer()[f.posX.Entity]-Player.getPlayer()[f.lastTickPosX]) * ticks),
- (this.player.getPlayer()[f.lastTickPosY] + (this.player.getPlayer()[f.posY.Entity]-this.player.getPlayer()[f.lastTickPosY]) * ticks) - (Player.getPlayer()[f.lastTickPosY] + (Player.getPlayer()[f.posY.Entity]-Player.getPlayer()[f.lastTickPosY]) * ticks),
- (this.player.getPlayer()[f.lastTickPosZ] + (this.player.getPlayer()[f.posZ.Entity]-this.player.getPlayer()[f.lastTickPosZ]) * ticks) - (Player.getPlayer()[f.lastTickPosZ] + (Player.getPlayer()[f.posZ.Entity]-Player.getPlayer()[f.lastTickPosZ]) * ticks))
+ (this.player.getPlayer()[f.lastTickPosX] + (this.player.getPlayer()[f.posX.Entity] - this.player.getPlayer()[f.lastTickPosX]) * ticks) - (Player.getPlayer()[f.lastTickPosX] + (Player.getPlayer()[f.posX.Entity] - Player.getPlayer()[f.lastTickPosX]) * ticks),
+ (this.player.getPlayer()[f.lastTickPosY] + (this.player.getPlayer()[f.posY.Entity] - this.player.getPlayer()[f.lastTickPosY]) * ticks) - (Player.getPlayer()[f.lastTickPosY] + (Player.getPlayer()[f.posY.Entity] - Player.getPlayer()[f.lastTickPosY]) * ticks),
+ (this.player.getPlayer()[f.lastTickPosZ] + (this.player.getPlayer()[f.posZ.Entity] - this.player.getPlayer()[f.lastTickPosZ]) * ticks) - (Player.getPlayer()[f.lastTickPosZ] + (Player.getPlayer()[f.posZ.Entity] - Player.getPlayer()[f.lastTickPosZ]) * ticks))
}
- if(textures[this.settings.texture || "classic"]){
- Tessellator.bindTexture(textures[this.settings.texture || "classic"]) //bind texture
- }else{
- Tessellator.bindTexture(textures.classic) //bind default texture (classic)
+ if (textures.get(this.settings.texture || "classic")) {
+ Tessellator.bindTexture(textures.get(this.settings.texture || "classic")) //bind texture
+ } else {
+ Tessellator.bindTexture(textures.get("classic")) //bind default texture (classic)
}
- if(this.player.getPlayer()[f.ridingEntity.Entity]){
- rotation = this.player.getPlayer()[f.rotationYawHead]+(this.player.getPlayer()[f.rotationYawHead]-this.player.getPlayer()[f.prevRotationYawHead])*ticks
+ if (this.player.getPlayer()[f.ridingEntity.Entity]) {
+ rotation = this.player.getPlayer()[f.rotationYawHead] + (this.player.getPlayer()[f.rotationYawHead] - this.player.getPlayer()[f.prevRotationYawHead]) * ticks
}
- if(!this.player.getPlayer()[m.isPlayerSleeping]()){ //dont rotate when in bed
- Tessellator.rotate((180-rotation),0,1,0)
-
- Tessellator.translate(0,1.2,0.1)
-
- if(this.player.getPlayer()[m.isSneaking.Entity]()){ //isSneaking
- Tessellator.translate(0, -0.125,0)
- Tessellator.rotate(-20, 1,0,0)
-
- Tessellator.translate(0, 0,0.1)
- if(isSelfPlayer && thirdPersonView === 0){}else{
- Tessellator.translate(0, -0.125,0)
+ if (!this.player.getPlayer()[m.isPlayerSleeping]()) { //dont rotate when in bed
+ Tessellator.rotate((180 - rotation), 0, 1, 0)
+
+ Tessellator.translate(0, 1.2, 0.1)
+
+ if (this.player.getPlayer()[m.isSneaking.Entity]()) { //isSneaking
+ Tessellator.translate(0, -0.125, 0)
+ Tessellator.rotate(-20, 1, 0, 0)
+
+ Tessellator.translate(0, 0, 0.1)
+ if (isSelfPlayer && thirdPersonView === 0) { } else {
+ Tessellator.translate(0, -0.125, 0)
}
}
-
- if(isSelfPlayer && !isInInv && thirdPersonView === 0){
+
+ if (isSelfPlayer && !isInInv && thirdPersonView === 0) {
//Make wings less scuffed when in first person looking down/up
- Tessellator.translate(0, 0.25, 0.003*(this.player.getPitch()))