[feature] Use durability instead of percentage for ElytraReplace

Closes #1659

Signed-off-by: Dominika <sokolov.dominika@gmail.com>
This commit is contained in:
Dominika 2020-12-03 19:32:39 -05:00
parent d74e65afb4
commit dd673b0058
No known key found for this signature in database
GPG Key ID: B4A5A6DCA70F861F
1 changed files with 19 additions and 19 deletions

View File

@ -26,7 +26,7 @@ object ElytraReplace : Module() {
private val logToChat = register(Settings.booleanBuilder("MissingWarning").withValue(false)) private val logToChat = register(Settings.booleanBuilder("MissingWarning").withValue(false))
private val playSound = register(Settings.booleanBuilder("PlaySound").withValue(false).withVisibility { logToChat.value }) private val playSound = register(Settings.booleanBuilder("PlaySound").withValue(false).withVisibility { logToChat.value })
private val logThreshold = register(Settings.integerBuilder("WarningThreshold").withValue(2).withRange(1, 10).withVisibility { logToChat.value }) private val logThreshold = register(Settings.integerBuilder("WarningThreshold").withValue(2).withRange(1, 10).withVisibility { logToChat.value })
private val threshold = register(Settings.integerBuilder("Broken%").withValue(7).withRange(1, 50).withStep(1)) private val threshold = register(Settings.integerBuilder("DamageThreshold").withValue(20).withRange(1, 200).withStep(1))
private var elytraCount = 0 private var elytraCount = 0
private var chestPlateCount = 0 private var chestPlateCount = 0
@ -49,13 +49,13 @@ object ElytraReplace : Module() {
} else if (shouldAttemptElytraSwap()) { } else if (shouldAttemptElytraSwap()) {
var shouldSwap = isCurrentElytraBroken() var shouldSwap = isCurrentElytraBroken()
if (autoChest.value) { if (autoChest.value) {
shouldSwap = shouldSwap || !(mc.player.inventory.armorInventory[2].getItem() === Items.ELYTRA) // if current elytra broken or no elytra found in chest area shouldSwap = shouldSwap || !(mc.player.inventory.armorInventory[2].item === Items.ELYTRA) // if current elytra broken or no elytra found in chest area
} }
if (shouldSwap) { if (shouldSwap) {
val success = swapToElytra() val success = swapToElytra()
if (success) { if (success) {
sendEquipNotif() sendEquipNotification()
} }
} }
} }
@ -67,13 +67,13 @@ object ElytraReplace : Module() {
chestPlateCount = 0 chestPlateCount = 0
for (i in 0..44) { for (i in 0..44) {
val stack = mc.player.inventory.getStackInSlot(i) val stack = mc.player.inventory.getStackInSlot(i)
if (stack.getItem() === Items.ELYTRA && !isItemBroken(stack)) { if (stack.item === Items.ELYTRA && !isItemBroken(stack)) {
elytraCount += 1 elytraCount += 1
if (!shouldSendFinalWarning) { // if we send the final warning but gained elytras afterwards - we can send the message again if (!shouldSendFinalWarning) { // if we send the final warning but gained elytras afterwards - we can send the message again
shouldSendFinalWarning = true shouldSendFinalWarning = true
} }
} else if (stack.getItem() is ItemArmor && !isItemBroken(stack)) { } else if (stack.item is ItemArmor && !isItemBroken(stack)) {
val armor = stack.getItem() as ItemArmor val armor = stack.item as ItemArmor
val armorType = armor.armorType.ordinal - 2 val armorType = armor.armorType.ordinal - 2
if (armorType == 2) { if (armorType == 2) {
chestPlateCount += 1 chestPlateCount += 1
@ -103,7 +103,7 @@ object ElytraReplace : Module() {
if (slot < 9) slot += 36 // hotbar is slots 0 to 8, convert the slot if it's hotbar if (slot < 9) slot += 36 // hotbar is slots 0 to 8, convert the slot if it's hotbar
if (mc.player.inventory.armorInventory[2].isEmpty()) { // place chest into empty chest slot if (mc.player.inventory.armorInventory[2].isEmpty) { // place chest into empty chest slot
mc.playerController.windowClick(0, slot, 0, ClickType.QUICK_MOVE, mc.player) mc.playerController.windowClick(0, slot, 0, ClickType.QUICK_MOVE, mc.player)
return return
} else { // swap chestplate from inventory with whatever you were wearing, if you're already wearing non-armor in chest slot } else { // swap chestplate from inventory with whatever you were wearing, if you're already wearing non-armor in chest slot
@ -133,7 +133,7 @@ object ElytraReplace : Module() {
if (slot < 9) slot += 36 // hotbar is slots 0 to 8, convert the slot if it's hotbar if (slot < 9) slot += 36 // hotbar is slots 0 to 8, convert the slot if it's hotbar
return if (mc.player.inventory.armorInventory[2].isEmpty()) { // place new elytra in empty chest slot return if (mc.player.inventory.armorInventory[2].isEmpty) { // place new elytra in empty chest slot
mc.playerController.windowClick(0, slot, 0, ClickType.QUICK_MOVE, mc.player) mc.playerController.windowClick(0, slot, 0, ClickType.QUICK_MOVE, mc.player)
true true
} else { // switch non-broken elytra with whatever was previously in the chest slot } else { // switch non-broken elytra with whatever was previously in the chest slot
@ -149,7 +149,7 @@ object ElytraReplace : Module() {
return if (mc.player.inventory.armorInventory[2].maxDamage == 0) { return if (mc.player.inventory.armorInventory[2].maxDamage == 0) {
false false
} else { } else {
(mc.player.inventory.armorInventory[2].getItem() === Items.ELYTRA) && (100 * mc.player.inventory.armorInventory[2].getItemDamage() / mc.player.inventory.armorInventory[2].maxDamage) + threshold.value >= 100 mc.player.inventory.armorInventory[2].item === Items.ELYTRA && isItemBroken(mc.player.inventory.armorInventory[2])
} }
} }
@ -161,15 +161,15 @@ object ElytraReplace : Module() {
// check armor slot first // check armor slot first
val chestArmor = mc.player.inventory.armorItemInSlot(2) val chestArmor = mc.player.inventory.armorItemInSlot(2)
if (chestArmor.getItem() is ItemArmor) { if (chestArmor.item is ItemArmor) {
bestArmorValue = (chestArmor.getItem() as ItemArmor).damageReduceAmount bestArmorValue = (chestArmor.item as ItemArmor).damageReduceAmount
} }
(0..35).forEach { slot -> (0..35).forEach { slot ->
val stack = mc.player.inventory.getStackInSlot(slot) val stack = mc.player.inventory.getStackInSlot(slot)
if (stack.getItem() !is ItemArmor) return@forEach if (stack.item !is ItemArmor) return@forEach
val armor = stack.getItem() as ItemArmor val armor = stack.item as ItemArmor
val armorType = armor.armorType.ordinal - 2 val armorType = armor.armorType.ordinal - 2
if (armorType != 2) return@forEach // not chestplate if (armorType != 2) return@forEach // not chestplate
@ -190,7 +190,7 @@ object ElytraReplace : Module() {
private fun getSlotOfNextElytra(): Int { private fun getSlotOfNextElytra(): Int {
(0..44).forEach { slot -> (0..44).forEach { slot ->
val stack = mc.player.inventory.getStackInSlot(slot) val stack = mc.player.inventory.getStackInSlot(slot)
if (stack.getItem() !is ItemElytra) return@forEach if (stack.item !is ItemElytra) return@forEach
if (stack.count > 1) return@forEach if (stack.count > 1) return@forEach
@ -205,7 +205,7 @@ object ElytraReplace : Module() {
return if (itemStack.maxDamage == 0) { return if (itemStack.maxDamage == 0) {
false false
} else { } else {
(100 * itemStack.getItemDamage() / itemStack.maxDamage) + threshold.value >= 100 itemStack.maxDamage - itemStack.itemDamage <= threshold.value
} }
} }
@ -217,12 +217,12 @@ object ElytraReplace : Module() {
return elytraCount.toString() return elytraCount.toString()
} }
private fun sendEquipNotif() { private fun sendEquipNotification() {
sendAlert() sendAlert()
if (logToChat.value && elytraCount == 1) { if (logToChat.value && elytraCount == 1) {
MessageSendHelper.sendChatMessage("$chatName You equipped your last elytra.") MessageSendHelper.sendChatMessage("$chatName You equipped your last elytra.")
} else if (logToChat.value && elytraCount <= logThreshold.value) { } else if (logToChat.value && elytraCount <= logThreshold.value) {
MessageSendHelper.sendChatMessage("$chatName You have $elytraCount elytras left.") MessageSendHelper.sendChatMessage("$chatName You have $elytraCount elytra(s) left.")
} }
} }
@ -244,13 +244,13 @@ object ElytraReplace : Module() {
private fun sendAlert() { private fun sendAlert() {
if (logToChat.value && playSound.value && (elytraCount <= logThreshold.value)) { if (logToChat.value && playSound.value && (elytraCount <= logThreshold.value)) {
mc.getSoundHandler().playSound(PositionedSoundRecord.getRecord(SoundEvents.ENTITY_EXPERIENCE_ORB_PICKUP, 1.0f, 1.0f)) mc.soundHandler.playSound(PositionedSoundRecord.getRecord(SoundEvents.ENTITY_EXPERIENCE_ORB_PICKUP, 1.0f, 1.0f))
} }
} }
private fun sendBadAlert() { private fun sendBadAlert() {
if (logToChat.value && playSound.value && (elytraCount <= logThreshold.value)) { if (logToChat.value && playSound.value && (elytraCount <= logThreshold.value)) {
mc.getSoundHandler().playSound(PositionedSoundRecord.getRecord(SoundEvents.ENTITY_EXPERIENCE_ORB_PICKUP, 0.4f, 1.0f)) mc.soundHandler.playSound(PositionedSoundRecord.getRecord(SoundEvents.ENTITY_EXPERIENCE_ORB_PICKUP, 0.4f, 1.0f))
} }
} }