Skip to content

Commit

Permalink
Merge branch 'dev'
Browse files Browse the repository at this point in the history
  • Loading branch information
zhenga8533 committed Apr 28, 2024
2 parents 35d293f + 22871c6 commit 17e2f3d
Show file tree
Hide file tree
Showing 61 changed files with 885 additions and 566 deletions.
51 changes: 51 additions & 0 deletions asm/asm.js
@@ -0,0 +1,51 @@
const modifiedWords = [
{ phrase: 'hello', replacement: 'hi', enabled: true },
{ phrase: 'world', replacement: 'planet', enabled: true }
];

/**
* Modify the original text based on the defined modified words.
*
* @param {string} originalText - The original text to be modified.
* @returns {string} The modified text.
*/
function modifyText(originalText) {
ChatLib.chat(originalText);
let modifiedText = originalText;

for (const word of modifiedWords) {
if (word.enabled) {
modifiedText = modifiedText.replace(new RegExp(word.phrase, 'gi'), word.replacement);
}
}

return modifiedText;
}

export default ASM => {
const { desc, L, OBJECT, JumpCondition, BOOLEAN } = ASM;

print("Start Test");

ASM.injectBuilder(
'net/minecraft/client/gui/FontRenderer',
'renderStringAtPos',
desc("Ljava/lang/String;", "FFIZLnet/minecraft/client/renderer/Matrix4f;Lnet/minecraft/client/renderer/IRenderTypeBuffer;ZII)V"),
ASM.At(ASM.At.HEAD)
)
.instructions($ => {
$.aload(0);
$.invokeJS("modifyText");
const result = $.astore();

// Check if the result is undefined to prevent crashes
$.aload(result.index);
$.instanceof('org/mozilla/javascript/Undefined');
$.ifClause([JumpCondition.TRUE], $ => {
$.return();
});
})
.execute();

print("End Test");
};
12 changes: 11 additions & 1 deletion changelog.json
@@ -1,3 +1,13 @@
[
"- TBD"
"- Added option to render overlay background",
"- Added choco egg timers",
"- Added `/viewrecipe` button in GUI",
"- Changed egg waypoints to dissapear on loot",
"- Changed `/pesttp` detection",
"- Changed garden box to be red/green if pests/spray",
"- Changed pest alert to be slider",
"- Changed some utils",
"- Fixed overlay width being off on bold",
"- Fixed some overlay settings/displays",
"- Fixed overlay death"
]
32 changes: 32 additions & 0 deletions docs/_posts/2024-04-28-v2_9_4.md
@@ -0,0 +1,32 @@
---
layout: post
title: v2.9.4 Temporarily
gh-repo: zhenga8533/VolcAddons
gh-badge: [star, fork, follow]
tags: [release]
comments: true
author: Volcaronitee
---

## [Changelog](https://github.com/zhenga8533/VolcAddons/releases/tag/v2.9.4) (download by clicking [here](https://github.com/zhenga8533/VolcAddons/releases/download/v2.9.4/VolcAddons.zip))

{: .box-note}
#### New Features
- Added option to render overlay background
- Added choco egg timers
- Added `/viewrecipe` button in GUI

{: .box-warning}
#### Changes/Fixes
- Changed egg waypoints to dissapear on loot
- Changed `/pesttp` detection
- Changed garden box to be red/green if pests/spray
- Changed pest alert to be slider
- Changed some utils
- Fixed overlay width being off on bold
- Fixed some overlay settings/displays
- Fixed overlay death

