aboutsummaryrefslogtreecommitdiff
path: root/features/specialMining/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'features/specialMining/index.js')
-rw-r--r--features/specialMining/index.js166
1 files changed, 159 insertions, 7 deletions
diff --git a/features/specialMining/index.js b/features/specialMining/index.js
index 7bd91be..e35388f 100644
--- a/features/specialMining/index.js
+++ b/features/specialMining/index.js
@@ -5,6 +5,7 @@ import HudTextElement from "../hud/HudTextElement";
import LocationSetting from "../settings/settingThings/location";
import ToggleSetting from "../settings/settingThings/toggle";
import { delay } from "../../utils/delayUtils";
+import TextSetting from "../settings/settingThings/textSetting";
import { drawBoxAtBlock, drawFilledBox } from "../../utils/renderUtils";
import RenderLib2D from "../../utils/renderLib2d";
@@ -16,6 +17,9 @@ class PowderAndScatha extends Feature {
onEnable() {
this.initVariables();
new SettingBase("Chest Miner", "Powder mining feature here are made mainly for powder chest grinding", undefined, "chest_mining_info", this);
+ this.compactedChat = new ToggleSetting("Compact Powder Messages", "same as the one in skytils but support following setting", false, "compact_powder_chat", this)
+ this.fixChatForDoublePowder = new ToggleSetting("Fix Chat Messages During Double Powder", "so it's the correct amount of powder you received during the event", false, "fix_chat_dpowder", this)
+ this.fixChatForDoublePowderSuffix = new TextSetting("Suffix of previous message", "(so you can tell )change it yourself!", "&a(&b2X Powder&a)", "chat_dpowder_suffix", this, "(none)", false).requires(this.fixChatForDoublePowder);
this.PowderElement = new ToggleSetting("Powder Mining Info Hud (MAIN TOGGLE)", "This will show your current powder mining section (only in CH)", true, "powder_mining_hud", this).contributor("EmeraldMerchant");
this.PowderOverlayElement = new HudTextElement()
.setText("")
@@ -35,8 +39,6 @@ class PowderAndScatha extends Feature {
this.hideWishingCompassMessage = new ToggleSetting("Wishing Compass Message Hider", "like: &r&aYou received &r&f1 &r&aWishing Compass&r&a.&r", false, "compass_message_hider", this).requires(this.PowderElement)
this.hideAscensionRope = new ToggleSetting("Ascension Rope Hider", "like: &r&aYou received &r&f1 &r&9Ascension Rope&r&a.&r", false, "ascension_rope_hider", this).requires(this.PowderElement)
- new SettingBase("SCATHA FEATURE TODO!", "This will come in a later date...", undefined, "scatha_todo", this);
-
this.registerChat("&r&aYou received ${thing}&r&a.&r", (thing, e) => {
if (this.hideGemstoneMessage.getValue() && thing.endsWith("Gemstone") && (this.showFlawlessGemstone.getValue() ? !thing.includes("Flawless") : true)) cancel(e)
if (this.hideWishingCompassMessage.getValue() && thing.endsWith("Wishing Compass")) cancel(e)
@@ -56,7 +58,6 @@ class PowderAndScatha extends Feature {
}
})
this.dPowder = 0;
- this.registerStep(true, 2, this.step2fps);
this.sL = Renderer.getStringWidth(" ")
this.overlayLeft = []
@@ -85,7 +86,6 @@ class PowderAndScatha extends Feature {
this.expRateInfo = []
this.mythrilRate = 0
this.gemstoneRate = 0
- //TODO if (!this.miningData.scatha) this.miningData.scatha = {}
this.saveMiningData();
this.registerCommand("resetpowderdata", () => {
@@ -120,13 +120,42 @@ class PowderAndScatha extends Feature {
this.gemstoneRate = (this.miningData.powder.gemstone - gemstone) / (Date.now() - time)
})
})
+
+ this.lastPowderReceived = { mithril: 0, gemstone: 0 }
+ this.lastPowderReceivedExecuted = false;
this.registerChat("&r&aYou received &r&b+${amount} &r&aMithril Powder&r", (amount, e) => {
- this.miningData.powder.mithril += (this.dPowder ? 2 : 1) * parseInt(amount)
+ let p = (this.dPowder ? 2 : 1) * parseInt(amount)
+ this.miningData.powder.mithril += p
+ if (this.compactedChat.getValue()) {
+ cancel(e)
+ this.lastPowderReceived.mithril += p
+ return
+ }
+ if (this.fixChatForDoublePowder.getValue() && this.dPowder) {
+ cancel(e)
+ let suffix = "";
+ if (this.fixChatForDoublePowderSuffix.getValue() !== "") suffix = this.fixChatForDoublePowderSuffix.getValue()
+ ChatLib.chat(`&r&aYou received &r&b+${2 * amount} &r&aMithril Powder&r ${suffix}`)
+ }
})
this.registerChat("&r&aYou received &r&b+${amount} &r&aGemstone Powder&r", (amount, e) => {
- this.miningData.powder.gemstone += (this.dPowder ? 2 : 1) * parseInt(amount)
+ let p = (this.dPowder ? 2 : 1) * parseInt(amount)
+ this.miningData.powder.gemstone += p
+ if (this.compactedChat.getValue()) {
+ cancel(e)
+ this.lastPowderReceived.gemstone += p
+ return
+ }
+ if (this.fixChatForDoublePowder.getValue() && this.dPowder) {
+ cancel(e)
+ let suffix = "";
+ if (this.fixChatForDoublePowderSuffix.getValue() !== "") suffix = this.fixChatForDoublePowderSuffix.getValue()
+ ChatLib.chat(`&r&aYou received &r&b+${2 * amount} &r&aGemstone Powder&r ${suffix}`)
+ }
})
+ this.registerStep(true, 5, this.compactPowderChat)
+
this.chests = new Map()
@@ -152,6 +181,45 @@ class PowderAndScatha extends Feature {
del.forEach(k => this.chests.delete(k))
})
this.registerEvent("spawnParticle", this.spawnParticle)
+
+ //==============================================Scatha=Feature=Below================================================================
+
+ if (!this.miningData.scatha) this.miningData.scatha = { total_worms: 0, worms: 0, scathas: 0, rare: 0, epic: 0, legandary: 0, since_scatha: 0, since_pet: 0 }
+ this.saveMiningData();
+
+ this.scathaMain = new ToggleSetting("SCATHA!", "This is the main toggle of Scatha Feature", false, "scatha_main", this);
+
+ this.scathaCounter = new ToggleSetting("Scatha Counter Hud", "This will show your scatha mining progress (only in CH)", false, "scatha_mining_hud", this).requires(this.scathaMain).contributor("EmeraldMerchant");
+ this.scathaCounterElement = new HudTextElement()
+ .setText("")
+ .setToggleSetting(this.scathaCounter)
+ .setLocationSetting(new LocationSetting("Scatha Counter Hud Location", "Allows you to edit the location of Scatha Counter Hud", "scatha_mining_hud_location", this, [10, 50, 1, 1]).requires(this.scathaCounter).editTempText(`&6Scatha Counter\n&bKills: 1,000\n&bWorms: 800\n&bScathas: 200\n&bSince Scatha: 10\n&9Rare Scatha Pets: 5\n&5Epic Scatha Pets: 3\n&6Leg Scatha Pets: 1\n&bSince Pet: 20`));
+ this.hudElements.push(this.scathaCounterElement);
+
+ new SettingBase("/scathaset <thing> <value>", "This command will change values in the counter", undefined, "scatha_cmd", this).requires(this.scathaMain);
+ new SettingBase("/ss <thing> <value> works too", "you can press TAB for <thing> auto-complete", undefined, "scatha_cmd2", this).requires(this.scathaMain);
+ this.scathaCmdComp = ["worms", "scathas", "rare", "epic", "legandary", "since_scatha", "since_pet"]
+ this.registerCommand("scathaset", (thing, value) => this.scathaCmd(thing, value), this.scathaCmdComp);
+ this.registerCommand("ss", (thing, value) => this.scathaCmd(thing, value), this.scathaCmdComp);
+
+ this.wormSpawnedWarn = new ToggleSetting("Worm/Scatha Spawned Alert", "make a title and a sound when a worm/scatha spawned", false, "worm_spawned_alert", this).requires(this.scathaMain);
+ this.registerChat("&r&7&oYou hear the sound of something approaching...&r", this.wormSpawning);
+ this.wormSpawnedChatMessage = new ToggleSetting("Worm/Scatha Spawned Chat Message", "if a chat info should be sent when a worm/scatha spawned", false, "worm_spawned_chat_message", this).requires(this.scathaMain);
+ this.petDroppedAlert = new ToggleSetting("Pet Dropped Alert", "Big title when a scatha pet dropped", false, "scatha_pet_dropped_alert", this).requires(this.scathaMain);
+ this.colorToRarity = { "&9": "rare", "&5": "epic", "&6": "legandary" }
+ this.registerChat("&r&6&lPET DROP! &r${rarity}Scatha &r&b(+${mf}% ✯ Magic Find!)&r", (rarity, mf, e) => {
+ let r = this.colorToRarity[rarity]
+ this.miningData.scatha[r]++
+ this.miningData.scatha.since_pet = 0
+ this.saveMiningData()
+ if (this.petDroppedAlert.getValue()) {
+ World.playSound('note.pling', 1, 1);
+ Client.showTitle(`${rarity}${r.toUpperCase()} SCATHA PET!`, ChatLib.getChatMessage(e), 0, 100, 10);
+ }
+ })
+
+ this.registerStep(true, 2, this.step2fps);
+ this.registerStep(true, 3, this.wormStep);
}
spawnParticle(particle, type, event) {
@@ -202,7 +270,7 @@ class PowderAndScatha extends Feature {
step2fps() {
if (!this.foundWither) {
World.getAllEntitiesOfType(net.minecraft.entity.boss.EntityWither)?.forEach(e => {
- if (e.getName().includes("§e§lPASSIVE EVENT §b§l2X POWDER §e§lRUNNING FOR §a§l")) {
+ if (e.getName().startsWith("§e§lPASSIVE EVENT §b§l2X POWDER §e§lRUNNING FOR §a§l")) {
this.dPowder = Date.now();
let time = ChatLib.removeFormatting(e.getName()).split("RUNNING FOR ").pop()
@@ -248,6 +316,89 @@ class PowderAndScatha extends Feature {
this.overlayRight.push(`&d${numberWithCommas(Math.round(this.gemstoneRate * 1000 * 60 * 60))}`)
}
}
+ if (this.scathaCounter.getValue() && this.inCrystalHollows) {
+ let tempText = `&6Scatha Counter\n&bKills: ${this.miningData.scatha.total_worms}\n&bWorms: ${this.miningData.scatha.worms}\n&bScathas: ${this.miningData.scatha.scathas}\n&bSince Scatha: ${this.miningData.scatha.since_scatha}\n`
+ if (this.miningData.scatha.rare > 0) tempText += `&9Rare Scatha Pets: ${this.miningData.scatha.rare}\n`
+ if (this.miningData.scatha.epic > 0) tempText += `&5Epic Scatha Pets: ${this.miningData.scatha.epic}\n`
+ if (this.miningData.scatha.legandary > 0) tempText += `&6Leg Scatha Pets: ${this.miningData.scatha.legandary}`
+ if (this.miningData.scatha.rare + this.miningData.scatha.epic + this.miningData.scatha.legandary > 0) tempText += `&bSince Pet: ${this.miningData.scatha.since_pet}`
+ this.scathaCounterElement.setText(tempText)
+ }
+ }
+
+ compactPowderChat() {
+ if (this.lastPowderReceived.mithril > 0 && this.lastPowderReceived.gemstone > 0 && !this.lastPowderReceivedExecuted) {
+ this.lastPowderReceivedExecuted = true
+ delay(300, () => {
+ let m = this.lastPowderReceived.mithril
+ let g = this.lastPowderReceived.gemstone
+ let msg = ""
+ if (g > 0) msg += `&r&aYou received &r&b+${g} &r&aGemstone `
+ if (m > 0) {
+ if (!msg) msg += `&r&aYou received &r&b+${m} &r&aMithril `
+ else msg += `and &r&b+${m} &r&aMithril `
+ }
+ msg += `Powder&r`
+ if (this.dPowder) {
+ let suffix = "";
+ if (this.fixChatForDoublePowderSuffix.getValue() !== "") suffix = this.fixChatForDoublePowderSuffix.getValue()
+ ChatLib.chat(`${msg} ${suffix}`)
+ } else ChatLib.chat(msg)
+ this.lastPowderReceived = { mithril: 0, gemstone: 0 }
+ this.lastPowderReceivedExecuted = false
+ })
+ }
+ }
+
+ scathaCmd(thing, value) {
+ if (!this.scathaCmdComp.includes(thing) || parseInt(value) === NaN) {
+ ChatLib.chat(this.FeatureManager.messagePrefix + "Invalid inputs! Usage: /scathaset <thing> <value>")
+ return
+ }
+ let v = parseInt(value);
+ this.miningData.scatha[thing] = v;
+ this.miningData.scatha.total_worms = this.miningData.scatha.worms + this.miningData.scatha.scathas
+ ChatLib.chat(this.FeatureManager.messagePrefix + "Successfully set " + thing + " to " + v + "!")
+ this.saveMiningData();
+ }
+
+ wormSpawning() {
+ if (this.wormSpawnedWarn.getValue()) {
+ World.playSound('note.pling', 1, 1);
+ Client.showTitle("&cWorm Spawning", "", 0, 20, 10);
+ this.wormSpawned = true
+ }
+ }
+
+ wormStep() {
+ if (!this.inCrystalHollows || !this.scathaMain.getValue()) {
+ this.scathaCounterElement.setText("")
+ return
+ }
+ if (!this.wormSpawned) return
+ World.getAllEntitiesOfType(net.minecraft.entity.item.EntityArmorStand).forEach(entity => {
+ let name = entity.getName()
+ //§8[§7Lv5§8] §cWorm§r §e5§c❤
+ if (name.startsWith("§8[§7Lv5§8] §cWorm")) {
+ if (this.wormSpawnedChatMessage.getValue()) ChatLib.chat("&c&lWorm Spawned. (Since Scatha: " + (this.miningData.scatha.since_scatha + 1) + ")");
+ if (this.wormSpawnedWarn.getValue()) Client.showTitle("&c&lWorm Spawned.", "", 0, 20, 10);
+ this.miningData.scatha.total_worms++;
+ this.miningData.scatha.worms++;
+ this.miningData.scatha.since_scatha++;
+ this.saveMiningData()
+ this.wormSpawned = false;
+ }
+ if (name.startsWith("§8[§7Lv10§8] §cScatha")) {
+ if (this.wormSpawnedChatMessage.getValue()) ChatLib.chat("&c&lScatha Spawned.");
+ if (this.wormSpawnedWarn.getValue()) Client.showTitle("&c&lScatha Spawned.", "", 0, 20, 10);
+ this.miningData.scatha.total_worms++;
+ this.miningData.scatha.scathas++;
+ this.miningData.scatha.since_pet++;
+ this.miningData.scatha.since_scatha = 0
+ this.saveMiningData()
+ this.wormSpawned = false;
+ }
+ });
}
initVariables() {
@@ -255,6 +406,7 @@ class PowderAndScatha extends Feature {
this.inCrystalHollows = false;
this.foundWither = true;
this.dPowder = 0;
+ this.wormSpawned = false;
}
onDisable() {