aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--features/dungeonMap/index.js31
-rw-r--r--features/dungeonMap/map.pngbin0 -> 5648 bytes
-rw-r--r--features/settings/settingThings/imageLocation.js320
-rw-r--r--metadata.json4
4 files changed, 346 insertions, 9 deletions
diff --git a/features/dungeonMap/index.js b/features/dungeonMap/index.js
index 2f82022..984392d 100644
--- a/features/dungeonMap/index.js
+++ b/features/dungeonMap/index.js
@@ -12,7 +12,9 @@ import { SoopyGui, SoopyRenderEvent } from "../../../guimanager";
import SoopyGuiElement from "../../../guimanager/GuiElement/SoopyGuiElement";
import SoopyMouseClickEvent from "../../../guimanager/EventListener/SoopyMouseClickEvent";
import ButtonWithArrow from "../../../guimanager/GuiElement/ButtonWithArrow";
+import ImageLocationSetting from "../settings/settingThings/imageLocation";
const BufferedImage = Java.type("java.awt.image.BufferedImage")
+const AlphaComposite = Java.type("java.awt.AlphaComposite")
class DungeonMap extends Feature {
constructor() {
@@ -27,6 +29,8 @@ class DungeonMap extends Feature {
this.initVariables()
this.renderMap = new ToggleSetting("Render Map", "Toggles Rendering the map on the hud (scuffed)", false, "dmap_render", this)
+ this.mapLocation = new ImageLocationSetting("Map Location", "Sets the location of the map on the hud","dmap_location", this, [10,10, 1], new Image(javax.imageio.ImageIO.read(new java.io.File("./config/ChatTriggers/modules/SoopyV2/features/dungeonMap/map.png"))),100,100)
+ this.mapBackground = new ToggleSetting("Map Background", "Puts a white background begind the map", false, "dmap_background", this)
this.brBox = new ToggleSetting("Box around doors in br", "In map category because it uses map to find location (no esp)", true, "dmap_door", this)
this.spiritLeapOverlay = new ToggleSetting("Spirit leap overlay", "Cool overlay for the spirit leap menu", true, "spirit_leap_overlay", this)
@@ -64,9 +68,6 @@ class DungeonMap extends Feature {
"Ice Path": new Item("minecraft:mob_spawner")
}
- this.mapLocation = [10,10]
- this.mapRenderScale = 128/this.IMAGE_SIZE
-
this.spiritLeapOverlayGui = new SpiritLeapOverlay(this)
// this.registerEvent("tick", this.tick)
@@ -127,7 +128,7 @@ class DungeonMap extends Feature {
renderOverlay(){
if(this.isInDungeon() && this.renderMap.getValue()){
- this.drawMap(...this.mapLocation, this.mapRenderScale*this.IMAGE_SIZE, this.mapRenderScale)
+ this.drawMap(this.mapLocation.getValue()[0], this.mapLocation.getValue()[1],100*this.mapLocation.getValue()[2], 0.5*this.mapLocation.getValue()[2])
}
}
@@ -145,8 +146,8 @@ class DungeonMap extends Feature {
Object.keys(this.puzzles).forEach(loc=>{
if(!this.puzzles[loc]) return
if(this.puzzles[loc][1]) return
- let y = loc%128
- let x = Math.floor(loc/128)
+ let y = (loc%128)/128*100
+ let x = (Math.floor(loc/128))/128*100
let item = this.puzzleItems[this.puzzles[loc][0]] || this.barrier_block_item
@@ -211,8 +212,23 @@ class DungeonMap extends Feature {
// console.log(name)
})
let puzzlesTab2 = this.puzzlesTab.map(a=>a)
+
// console.log(this.puzzlesTab.length)
Object.keys(this.puzzles).forEach(key=>{
+ let y = (key%128)
+ let x = (Math.floor(key/128))
+
+ if(x>100&&y>100){
+ this.puzzles[key] = puzzlesTab2.shift()
+ }
+ })
+ Object.keys(this.puzzles).forEach(key=>{
+ let y = (key%128)
+ let x = (Math.floor(key/128))
+
+ if(x>100&&y>100){
+ return
+ }
this.puzzles[key] = puzzlesTab2.shift()
// console.log(key, this.puzzles[key], this.puzzlesTab.length)
})
@@ -247,8 +263,9 @@ class DungeonMap extends Feature {
let graphics = this.renderImage.getGraphics()
- // graphics.setColor(new Color(Renderer.color(255, 255, 255, 255)))
+ if(!this.mapBackground.getValue())graphics.setComposite(AlphaComposite.Clear);
graphics.fillRect(0,0,this.IMAGE_SIZE,this.IMAGE_SIZE)
+ if(!this.mapBackground.getValue())graphics.setComposite(AlphaComposite.SrcOver);
let mapData
try {
diff --git a/features/dungeonMap/map.png b/features/dungeonMap/map.png
new file mode 100644
index 0000000..ff16aca
--- /dev/null
+++ b/features/dungeonMap/map.png
Binary files differ
diff --git a/features/settings/settingThings/imageLocation.js b/features/settings/settingThings/imageLocation.js
new file mode 100644
index 0000000..adb6725
--- /dev/null
+++ b/features/settings/settingThings/imageLocation.js
@@ -0,0 +1,320 @@
+import { SoopyGui } from "../../../../guimanager"
+import SoopyBoxElement from "../../../../guimanager/GuiElement/SoopyBoxElement"
+import SoopyTextElement from "../../../../guimanager/GuiElement/SoopyTextElement"
+import ButtonSetting from "./button"
+import BoxWithText from "../../../../guimanager/GuiElement/BoxWithText"
+import ButtonWithArrow from "../../../../guimanager/GuiElement/ButtonWithArrow"
+import SoopyMouseClickEvent from "../../../../guimanager/EventListener/SoopyMouseClickEvent"
+import NumberTextBox from "../../../../guimanager/GuiElement/NumberTextBox"
+import SoopyContentChangeEvent from "../../../../guimanager/EventListener/SoopyContentChangeEvent"
+
+let allLocations = []
+
+class ImageLocationSetting extends ButtonSetting {
+ constructor(name, description, settingId, module, defaultLocation, image, imageWBase, imageHBase){
+ super(name, description, settingId, module, "Edit Position", this.editPosition, defaultLocation)
+
+ this.x = this.getValue()[0]
+ this.y = this.getValue()[1]
+ this.scale = this.getValue()[2]
+
+ this.image = image
+ this.imageWBase = imageWBase
+ this.imageHBase = imageHBase
+
+ this.dragging = false
+ this.dragOffset = [0, 0]
+ this.resisizing = false
+ this.resizePoint = 0
+ this.resizeInitialPos=[0, 0, 0, 0, 0, 0]
+
+ this.soopyGui = new SoopyGui()
+ this.soopyGui._renderBackground = ()=>{} //remove background darkening
+
+ this.elmSettings = new SoopyBoxElement().setLocation(0, 0, 0.25, 0.25)
+
+ let scaleText = new SoopyTextElement().setText("&0Scale: ").setLocation(3, 0.025, 1, 0.15)
+ scaleText.location.location.setRelative(false, true)
+ scaleText.centeredX = false
+ this.elmSettings.addChild(scaleText)
+
+ this.scaleInput = new NumberTextBox().setText(this.scale.toFixed(2)).setLocation(Renderer.getStringWidth("Scale: ")+3, 0.025, -(Renderer.getStringWidth("Scale: ")+6), 0.15)
+ this.scaleInput.location.location.setRelative(false, true)
+ this.scaleInput.location.size.setRelative(false, true)
+ this.elmSettings.addChild(this.scaleInput)
+ this.scaleInput.text.addEvent(new SoopyContentChangeEvent().setHandler((newVal, oldVal, resetFun)=>{
+ try{
+ newVal = parseFloat(newVal)
+ if(!isNaN(newVal)){
+ this.scale = newVal
+ this._updateValue()
+ }
+ }catch(e){}
+ }))
+ this.lastScaleRender = this.scale.toFixed(2)
+
+ let xText = new SoopyTextElement().setText("&0X: ").setLocation(3, 0.225, 1, 0.15)
+ xText.location.location.setRelative(false, true)
+ xText.centeredX = false
+ this.elmSettings.addChild(xText)
+ this.xInput = new NumberTextBox().setText(this.x.toFixed(0)).setLocation(Renderer.getStringWidth("X: ")+3, 0.225, -(Renderer.getStringWidth("X: ")+6), 0.15)
+ this.xInput.location.location.setRelative(false, true)
+ this.xInput.location.size.setRelative(false, true)
+ this.elmSettings.addChild(this.xInput)
+ this.xInput.text.addEvent(new SoopyContentChangeEvent().setHandler((newVal, oldVal, resetFun)=>{
+ try{
+ newVal = parseFloat(newVal)
+ if(!isNaN(newVal)){
+ this.x = newVal
+ this._updateValue()
+ }
+ }catch(e){}
+ }))
+ this.lastXRender = this.x.toFixed(0)
+
+ let yText = new SoopyTextElement().setText("&0Y: ").setLocation(3, 0.425, 1, 0.15)
+ yText.location.location.setRelative(false, true)
+ yText.centeredX = false
+ this.elmSettings.addChild(yText)
+ this.yInput = new NumberTextBox().setText(this.y.toFixed(0)).setLocation(Renderer.getStringWidth("Y: ")+3, 0.425, -(Renderer.getStringWidth("Y: ")+6), 0.15)
+ this.yInput.location.location.setRelative(false, true)
+ this.yInput.location.size.setRelative(false, true)
+ this.elmSettings.addChild(this.yInput)
+ this.yInput.text.addEvent(new SoopyContentChangeEvent().setHandler((newVal, oldVal, resetFun)=>{
+ try{
+ newVal = parseFloat(newVal)
+ if(!isNaN(newVal)){
+ this.y = newVal
+ this._updateValue()
+ }
+ }catch(e){}
+ }))
+ this.lastYRender = this.y.toFixed(0)
+
+ this.soopyGui.element.addChild(this.elmSettings)
+
+ let button = new ButtonWithArrow().setText("&0Reset").setLocation(0.125, 0.625, 0.75, 0.15)
+ button.addEvent(new SoopyMouseClickEvent().setHandler(()=>{
+ this.x = defaultLocation[0]
+ this.y = defaultLocation[1]
+ this.scale = defaultLocation[2]
+ this.shadowType = defaultLocation[3]
+ }))
+ this.elmSettings.addChild(button)
+
+ let button2 = new ButtonWithArrow().setText("&0Back").setLocation(0.125, 0.825, 0.75, 0.15)
+ button2.addEvent(new SoopyMouseClickEvent().setHandler(()=>{
+ this.soopyGui.close()
+ this.guiObject.main.ctGui.open()
+ }))
+ this.elmSettings.addChild(button2)
+
+ this.editGui = this.soopyGui.ctGui
+
+ this.editGui.registerDraw((mouseX, mouseY, partialTicks)=>{
+ this.renderGui(mouseX, mouseY)
+ this.soopyGui._render(mouseX, mouseY, partialTicks)
+ })
+ this.editGui.registerClicked((mouseX, mouseY, button)=>{
+ this.clicked(mouseX, mouseY)
+ this.soopyGui._onClick(mouseX, mouseY, button)
+ })
+ this.editGui.registerMouseReleased((mouseX, mouseY)=>{
+ this.released(mouseX, mouseY)
+ })
+
+ allLocations.push(this)
+ }
+
+ requires(toggleSetting){
+ this.requiresO = toggleSetting
+
+ toggleSetting.toggleObject.addEvent(new SoopyContentChangeEvent().setHandler((newVal, oldVal, resetFun)=>{
+ if(newVal){
+ this.guiObject.location.size.y.set(0.2, 500)
+ }else{
+ this.guiObject.location.size.y.set(0, 500)
+ }
+ }))
+ let newVal = this.requiresO.getValue()
+ if(!newVal){
+ this.guiObject.location.size.y.set(0, 0)
+ }
+
+ return this
+ }
+
+ _updateValue(){
+ this.setValue([this.x, this.y, this.scale, this.shadowType])
+ }
+
+ editPosition(){
+ this.guiObject.main.ctGui.close()
+
+ this.soopyGui.open()
+ }
+
+ clicked(mouseX, mouseY){
+ let width = this.getWidth()
+ let height = this.getHeight()
+
+ let locations = [[this.x, this.y], [this.x+width*this.scale, this.y], [this.x, this.y+height*this.scale], [this.x+width*this.scale, this.y+height*this.scale]]
+
+ locations.forEach((loc, i)=>{
+ if(mouseX >= loc[0]-1*Math.max(1, this.scale) && mouseX <= loc[0]+1*Math.max(1, this.scale)
+ && mouseY >= loc[1]-1*Math.max(1, this.scale) && mouseY <= loc[1]+1*Math.max(1, this.scale)){
+ this.resisizing= true
+ this.resizePoint = i
+ this.resizeInitialPos = [mouseX, mouseY, this.x, this.y, width*this.scale, height*this.scale]
+ }
+ })
+ if(this.resisizing) return;
+
+ if(mouseX > this.x && mouseX < this.x+width*this.scale
+ && mouseY>this.y && mouseY<this.y+height*this.scale){
+ this.dragging = true;
+ this.dragOffset = [this.x-mouseX, this.y-mouseY]
+ }
+ }
+ released(mouseX, mouseY){
+ this.updateLocation(mouseX, mouseY)
+ this.dragging = false
+ this.resisizing = false
+
+ this._updateValue()
+ }
+
+ getWidth(){
+ return this.imageWBase
+ }
+
+ getHeight(){
+ return this.imageHBase
+ }
+
+ updateLocation(mouseX, mouseY, drawCollidingBox){
+ let width = this.getWidth()
+ let height = this.getHeight()
+
+ if(this.dragging){
+ this.x = mouseX+this.dragOffset[0]
+ this.y = mouseY+this.dragOffset[1]
+
+ let snapPoints = []
+ allLocations.forEach(loc=>{
+ if(loc === this) return;
+ snapPoints.push([loc.x, loc.y])
+ snapPoints.push([loc.x+loc.getWidth()*loc.scale, loc.y])
+ snapPoints.push([loc.x+loc.getWidth()*loc.scale, loc.y+height*loc.scale])
+ snapPoints.push([loc.x, loc.y+height*loc.scale])
+ })
+
+ snapPoints.forEach(point=>{
+ //top left
+ if(Math.abs(this.x-point[0]) < 5 && Math.abs(this.y-point[1]) < 5){
+ this.x = point[0]
+ this.y = point[1]
+ }
+
+ //top right
+ if(Math.abs(this.x+width*this.scale-point[0]) < 5 && Math.abs(this.y-point[1]) < 5){
+ this.x = point[0]-width*this.scale
+ this.y = point[1]
+ }
+
+ //bottom left
+ if(Math.abs(this.x-point[0]) < 5 && Math.abs(this.y+height*this.scale-point[1]) < 5){
+ this.x = point[0]
+ this.y = point[1]-height*this.scale
+ }
+
+ //bottom right
+ if(Math.abs(this.x+width*this.scale-point[0]) < 5 && Math.abs(this.y+height*this.scale-point[1]) < 5){
+ this.x = point[0]-width*this.scale
+ this.y = point[1]-height*this.scale
+ }
+ })
+ }
+ if(this.resisizing){
+ if(this.resizePoint === 3){
+ this.scale=(mouseX-this.x)/width
+ this.scale = Math.max(0.25, this.scale)
+ }
+ if(this.resizePoint === 1){
+
+ let [oMouseX, oMouseY, oX, oY, ow, oh] = this.resizeInitialPos
+
+ this.scale=(mouseX-this.x)/width
+ this.scale = Math.max(0.25, this.scale)
+ this.y=oY+oh-height*this.scale
+ }
+ if(this.resizePoint===0){
+ let [oMouseX, oMouseY, oX, oY, ow, oh] = this.resizeInitialPos
+
+ this.scale=(oX+ow-mouseX)/width
+ this.scale = Math.max(0.25, this.scale)
+ this.x=oX+ow-width*this.scale
+ this.y=oY+oh-height*this.scale
+ }
+ if(this.resizePoint === 2){
+ let [oMouseX, oMouseY, oX, oY, ow, oh] = this.resizeInitialPos
+
+ this.scale=(oX+ow-mouseX)/width
+ this.scale = Math.max(0.25, this.scale)
+ this.x=oX+ow-width*this.scale
+ }
+ }
+ }
+
+ renderGui(mouseX, mouseY){
+
+ let width = this.getWidth()
+ let height = this.getHeight()
+
+ this.image.draw(this.x, this.y, width*this.scale, height*this.scale)
+
+ this.updateLocation(mouseX, mouseY, true)
+
+ this.renderBox(true)
+
+ if(this.x+width*this.scale/2 > Renderer.screen.getWidth()/2){
+ this.elmSettings.location.location.x.set(Math.min(Math.max(this.x/Renderer.screen.getWidth()-0.25-0.03, 0.02), 0.73))
+ }else{
+ this.elmSettings.location.location.x.set(Math.min(Math.max((this.x+width*this.scale)/Renderer.screen.getWidth()+0.03, 0.02), 0.73))
+ }
+ this.elmSettings.location.location.y.set(Math.min(Math.max((this.y+height*this.scale/2)/Renderer.screen.getHeight() - this.elmSettings.location.size.y.get()/2, 0.02), 0.73))
+
+
+ if(this.lastScaleRender !== this.scale.toFixed(2) && !this.scaleInput.text.selected){
+ this.lastScaleRender = this.scale.toFixed(2)
+ this.scaleInput.setText(this.scale.toFixed(2))
+ }
+ if(this.lastXRender !== this.x.toFixed(0) && !this.xInput.text.selected){
+ this.lastXRender = this.x.toFixed(0)
+ this.xInput.setText(this.x.toFixed(0))
+ }
+ if(this.lastYRender !== this.y.toFixed(0) && !this.yInput.text.selected){
+ this.lastYRender = this.y.toFixed(0)
+ this.yInput.setText(this.y.toFixed(0))
+ }
+ }
+
+ renderBox(drawHandles){
+ let width = this.getWidth()
+ let height = this.getHeight()
+
+ Renderer.drawRect(Renderer.color(255, 255, 255), this.x, this.y, width*this.scale, 1)
+ Renderer.drawRect(Renderer.color(255, 255, 255), this.x, this.y, 1, height*this.scale)
+ Renderer.drawRect(Renderer.color(255, 255, 255), this.x, this.y+height*this.scale, width*this.scale, 1)
+ Renderer.drawRect(Renderer.color(255, 255, 255), this.x+width*this.scale, this.y, 1, height*this.scale)
+
+ if(drawHandles){
+ Renderer.drawRect(Renderer.color(255, 255, 255), this.x-1*Math.max(1, this.scale)+width*this.scale, this.y-1*Math.max(1, this.scale), 2*Math.max(1, this.scale)+1, 2*Math.max(1, this.scale)+1)
+ Renderer.drawRect(Renderer.color(255, 255, 255), this.x-1*Math.max(1, this.scale), this.y-1*Math.max(1, this.scale)+height*this.scale, 2*Math.max(1, this.scale)+1, 2*Math.max(1, this.scale)+1)
+ Renderer.drawRect(Renderer.color(255, 255, 255), this.x-1*Math.max(1, this.scale)+width*this.scale, this.y-1*Math.max(1, this.scale)+height*this.scale, 2*Math.max(1, this.scale)+1, 2*Math.max(1, this.scale)+1)
+ Renderer.drawRect(Renderer.color(255, 255, 255), this.x-1*Math.max(1, this.scale), this.y-1*Math.max(1, this.scale), 2*Math.max(1, this.scale)+1, 2*Math.max(1, this.scale)+1)
+ }
+ }
+}
+
+export default ImageLocationSetting \ No newline at end of file
diff --git a/metadata.json b/metadata.json
index f0af9f2..40a2de9 100644
--- a/metadata.json
+++ b/metadata.json
@@ -5,8 +5,8 @@
"entry": "index.js",
"description": "Soopy addons v2",
"name": "SoopyV2",
- "version": "2.1.33",
- "versionId": 160,
+ "version": "2.1.34",
+ "versionId": 161,
"requires": [
"soopyApis",
"soopyAddonsData",