{: .box-error}
#### Deprecated
- None!
2 changes: 2 additions & 0 deletions docs/features.md
Expand Up @@ -14,6 +14,7 @@ subtitle: List of all features and their related commands.
- Render Waypoint
- Skill Tracker (`/moveSkills`, `/resetSkills`)
- **Inventory**
- Recipe Hotkey
- Searchbar (`/moveSearch`)
- Slot Binding (`/<save, delete, list, load, reset>Binds [key]`)
- Wardrobe Hotkeys
Expand Down Expand Up @@ -117,6 +118,7 @@ subtitle: List of all features and their related commands.
- **Chocolate Factory**
- Chocolate Overlay
- Egg Announce
- Egg Timers
- Egg Waypoints
- Worker Highlight
- **Great Spook**
Expand Down
17 changes: 10 additions & 7 deletions features/combat/ComboDisplay.js
Expand Up @@ -13,17 +13,20 @@ const comboExample =
${DARK_GRAY}+${GOLD}420 coins per kill
${DARK_AQUA}+911☯ Combat Wisdom`;
const comboOverlay = new Overlay("comboDisplay", ["all"], () => true, data.WL, "moveCombo", comboExample);
comboOverlay.message = "";
comboOverlay.setMessage("");
let stats = ["", 0, 0, 0];

/**
* Resets and updates overlay message to match stats.
*/
function updateOverlay() {
comboOverlay.message = stats[0];
if (stats[1] !== 0) comboOverlay.message += `\n${AQUA}+${stats[1]}✯ Magic Find`;
if (stats[2] !== 0) comboOverlay.message += `\n${DARK_AQUA}+${stats[2]}☯ Combat Wisdom`;
if (stats[3] !== 0) comboOverlay.message += `\n${DARK_GRAY}+${GOLD + stats[3]} coins per kill`;
let comboMessage = '';
comboMessage = stats[0];
if (stats[1] !== 0) comboMessage += `\n${AQUA}+${stats[1]}✯ Magic Find`;
if (stats[2] !== 0) comboMessage += `\n${DARK_AQUA}+${stats[2]}☯ Combat Wisdom`;
if (stats[3] !== 0) comboMessage += `\n${DARK_GRAY}+${GOLD + stats[3]} coins per kill`;

comboOverlay.setMessage(comboMessage);
}

/**
Expand Down Expand Up @@ -54,9 +57,9 @@ registerWhen(register("chat", (color, kills) => {
*/
registerWhen(register("chat", () => {
stats = ["", 0, 0, 0];
comboOverlay.message = "";
comboOverlay.setMessage("");
}).setCriteria("Your Kill Combo has expired! You reached a ${kills} Kill Combo!"), () => settings.comboDisplay);
registerWhen(register("worldUnload", () => {
stats = ["", 0, 0, 0];
comboOverlay.message = "";
comboOverlay.setMessage("");
}), () => settings.comboDisplay);
14 changes: 7 additions & 7 deletions features/combat/EntityDetect.js
@@ -1,10 +1,10 @@
import location from "../../utils/location"
import settings from "../../utils/settings";
import { AMOGUS, BOLD, GRAY, DARK_RED, GREEN, RED, WHITE, SMA, SPIDER_CLASS, EntityArmorStand } from "../../utils/constants";
import { convertToPascalCase, getTime, unformatNumber } from "../../utils/functions/format";
import { playSound } from "../../utils/functions/misc";
import { Overlay } from "../../utils/overlay";
import { data, registerWhen } from "../../utils/variables";
import { getServer, getWorld } from "../../utils/worlds";
import { Hitbox, renderEntities } from "../../utils/waypoints";


Expand Down Expand Up @@ -171,7 +171,7 @@ const broodmotherExample = `${GRAY + BOLD}Next Spawn: ${RED}???`;
const broodmotherOverlay = new Overlay("broodmotherDetect", ["Spider's Den"], () => true, data.DL, "moveBrood", broodmotherExample);
const broodLobbies = {};
registerWhen(register("step", () => {
const server = getServer();
const server = location.getServer();
if (nextSpawn === 0) {
nextSpawn = broodLobbies[server] ?? 0;
const broodmother = World.getAllEntitiesOfType(SPIDER_CLASS)
Expand All @@ -183,18 +183,18 @@ registerWhen(register("step", () => {
} else {
nextSpawn--;
if (nextSpawn === 0) {
broodmotherOverlay.message = `${GRAY + BOLD}Next Spawn: ${GREEN}Soon TM`;
broodmotherOverlay.setMessage(`${GRAY + BOLD}Next Spawn: ${GREEN}Soon TM`);
Client.showTitle("", `${RED}Broodmother Spawning Soon!`, 0, 25, 5);
if (server in broodLobbies) delete broodLobbies[server];
} else broodmotherOverlay.message = `${GRAY + BOLD}Next Spawn: ${WHITE + getTime(nextSpawn)}`;
} else broodmotherOverlay.setMessage(`${GRAY + BOLD}Next Spawn: ${WHITE + getTime(nextSpawn)}`);
}
}).setFps(1), () => settings.broodmotherDetect);

/**
* World timer of world leave.
*/
registerWhen(register("worldUnload", () => {
broodLobbies[getServer()] = nextSpawn;
broodLobbies[location.getServer()] = nextSpawn;
nextSpawn = 0;
broodmotherOverlay.message = `${GRAY + BOLD}Next Spawn: ${RED}???`;
}), () => getWorld() === "Spider's Den" && settings.broodmotherDetect);
broodmotherOverlay.setMessage(`${GRAY + BOLD}Next Spawn: ${RED}???`);
}), () => location.getWorld() === "Spider's Den" && settings.broodmotherDetect);
4 changes: 2 additions & 2 deletions features/combat/GyroTimer.js
Expand Up @@ -31,8 +31,8 @@ registerWhen(register("tick", () => {
if (settings.gyroAlert && align > 0.5 && align < 1 && cd === 0)
Client.showTitle(`${DARK_RED + BOLD}USE ALIGN`, "", 0, 25, 5);
align = (align - 0.05).toFixed(2);
gyroOverlay.message = `${GREEN + BOLD}Align Timer: ${RESET + align}s`;
} else gyroOverlay.message = `${GREEN + BOLD}Align Timer: ${RED}NO ALIGN`;
gyroOverlay.setMessage(`${GREEN + BOLD}Align Timer: ${RESET + align}s`);
} else gyroOverlay.setMessage(`${GREEN + BOLD}Align Timer: ${RED}NO ALIGN`);

if (cd > 0) cd = (cd - 0.05).toFixed(2);
}), () => settings.gyroAlert || settings.gyroTimer);
8 changes: 4 additions & 4 deletions features/combat/KillCounter.js
Expand Up @@ -25,7 +25,7 @@ ${RED + BOLD}ゴウセル: ${RESET}0^0
${DARK_RED + BOLD}Total Kills: ${RESET}∞^∞
${DARK_RED + BOLD}Time Passed: ${RESET}-∞`;
const counterOverlay = new Overlay("killCounter", ["all"], () => true, data.JL, "moveKills", counterExample);
counterOverlay.message = "";
counterOverlay.setMessage("");

function updateCounter() {
// Sort the mobs object
Expand All @@ -38,9 +38,9 @@ function updateCounter() {
return `${RED + BOLD + mob}: ${RESET + formatNumber(kills) + GRAY} (${formatNumber(kills / time * 3600)}/hr)`;
});

counterOverlay.message = messageLines.join('\n') +
counterOverlay.setMessage(messageLines.join('\n') +
`\n\n${DARK_RED + BOLD}Total Kills: ${RESET + formatNumber(total) + GRAY} (${formatNumber(total / time * 3600)}/hr)` +
`\n${DARK_RED + BOLD}Time Passed: ${RESET + getTime(time)}`;
`\n${DARK_RED + BOLD}Time Passed: ${RESET + getTime(time)}`);
}

/**
Expand Down Expand Up @@ -104,6 +104,6 @@ register("command", () => {
mobs = {}
total = 0;
time = 0;
counterOverlay.message = "";
counterOverlay.setMessage("");
ChatLib.chat(`${LOGO + GREEN}Successfully reset kill counter!`)
}).setName("resetKills");
4 changes: 2 additions & 2 deletions features/combat/SlayerDetect.js
@@ -1,11 +1,11 @@
import location from "../../utils/location";
import settings from "../../utils/settings";
import { BLAZE_CLASS, BOLD, DARK_GREEN, ENDERMAN_CLASS, GREEN, RED, SMA, SPIDER_CLASS, WHITE, WOLF_CLASS, ZOMBIE_CLASS } from "../../utils/constants";
import { romanToNum } from "../../utils/functions/format";
import { announceMob } from "../../utils/functions/misc";
import { delay } from "../../utils/thread";
import { registerWhen } from "../../utils/variables";
import { Hitbox, renderEntities } from "../../utils/waypoints";
import { getWorld } from "../../utils/worlds";


/**
Expand Down Expand Up @@ -57,7 +57,7 @@ registerWhen(register("tick", () => {
if (settings.bossAlert === 3) Client.showTitle(`${RED + BOLD}SLAYER BOSS SPAWNED!`, "", 5, 25, 5);
else if (settings.bossAlert !== 0) announceMob(settings.bossAlert, "Boss Slayer", Player.getX(), Player.getY(), Player.getZ());
}), () => settings.bossAlert !== 0 || settings.slayerSpawn !== 0 ||
(getWorld() === "The Rift" && (settings.vampireAttack || settings.announceMania)));
(location.getWorld() === "The Rift" && (settings.vampireAttack || settings.announceMania)));

/**
* Close to spawn alert
Expand Down
12 changes: 6 additions & 6 deletions features/crimsonIsle/GoldenFishTimer.js
@@ -1,9 +1,9 @@
import location from "../../utils/location";
import settings from "../../utils/settings"
import { BOLD, DARK_RED, GOLD, RESET, WHITE } from "../../utils/constants";
import { getTime } from "../../utils/functions/format";
import { Overlay } from "../../utils/overlay";
import { data, registerWhen } from "../../utils/variables";
import { getWorld } from "../../utils/worlds";


/**
Expand All @@ -25,10 +25,10 @@ registerWhen(register("step", () => {
if (lastCast > 270)
lastFish = 0;

fishOverlay.message =
fishOverlay.setMessage(
`${GOLD + BOLD}Last Cast: ${lastCast > 240 ? DARK_RED : WHITE + getTime(lastCast)}
${GOLD + BOLD}Last Fish: ${RESET + getTime(lastCast > 270 ? 0 : lastFish)}`
}).setFps(1), () => getWorld() === "Crimson Isle" && settings.goldenFishAlert);
${GOLD + BOLD}Last Fish: ${RESET + getTime(lastCast > 270 ? 0 : lastFish)}`);
}).setFps(1), () => location.getWorld() === "Crimson Isle" && settings.goldenFishAlert);

/**
* Resets "lastCast" variable whenever player right clicks with a fishing rod in hand.
Expand All @@ -38,12 +38,12 @@ registerWhen(register("clicked", (x, y, button, state) => {

if (Player.getHeldItem().getNBT().getCompoundTag("tag").getCompoundTag("ExtraAttributes").getString("id").includes("ROD"))
lastCast = 0;
}), () => getWorld() === "Crimson Isle" && settings.goldenFishAlert);
}), () => location.getWorld() === "Crimson Isle" && settings.goldenFishAlert);

/**
* Resets "lastFish" variable whenever the Golden Fish message appears in chat.
*/
registerWhen(register("chat", () => {
lastFish = 0;
}).setCriteria("You spot a Golden Fish surface from beneath the lava!"),
() => getWorld() === "Crimson Isle" && settings.goldenFishAlert);
() => location.getWorld() === "Crimson Isle" && settings.goldenFishAlert);
10 changes: 5 additions & 5 deletions features/crimsonIsle/MythicDetect.js
@@ -1,9 +1,9 @@
import location from "../../utils/location";
import settings from "../../utils/settings";
import { BOLD, DARK_BLUE, DARK_RED, GOLEM_CLASS, GUARDIAN_CLASS, RED, WHITE } from "../../utils/constants";
import { announceMob } from "../../utils/functions/misc";
import { data, registerWhen } from "../../utils/variables";
import { Hitbox, renderEntities } from "../../utils/waypoints";
import { getWorld } from "../../utils/worlds";


