CursorBuddy: oneko & friend(s) (#620)
* FatassHorse: add the horse * CursorBuddy: wowie * FatassHorse: removed !! * Update index.tsx --------- Co-authored-by: thororen1234 <78185467+thororen1234@users.noreply.github.com>
This commit is contained in:
parent
c68f9e5d49
commit
5f3854284a
2 changed files with 139 additions and 69 deletions
139
src/plugins/cursorBuddy/index.tsx
Normal file
139
src/plugins/cursorBuddy/index.tsx
Normal file
|
|
@ -0,0 +1,139 @@
|
|||
/*
|
||||
* Vencord, a modification for Discord's desktop app
|
||||
* Copyright (c) 2022 Vendicated and contributors
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { definePluginSettings, migratePluginSettings } from "@api/Settings";
|
||||
import { Devs, EquicordDevs } from "@utils/constants";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
|
||||
const ONEKO_IMAGE = "https://raw.githubusercontent.com/adryd325/oneko.js/c4ee66353b11a44e4a5b7e914a81f8d33111555e/oneko.gif";
|
||||
const ONEKO_SCRIPT = "https://raw.githubusercontent.com/adryd325/oneko.js/c4ee66353b11a44e4a5b7e914a81f8d33111555e/oneko.js";
|
||||
const FATASS_HORSE = "https://raw.githubusercontent.com/nexpid/fatass-horse/351f158bfd8fafd44d9c17faad61f2a80bcd33e3/horse.js";
|
||||
|
||||
const settings = definePluginSettings({
|
||||
buddy: {
|
||||
description: "Pick a cursor buddy",
|
||||
type: OptionType.SELECT,
|
||||
options: [
|
||||
{
|
||||
label: "Oneko",
|
||||
value: "oneko",
|
||||
default: true
|
||||
},
|
||||
{
|
||||
label: "Fatass Horse",
|
||||
value: "fathorse"
|
||||
}
|
||||
],
|
||||
onChange: load,
|
||||
},
|
||||
speed: {
|
||||
description: "Speed of Da Cat :3",
|
||||
type: OptionType.NUMBER,
|
||||
default: 10,
|
||||
isValid: (value: number) => value >= 0 || "Speed must be bigger than 0",
|
||||
onChange: load,
|
||||
},
|
||||
fps: {
|
||||
description: "Framerate of the fatass horse",
|
||||
type: OptionType.NUMBER,
|
||||
default: 24,
|
||||
isValid: (value: number) => value > 0 || "Framerate must be bigger than 0",
|
||||
onChange: load
|
||||
},
|
||||
size: {
|
||||
description: "Size of the fatass horse",
|
||||
type: OptionType.NUMBER,
|
||||
default: 120,
|
||||
isValid: (value: number) => value > 0 || "Size must be bigger than 0",
|
||||
onChange: load
|
||||
},
|
||||
fade: {
|
||||
description: "If the horse should fade when the cursor is near",
|
||||
type: OptionType.BOOLEAN,
|
||||
default: true,
|
||||
onChange: load
|
||||
},
|
||||
freeroam: {
|
||||
description: "If the horse should roam freely when idle",
|
||||
type: OptionType.BOOLEAN,
|
||||
default: true,
|
||||
onChange: load
|
||||
},
|
||||
shake: {
|
||||
description: "If the horse should shake the window when it's walking",
|
||||
type: OptionType.BOOLEAN,
|
||||
default: false,
|
||||
onChange: load
|
||||
},
|
||||
}, {
|
||||
fps: {
|
||||
disabled() { return this.store.buddy !== "fathorse"; },
|
||||
},
|
||||
size: {
|
||||
disabled() { return this.store.buddy !== "fathorse"; },
|
||||
},
|
||||
fade: {
|
||||
disabled() { return this.store.buddy !== "fathorse"; },
|
||||
},
|
||||
freeroam: {
|
||||
disabled() { return this.store.buddy !== "fathorse"; },
|
||||
},
|
||||
shake: {
|
||||
disabled() { return this.store.buddy !== "fathorse"; },
|
||||
}
|
||||
});
|
||||
|
||||
function unload() {
|
||||
if (settings.store.buddy === "oneko") document.getElementById("oneko")?.remove();
|
||||
if (settings.store.buddy === "fathorse") document.getElementById("fathorse")?.remove();
|
||||
}
|
||||
|
||||
function load() {
|
||||
switch (settings.store.buddy) {
|
||||
case "oneko": {
|
||||
fetch(ONEKO_SCRIPT)
|
||||
.then(x => x.text())
|
||||
.then(s => s.replace("const nekoSpeed = 10;", `const nekoSpeed = ${settings.store.speed};`))
|
||||
.then(s => s.replace("./oneko.gif", ONEKO_IMAGE)
|
||||
.replace("(isReducedMotion)", "(false)"))
|
||||
.then(eval);
|
||||
break;
|
||||
}
|
||||
case "fathorse": {
|
||||
fetch(FATASS_HORSE).then(x => x.text()).then(s => (0, eval)(s)({
|
||||
speed: settings.store.speed,
|
||||
fps: settings.store.fps,
|
||||
size: settings.store.size,
|
||||
fade: settings.store.fade,
|
||||
freeroam: settings.store.freeroam,
|
||||
shake: settings.store.shake
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
migratePluginSettings("CursorBuddy", "Oneko", "oneko");
|
||||
export default definePlugin({
|
||||
name: "CursorBuddy",
|
||||
description: "only a slightly annoying plugin",
|
||||
authors: [Devs.Ven, Devs.adryd, EquicordDevs.nexpid],
|
||||
settings,
|
||||
|
||||
start: load,
|
||||
stop: unload,
|
||||
});
|
||||
|
|
@ -1,69 +0,0 @@
|
|||
/*
|
||||
* Vencord, a modification for Discord's desktop app
|
||||
* Copyright (c) 2022 Vendicated and contributors
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { isPluginEnabled } from "@api/PluginManager";
|
||||
import { definePluginSettings, migratePluginSettings } from "@api/Settings";
|
||||
import { Devs } from "@utils/constants";
|
||||
import definePlugin, { OptionType } from "@utils/types";
|
||||
|
||||
const settings = definePluginSettings({
|
||||
speed: {
|
||||
description: "Speed of Da Cat :3",
|
||||
type: OptionType.NUMBER,
|
||||
default: 10,
|
||||
isValid: (value: number) => {
|
||||
if (value && value < 0) return "The number must be bigger than 0";
|
||||
return true;
|
||||
},
|
||||
onChange: () => {
|
||||
// note: cant call the start() function from here. so i just copy pasted it (This was pointed out in the last commit i made. So this is to just clear stuff up for any future devs that work on this :D )
|
||||
if (isPluginEnabled("Oneko")) {
|
||||
document.getElementById("oneko")?.remove();
|
||||
fetch("https://raw.githubusercontent.com/adryd325/oneko.js/c4ee66353b11a44e4a5b7e914a81f8d33111555e/oneko.js")
|
||||
.then(x => x.text())
|
||||
.then(s => s.replace("const nekoSpeed = 10;", `const nekoSpeed = ${settings.store.speed};`))
|
||||
.then(s => s.replace("./oneko.gif", "https://raw.githubusercontent.com/adryd325/oneko.js/c4ee66353b11a44e4a5b7e914a81f8d33111555e/oneko.gif")
|
||||
.replace("(isReducedMotion)", "(false)"))
|
||||
.then(eval);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
migratePluginSettings("Oneko", "oneko");
|
||||
export default definePlugin({
|
||||
name: "Oneko",
|
||||
description: "cat follow mouse (real)",
|
||||
// Listing adryd here because this literally just evals her script
|
||||
authors: [Devs.Ven, Devs.adryd],
|
||||
settings,
|
||||
|
||||
start() {
|
||||
fetch("https://raw.githubusercontent.com/adryd325/oneko.js/c4ee66353b11a44e4a5b7e914a81f8d33111555e/oneko.js")
|
||||
.then(x => x.text())
|
||||
.then(s => s.replace("const nekoSpeed = 10;", `const nekoSpeed = ${settings.store.speed};`))
|
||||
.then(s => s.replace("./oneko.gif", "https://raw.githubusercontent.com/adryd325/oneko.js/c4ee66353b11a44e4a5b7e914a81f8d33111555e/oneko.gif")
|
||||
.replace("(isReducedMotion)", "(false)"))
|
||||
.then(eval);
|
||||
},
|
||||
|
||||
stop() {
|
||||
document.getElementById("oneko")?.remove();
|
||||
}
|
||||
});
|
||||
Loading…
Add table
Reference in a new issue