diff options
Diffstat (limited to 'features/waypoints')
-rw-r--r-- | features/waypoints/index.js | 323 | ||||
-rw-r--r-- | features/waypoints/metadata.json | 8 | ||||
-rw-r--r-- | features/waypoints/minewaypoints_socket.js | 49 | ||||
-rw-r--r-- | features/waypoints/pathfind.js | 96 |
4 files changed, 0 insertions, 476 deletions
diff --git a/features/waypoints/index.js b/features/waypoints/index.js deleted file mode 100644 index 043b6b8..0000000 --- a/features/waypoints/index.js +++ /dev/null @@ -1,323 +0,0 @@ -/// <reference types="../../../CTAutocomplete" /> -/// <reference lib="es2015" /> -import { m } from "../../../mappings/mappings"; -import Feature from "../../featureClass/class"; -import { Waypoint } from "../../utils/renderJavaUtils"; -import { drawCoolWaypoint } from "../../utils/renderUtils"; -import { calculateDistanceQuick } from "../../utils/utils"; -import SettingBase from "../settings/settingThings/settingBase"; -import ToggleSetting from "../settings/settingThings/toggle"; -import minewaypoints_socket from "./minewaypoints_socket"; - - -let areas = { - "MinesofDivan": "Mines of Divan", - "LostPrecursorCity": "Lost Precursor City", - "JungleTemple": "Jungle Temple", - "GoblinQueensDen": "Goblin Queen's Den", - "Khazaddm": "Khazad-dûm", - "KingYolkar": "§6King Yolkar", - "BossCorleone": "§cBoss Corleone" -} - -class Waypoints extends Feature { - constructor() { - super() - } - - onEnable() { - this.initVariables() - - new SettingBase("/addwaypoint [name] [x] [y] [z] [r?] [g?] [b?] [area?]", "Allows you to create a waypoint", undefined, "create_waypoint", this) - new SettingBase("/delwaypoint [name]", "Allows you to delete a waypoint", undefined, "delete_waypoint", this) - new SettingBase("/clearwaypoints", "Allows you to clear all the waypoints", undefined, "clear_waypoints", this) - new SettingBase("/savewaypoints", "Copys the waypoints to your clipboard", undefined, "save_waypoints", this) - new SettingBase("/loadwaypoints", "Loads waypoints from your clipboard", undefined, "load_waypoints", this) - this.showInfoInChat = new ToggleSetting("Show info in chat", "Should chat msg be sent when theres waypoint added/cleared/removed", true, "waypoints_send_message", this); - - this.loadWaypointsFromSendCoords = new ToggleSetting("Load waypoints from /patcher sendcoords messages", "Will dissapear after 1min", true, "load_waypoints_from_sendcoords", this) - this.mineWaypointsSetting = new ToggleSetting("CH waypoints", "Will sync between users", true, "minwaypoints", this) - - try { - this.userWaypoints = JSON.parse(FileLib.read("soopyAddonsData", "soopyv2userwaypoints.json") || "{}") - } catch (e) { - ChatLib.chat(this.messagePrefix + "&cYour waypoints file corrupted and could not be read! Resetting to defaults.") - this.userWaypoints = {} - } - this.userWaypointsHash = {} - this.userWaypointsAll = [] - this.lastArea = undefined - this.userWaypointsArr = Object.values(this.userWaypoints) - this.updateWaypointsHashes() - this.waypointsChanged = false - - this.patcherWaypoints = [] - - this.registerCommand("addwaypoint", (name, x = Math.floor(Player.getX()).toString(), y = Math.floor(Player.getY()).toString(), z = Math.floor(Player.getZ()).toString(), r = "0", g = "255", b = "0", area = "") => { - let lx = 0 - let ly = 0 - let lz = 0 - - if (Player.lookingAt().getX) { - lx = Player.lookingAt().getX() - ly = Player.lookingAt().getY() - lz = Player.lookingAt().getZ() - - if (Player.lookingAt().getWidth) { - lx += -0.5 - lz += -0.5 - } - } - - this.userWaypoints[name] = { - x: parseFloat(x.replace("l", lx).replace('p', Math.floor(Player.getX()))), - y: parseFloat(y.replace("l", ly).replace('p', Math.floor(Player.getY()))), - z: parseFloat(z.replace("l", lz).replace('p', Math.floor(Player.getZ()))), - r: parseInt(r) / 255, - g: parseInt(g) / 255, - b: parseInt(b) / 255, - area: area === "a" ? this.FeatureManager.features["dataLoader"].class.area : area.replace(/_/g, " "), - options: { name: ChatLib.addColor(name.replace(/_/g, " ")) } - } - - this.userWaypointsArr = Object.values(this.userWaypoints) - this.waypointsChanged = true - this.updateWaypointsHashes() - if (this.showInfoInChat.getValue()) ChatLib.chat(this.FeatureManager.messagePrefix + "Added waypoint " + name + "!") - }) - - this.registerCommand("delwaypoint", (name) => { - delete this.userWaypoints[name] - this.userWaypointsArr = Object.values(this.userWaypoints) - this.waypointsChanged = true - this.updateWaypointsHashes() - if (this.showInfoInChat.getValue()) ChatLib.chat(this.FeatureManager.messagePrefix + "Deleted waypoint " + name + "!") - }) - this.registerCommand("clearwaypoints", () => { - this.userWaypointsAll.forEach(w => w.stopRender()) - Object.values(this.userWaypointsHash).forEach(a => a.forEach(w => w.stopRender())) - this.userWaypoints = {} - this.userWaypointsArr = [] - this.waypointsChanged = true - this.updateWaypointsHashes() - if (this.showInfoInChat.getValue()) ChatLib.chat(this.FeatureManager.messagePrefix + "Cleared waypoints!") - }) - this.registerCommand("savewaypoints", () => { - Java.type("net.minecraft.client.gui.GuiScreen")[m.setClipboardString](JSON.stringify(this.userWaypoints)) - ChatLib.chat(this.FeatureManager.messagePrefix + "Saved waypoints to clipboard!") - }) - this.registerCommand("loadwaypoints", () => { - try { - this.userWaypoints = JSON.parse(Java.type("net.minecraft.client.gui.GuiScreen")[m.getClipboardString]()) - - this.userWaypointsArr = Object.values(this.userWaypoints) - this.waypointsChanged = true - this.updateWaypointsHashes() - if (this.showInfoInChat.getValue()) ChatLib.chat(this.FeatureManager.messagePrefix + "Loaded waypoints from clipboard!") - } catch (e) { - if (this.showInfoInChat.getValue()) ChatLib.chat(this.FeatureManager.messagePrefix + "Error loading from clipboard!") - console.log(JSON.stringify(e, undefined, 2)) - console.log(e.stack) - } - }) - - this.ignorePlayers = new Set() - - this.registerCommand("waypointignoreadd", (player) => { - this.ignorePlayers.add(player) - ChatLib.chat(this.FeatureManager.messagePrefix + "Added " + player + " to waypoint ignore list, this will be cleared next game start!") - - this.patcherWaypoints = this.patcherWaypoints.filter(w => { - if (ChatLib.removeFormatting(w[1].params.name).trim().split(" ").pop() === player) { - w[1].stopRender() - return false - } - - return true - }) - }) - - this.registerChat("&r${*} &8> ${player}&f: &rx: ${x}, y: ${y}, z: ${z}", (player, x, y, z, e) => { - let p = ChatLib.removeFormatting(player).trim().split(" ").pop() - if (this.loadWaypointsFromSendCoords.getValue() && !this.ignorePlayers.has(p)) { - new TextComponent(this.FeatureManager.messagePrefix + "Loaded waypoint from &6" + p + "&7, &cCLICK HERE &7to ignore waypoints from them.").setClick("run_command", "/waypointignoreadd " + p).chat() - this.patcherWaypoints.push([Date.now(), new Waypoint(parseInt(x), parseInt(y), parseInt(ChatLib.removeFormatting(z)), 0, 0, 1, { name: ChatLib.addColor(player), showDist: true }).startRender()]) - if (this.patcherWaypoints.length > 10) this.patcherWaypoints.shift()[1].stopRender() - } - }) - this.registerChat("${player}&r&f: x: ${x}, y: ${y}, z: ${z}", (player, x, y, z, e) => { - if (player.includes(">")) return - let p = ChatLib.removeFormatting(player).trim().split(" ").pop() - if (this.loadWaypointsFromSendCoords.getValue() && !this.ignorePlayers.has(p)) {//parseInt(x), parseInt(y), parseInt(ChatLib.removeFormatting(z)), ChatLib.addColor(player) - new TextComponent(this.FeatureManager.messagePrefix + "Loaded waypoint from &6" + p + "&7, &cCLICK HERE &7to ignore waypoints from them.").setClick("run_command", "/waypointignoreadd " + p).chat() - this.patcherWaypoints.push([Date.now(), new Waypoint(parseInt(x), parseInt(y), parseInt(ChatLib.removeFormatting(z)), 0, 0, 1, { name: ChatLib.addColor(player), showDist: true }).startRender()]) - if (this.patcherWaypoints.length > 10) this.patcherWaypoints.shift()[1].stopRender() - } - }) - - this.registerStep(false, 5, () => { - while (this.patcherWaypoints[0]?.[0] < Date.now() - 60000) { - this.patcherWaypoints.shift()[1].stopRender() - } - }) - - let lastX = 0 - let lastY = 0 - let lastZ = 0 - let lastTick = 0 - this.registerEvent("renderWorld", () => { - if (Math.round(Player.getX()) !== lastX - || Math.round(Player.getY()) !== lastY - || Math.round(Player.getZ()) !== lastZ - || Date.now() - lastTick > 500) { - lastX = Math.round(Player.getX()) - lastY = Math.round(Player.getY()) - lastZ = Math.round(Player.getZ()) - lastTick = Date.now() - - this.tickWaypoints() - } - }) - - - this.lastSend = 0 - this.locations = {} - minewaypoints_socket.setLocationHandler = (area, loc) => { - this.locations[area || loc[0].area] = loc; - } - let lastLoc = [0, 0, 0] - this.lastTp = 0 - this.registerEvent("tick", () => { - try { - if (Scoreboard.getLines().length < 2) return; - let server = ChatLib.removeFormatting(Scoreboard.getLineByIndex(Scoreboard.getLines().length - 1)).split(" ") - - if (server.length === 2) { - server = server[1].replace(/[^0-9A-z]/g, "") - } else { - return; - } - - minewaypoints_socket.setServer(server, World.getWorld().func_82737_E()) - - let loc = [Player.getX(), Player.getY(), Player.getZ()] - if (calculateDistanceQuick(lastLoc, loc) > 20 ** 2) { - this.lastTp = Date.now() - } - lastLoc = loc - - if (Date.now() - this.lastSend > 1000 && Date.now() - this.lastTp > 5000) { - Scoreboard.getLines().forEach(line => { - line = ChatLib.removeFormatting(line.getName()).replace(/[^0-9A-z]/g, "") - if (Object.keys(areas).includes(line)) { - minewaypoints_socket.setLocation(line, { x: Math.floor(Player.getX()), y: Math.floor(Player.getY()), z: Math.floor(Player.getZ()) }) - } - }) - this.lastSend = Date.now() - } - } catch (e) { - console.log("SOOPYV2MINEWAYPOINTS ERROR") - console.log(JSON.stringify(e, undefined, 2)) - } - }) - - this.registerStep(false, 5, () => { - - World.getAllEntities().forEach(e => { - if (Math.max(Math.abs(Player.getX() - e.getX()), Math.abs(Player.getY() - e.getY()), Math.abs(Player.getZ() - e.getZ())) > 20) return; - - if (!this.locations["KingYolkar"]) { - if (ChatLib.removeFormatting(e.getName()) === "King Yolkar") { - minewaypoints_socket.setLocation("KingYolkar", { x: e.getX(), y: e.getY() + 3.5, z: e.getZ() }) - } - } - if (ChatLib.removeFormatting(e.getName()).includes("Boss Corleone")) { - minewaypoints_socket.setLocation("BossCorleone", { x: e.getX(), y: e.getY() + 3.5, z: e.getZ() }) - } - }) - // console.log(JSON.stringify(locations, undefined, 2)) - }) - - this.registerEvent("renderWorld", () => { - if (!this.mineWaypointsSetting.getValue()) return - if (this.FeatureManager.features["dataLoader"].class.area !== "Crystal Hollows") return - Object.values(this.locations).forEach(item => { - if (!item) return; - item.forEach(loc => { - // console.log(JSON.stringify(loc, undefined, 2)) - if (loc.loc.x) { - drawCoolWaypoint(loc.loc.x, loc.loc.y, loc.loc.z, 0, 255, 0, { name: areas[loc.area] }) - } else { - drawCoolWaypoint(loc.loc.minX / 2 + loc.loc.maxX / 2, loc.loc.minY / 2 + loc.loc.maxY / 2, loc.loc.minZ / 2 + loc.loc.maxZ / 2, 0, 255, 0, { name: areas[loc.area] }) - } - }) - }) - }).registeredWhen(() => this.mineWaypointsSetting.getValue()) - - this.registerEvent("worldLoad", () => { - this.locations = {} - }) - } - - tickWaypoints() { - for (let waypoint of this.userWaypointsAll) { - waypoint.update() - } - for (let waypoint of this.patcherWaypoints) { - waypoint[1].update() - } - let area = this.FeatureManager.features["dataLoader"] ? this.FeatureManager.features["dataLoader"].class.area : "NONE" - if (this.lastArea && this.lastArea !== area) { - if (this.userWaypointsHash[this.lastArea]) { - for (let waypoint of this.userWaypointsHash[lastArea]) { - waypoint.stopRender() - } - - } - } - this.lastArea = area - - if (this.userWaypointsHash[area]) { - for (let waypoint of this.userWaypointsHash[area]) { - waypoint.update() - waypoint.startRender() - } - } - } - - updateWaypointsHashes() { - this.userWaypointsAll.forEach(w => w.stopRender()) - Object.values(this.userWaypointsHash).forEach(a => a.forEach(w => w.stopRender())) - - this.userWaypointsAll = [] - this.userWaypointsHash = {} - for (let waypoint of this.userWaypointsArr) { - if (!waypoint.area) { - this.userWaypointsAll.push(new Waypoint(waypoint.x, waypoint.y, waypoint.z, waypoint.r, waypoint.g, waypoint.b, waypoint.options).startRender()) - } else { - if (!this.userWaypointsHash[waypoint.area]) this.userWaypointsHash[waypoint.area] = [] - this.userWaypointsHash[waypoint.area].push(new Waypoint(waypoint.x, waypoint.y, waypoint.z, waypoint.r, waypoint.g, waypoint.b, waypoint.options)) - } - } - } - - initVariables() { - - } - - onDisable() { - this.userWaypointsAll.forEach(w => w.stopRender()) - Object.values(this.userWaypointsHash).forEach(a => a.forEach(w => w.stopRender())) - this.patcherWaypoints.forEach(p => p[1].stopRender()) - - if (this.waypointsChanged) { - FileLib.write("soopyAddonsData", "soopyv2userwaypoints.json", JSON.stringify(this.userWaypoints)) - } - - this.initVariables() - } -} - -module.exports = { - class: new Waypoints() -} diff --git a/features/waypoints/metadata.json b/features/waypoints/metadata.json deleted file mode 100644 index c162b72..0000000 --- a/features/waypoints/metadata.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "Waypoints", - "description": "Allows rendering + creation of custom waypoints", - "isHidden": false, - "isTogglable": true, - "defaultEnabled": true, - "sortA": 0 -}
\ No newline at end of file diff --git a/features/waypoints/minewaypoints_socket.js b/features/waypoints/minewaypoints_socket.js deleted file mode 100644 index 0cc31e5..0000000 --- a/features/waypoints/minewaypoints_socket.js +++ /dev/null @@ -1,49 +0,0 @@ -import socketData from "../../../soopyApis/socketData"; -import WebsiteCommunicator from "../../../soopyApis/websiteCommunicator"; - -class MineWayPointsServer extends WebsiteCommunicator { - constructor() { - super(socketData.serverNameToId.minewaypoints); - - this.setLocationHandler = undefined - this.hypixelServer = undefined - this.lastSend = Date.now() - } - - onConnect() { - this.hypixelServer = undefined - } - - onData(data) { - switch (data.type) { - case "setLocation": - if (this.setLocationHandler) { - this.setLocationHandler(data.area, data.location); - } - break; - } - } - - setLocation(area, loc) { - this.sendData({ - type: "setLocation", - area: area, - location: loc - }); - } - - setServer(server, worldTime) { - if (this.hypixelServer === server && Date.now() - this.lastSend < 10000) return; - - this.lastSend = Date.now() - this.hypixelServer = server - this.sendData({ - type: "setServer", - server: server, - time: worldTime - }); - } -} - -global.soopyV2mineWayPointsServer = new MineWayPointsServer() -export default global.soopyV2mineWayPointsServer;
\ No newline at end of file diff --git a/features/waypoints/pathfind.js b/features/waypoints/pathfind.js deleted file mode 100644 index 42135d8..0000000 --- a/features/waypoints/pathfind.js +++ /dev/null @@ -1,96 +0,0 @@ -import FlatQueue from "../../datastructures/flatqueue" - -const directions = [ - [1,0,0,1], - [0,1,0,1], - [0,0,1,1], - [-1,0,0,1], - [0,-1,0,1], - [0,0,-1,1], - [1,1,0,Math.SQRT2], - [1,-1,0,Math.SQRT2], - [-1,1,0,Math.SQRT2], - [-1,-1,0,Math.SQRT2], - [1,0,1,Math.SQRT2], - [1,0,-1,Math.SQRT2], - [-1,0,1,Math.SQRT2], - [-1,0,-1,Math.SQRT2], - [0,1,1,Math.SQRT2], - [0,1,-1,Math.SQRT2], - [0,-1,1,Math.SQRT2], - [0,-1,-1,Math.SQRT2] -] - -class Path{ - constructor(startLocation, endLocation){ - this.startLocation = startLocation - this.endLocation = endLocation - - this.points = [] - } - - getPoints(){ - return this.points - } - - calculate(){ - this.locs = {} - this.points = [] - this.locs[this.startLocation.x+","+this.startLocation.y+","+this.startLocation.z]= { - location: this.startLocation, - parent: null, - distance: 0, - huristic: (Math.abs(this.startLocation.x-this.endLocation.x)+Math.abs(this.startLocation.y-this.endLocation.y)+Math.abs(this.startLocation.z-this.endLocation.z)) - } - - this.heap = new FlatQueue() - - this.heap.push(this.startLocation.x+","+this.startLocation.y+","+this.startLocation.z, this.locs[this.startLocation.x+","+this.startLocation.y+","+this.startLocation.z].huristic) - - let i = 0 - while(!this._iterate() && i<100000){ - i++ - } - } - - _iterate(){ - let currentKey = this.heap.pop() - let current = this.locs[currentKey] - if(current.location.x === this.endLocation.x && current.location.y === this.endLocation.y && current.location.z === this.endLocation.z){ - this.points.push([current.location.x, current.location.y, current.location.z]) - while(current.parent){ - current = this.locs[current.parent] - - this.points.push([current.location.x, current.location.y, current.location.z]) - } - return true - } - - for(let dir of directions){ - - let newLoc = { - x: current.location.x + dir[0], - y: current.location.y + dir[1], - z: current.location.z + dir[2] - } - - if(!this.locs[newLoc.x + "," + newLoc.y + "," + newLoc.z]){ - - if(World.getBlockAt(newLoc.x, newLoc.y, newLoc.z).getType().getID() === 0 && World.getBlockAt(newLoc.x, newLoc.y+1, newLoc.z).getType().getID() === 0){ - this.locs[newLoc.x + "," + newLoc.y + "," + newLoc.z] = { - location: newLoc, - parent: currentKey, - distance: current.distance+1, - huristic: Math.hypot((newLoc.x-this.endLocation.x),(newLoc.y-this.endLocation.y),(newLoc.z-this.endLocation.z))+(current.distance+dir[3])/2 - } - - this.heap.push(newLoc.x + "," + newLoc.y + "," + newLoc.z, this.locs[newLoc.x + "," + newLoc.y + "," + newLoc.z].huristic) - } - } - } - - return false - } -} - -export default Path
\ No newline at end of file |