/**
Expand All @@ -12,11 +12,11 @@ import { getWorld } from "../../utils/worlds";
registerWhen(register("chat", () => {
announceMob(settings.mythicLavaAnnounce, "Lord Jawbus", Player.getX(), Player.getY(), Player.getZ());
}).setCriteria("You have angered a legendary creature... Lord Jawbus has arrived."),
() => getWorld() === "Crimson Isle" && settings.mythicLavaAnnounce !== 0);
() => location.getWorld() === "Crimson Isle" && settings.mythicLavaAnnounce !== 0);
registerWhen(register("chat", () => {
announceMob(settings.mythicLavaAnnounce, "Thunder", Player.getX(), Player.getY(), Player.getZ());
}).setCriteria("You hear a massive rumble as Thunder emerges."),
() => getWorld() === "Crimson Isle" && settings.mythicLavaAnnounce !== 0);
() => location.getWorld() === "Crimson Isle" && settings.mythicLavaAnnounce !== 0);

/**
* Detects if any mythic lava creatures are near the player.
Expand All @@ -41,8 +41,8 @@ registerWhen(register("step", () => {

if (!data.moblist.includes("thunder")) thunders = [];
}
}).setFps(2), () => getWorld() === "Crimson Isle" && settings.mythicLavaDetect);
new Hitbox(() => getWorld() === "Crimson Isle" && settings.mythicLavaDetect, (pt) => {
}).setFps(2), () => location.getWorld() === "Crimson Isle" && settings.mythicLavaDetect);
new Hitbox(() => location.getWorld() === "Crimson Isle" && settings.mythicLavaDetect, (pt) => {
renderEntities(jawbussy, 0.55, 0, 0, pt, "Jawbussy");
renderEntities(thunders, 0, 0, 0.55, pt, "T1 Zeus");
});
Expand Down
14 changes: 7 additions & 7 deletions features/crimsonIsle/TrophyCounter.js
@@ -1,9 +1,9 @@
import location from "../../utils/location";
import settings from "../../utils/settings";
import { AQUA, BLUE, BOLD, DARK_AQUA, DARK_GRAY, DARK_PURPLE, GOLD, GRAY, GREEN, LOGO, WHITE } from "../../utils/constants";
import { convertToTitleCase } from "../../utils/functions/format";
import { Overlay } from "../../utils/overlay";
import { data, getPaused, registerWhen } from "../../utils/variables";
import { getWorld } from "../../utils/worlds";


/**
Expand All @@ -30,7 +30,7 @@ const trophyExample =
&5Soul Fish&f: &373 &850 &720 &61 &b2
&5Moldfin&f: &360 &837 &721 &61 &b1`;
const trophyOverlay = new Overlay("trophyCounter", ["Crimson Isle"], () => true, data.FL, "moveTrophy", trophyExample);
trophyOverlay.message = "";
trophyOverlay.setMessage("");

/**
* Variables used for formatting
Expand Down Expand Up @@ -77,7 +77,7 @@ let timePassed = 0;
register("command", () => {
sessionTrophy = {};
timePassed = 0;
trophyOverlay.message = "";
trophyOverlay.setMessage("");
ChatLib.chat(`${LOGO + GREEN}Successfully reset trophy fish counter!`);
}).setName("resetTrophy");

Expand All @@ -95,7 +95,7 @@ function updateMessage() {
return sorted;
}, []);

if (sortedTrophy.length != 0) trophyOverlay.message = `${GOLD + BOLD}Trophy Fishing:\n${sortedTrophy.join("\n")}`;
if (sortedTrophy.length != 0) trophyOverlay.setMessage(`${GOLD + BOLD}Trophy Fishing:\n${sortedTrophy.join("\n")}`);
}

/**
Expand All @@ -121,11 +121,11 @@ function updateCounter(fish) {
*/
registerWhen(register("chat", (fish) => {
updateCounter(fish);
}).setCriteria("TROPHY FISH! You caught a ${fish}."), () => getWorld() === "Crimson Isle" && settings.trophyCounter);
}).setCriteria("TROPHY FISH! You caught a ${fish}."), () => location.getWorld() === "Crimson Isle" && settings.trophyCounter);

registerWhen(register("chat", (fish) => {
updateCounter(fish);
}).setCriteria("NEW DISCOVERY: ${fish}"), () => getWorld() === "Crimson Isle" && settings.trophyCounter);
}).setCriteria("NEW DISCOVERY: ${fish}"), () => location.getWorld() === "Crimson Isle" && settings.trophyCounter);

/**
* Update time for session view
Expand All @@ -134,4 +134,4 @@ registerWhen(register("step", () => {
if (getPaused()) return;
if (Object.keys(sessionTrophy).length !== 0) timePassed++;
updateMessage();
}).setFps(1), () => getWorld() === "Crimson Isle" && settings.trophyCounter);
}).setFps(1), () => location.getWorld() === "Crimson Isle" && settings.trophyCounter);

0 comments on commit 17e2f3d

Please sign in to comment.