mirror of https://github.com/kami-blue/client
[feature] Use durability instead of percentage for ElytraReplace
Closes #1659 Signed-off-by: Dominika <sokolov.dominika@gmail.com>
This commit is contained in:
parent
d74e65afb4
commit
dd673b0058
|
@ -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))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue