aboutsummaryrefslogtreecommitdiff
path: root/features/spamHider
diff options
context:
space:
mode:
authorSoopyboo32 <49228220+Soopyboo32@users.noreply.github.com>2021-10-31 09:49:42 +0800
committerSoopyboo32 <49228220+Soopyboo32@users.noreply.github.com>2021-10-31 09:49:42 +0800
commit48653ec89538f1650106a5e77463412cad4684c2 (patch)
tree09687cd579462e04d539fd4615369fa6dae13902 /features/spamHider
downloadSoopyV2-48653ec89538f1650106a5e77463412cad4684c2.tar.gz
SoopyV2-48653ec89538f1650106a5e77463412cad4684c2.tar.bz2
SoopyV2-48653ec89538f1650106a5e77463412cad4684c2.zip
first commit
Diffstat (limited to 'features/spamHider')
-rw-r--r--features/spamHider/index.js175
-rw-r--r--features/spamHider/metadata.json8
2 files changed, 183 insertions, 0 deletions
diff --git a/features/spamHider/index.js b/features/spamHider/index.js
new file mode 100644
index 0000000..37c964f
--- /dev/null
+++ b/features/spamHider/index.js
@@ -0,0 +1,175 @@
+/// <reference types="../../../CTAutocomplete" />
+/// <reference lib="es2015" />
+import Feature from "../../featureClass/class";
+import { newSideMessage, setLocation } from "../../../soopyApis";
+
+class SpamHider extends Feature {
+ constructor() {
+ super()
+ }
+
+ onEnable(){
+ this.initVariables()
+
+ this.hideMessages = []
+ this.hideMessagesRexex = []
+ this.moveMessages = []
+ this.moveMessagesRexex = []
+
+ this.SpamHiderMessagesRenderer = new SpamHiderMessagesRenderer()
+
+ this.loadSpamMessages()
+
+ this.registerChat("${*}", this.onChat)
+
+ this.registerEvent("renderOverlay", this.renderOverlay)
+ }
+
+ onChat(e){
+ let msg = ChatLib.getChatMessage(e, true).replace(/ยง/g, "&").replace(/(?:^&r)|(?:&r$)/g, "")
+
+ this.hideMessagesRexex.forEach(regex => {
+ if(regex.test(msg)){
+ cancel(e)
+ return
+ }
+ })
+
+ this.moveMessagesRexex.forEach(regex => {
+ if(regex.test(msg)){
+ this.SpamHiderMessagesRenderer.addMessage(msg)
+ cancel(e)
+ return
+ }
+ })
+ }
+ renderOverlay(){
+ this.SpamHiderMessagesRenderer.render(100,100,1, 1)
+ }
+
+ loadSpamMessages(){
+ let messages = JSON.parse(FileLib.getUrlContent("http://soopymc.my.to/api/soopyv2/spamHiderMessages.json"))
+ this.hideMessages = messages.hideMessages
+ this.moveMessages = messages.moveMessages
+
+ this.hideMessagesRexex = []
+ this.hideMessages.forEach(message=>{
+ let regex = new RegExp(message.replace(/[\\^$*+?.()|[\]{}]/g, '\$&')
+ .replace(/\$\{\*\}/g, "(?:.+)"))
+ this.hideMessagesRexex.push(regex)
+ })
+
+ this.moveMessagesRexex = []
+ this.moveMessages.forEach(message=>{
+ let regex = new RegExp(message.replace(/[\\^$*+?.()|[\]{}]/g, '\$&')
+ .replace(/\$\{\*\}/g, "(?:.+)"))
+
+ this.moveMessagesRexex.push(regex)
+ })
+ }
+
+ initVariables(){
+ this.hideMessages = undefined
+ this.hideMessagesRexex = undefined
+ this.moveMessages = undefined
+ this.moveMessagesRexex = undefined
+ this.SpamHiderMessagesRenderer = undefined
+ }
+
+ onDisable(){
+ this.initVariables()
+ }
+}
+
+class SpamHiderMessagesRenderer{
+ constructor(){
+ this.messages = []
+ this.x = 0 //offset from corner, not absolute location
+ this.y = 0 //offset from corner, not absolute location
+ this.scale = 1
+ this.corner = 2
+
+ this.lastRender = 0
+ }
+
+ addMessage(str){
+ this.messages.push([str, Date.now(), this.y])
+ }
+
+ render(){
+ Renderer.drawString("", -100, -100)//Fixes skytils issue //idk if this is still needed, it was in old code and imma just leave it ig
+
+ let now = Date.now()
+ let animDiv = (now-this.lastRender) / 1000
+ this.lastRender = now
+ let swidth = Renderer.screen.getWidth()
+ let sheight = Renderer.screen.getHeight()
+
+ //loop over all messages backwards
+ for(let i = this.messages.length - 1; i >= 0; i--){
+ let message = this.messages[i]
+
+ let [str, time, height] = message
+
+ time = now-time
+
+ let messageWidth = Renderer.getStringWidth(ChatLib.removeFormatting(str))
+
+ let x = 0;
+ let y = 0;
+ if (this.corner === 0) { //top left
+ x = 20
+ this.messages[i][2] = height + (((this.messages.length-i) * -10) - height) * (animDiv * 5)
+ }
+ if (this.corner === 1) { //top right
+ x = swidth - 20 - messageWidth
+ this.messages[i][2] = height + (((this.messages.length-i) * -10) - height) * (animDiv * 5)
+ }
+ if (this.corner === 2) { //bottom right
+ x = swidth - 20 - messageWidth
+ this.messages[i][2] = height + (((this.messages.length-i) * 10) - height) * (animDiv * 5)
+ }
+
+ let animOnOff = 0
+ if (time < 500) {
+ animOnOff = 1 - (time / 500)
+ }
+ if (time > 3500) {
+ animOnOff = ((time - 3500) / 500)
+ }
+
+ animOnOff *= 90
+ animOnOff += 90
+
+ animOnOff = animOnOff * Math.PI / 180;
+
+ animOnOff = Math.sin(animOnOff)
+
+ animOnOff *= -1
+ animOnOff += 1
+
+ if (this.corner === 0) { //top left
+ x += ((animOnOff * -1) * (messageWidth + 30))
+ y = 30 - (height)
+ }
+ if (this.corner === 1) { //top right
+ x += (animOnOff * (messageWidth + 30))
+ y = 30 - (height)
+ }
+ if (this.corner === 2) { //bottom right
+ x += (animOnOff * (messageWidth + 30))
+ y = sheight - 30 - (height)
+ }
+
+ Renderer.drawString(str, x + this.x, y + this.y);
+
+ if (time > 4000) {
+ this.messages.shift()
+ }
+ }
+ }
+}
+
+module.exports = {
+ class: new SpamHider()
+} \ No newline at end of file
diff --git a/features/spamHider/metadata.json b/features/spamHider/metadata.json
new file mode 100644
index 0000000..7e8e2b1
--- /dev/null
+++ b/features/spamHider/metadata.json
@@ -0,0 +1,8 @@
+{
+ "name": "Spam Hider",
+ "description": "A couple of features to help clean up your chat",
+ "isHidden": false,
+ "isTogglable": true,
+ "defaultEnabled": true,
+ "sortA": 1
+} \ No newline at end of file