-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Это вам на 8 марта
Это утилка вам
AutoArmor:
package nw.s394xd.features.impl.combat;
import com.google.common.eventbus.Subscribe;
import nw.s394xd.events.Event;
import nw.s394xd.events.impl.player.EventUpdate;
import nw.s394xd.features.Category;
import nw.s394xd.features.Feature;
import nw.s394xd.features.FeatureInfo;
import nw.s394xd.features.settings.impl.SliderSetting;
import nw.s394xd.utils.math.StopWatch;
import nw.s394xd.utils.movement.MoveUtil;
import lombok.AccessLevel;
import lombok.experimental.FieldDefaults;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.enchantment.Enchantments;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.inventory.container.ClickType;
import net.minecraft.item.ArmorItem;
import net.minecraft.item.IArmorMaterial;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@FieldDefaults(level = AccessLevel.PRIVATE)
@FeatureInfo(name = "AutoArmor", type = Category.Combat)
public class AutoArmor extends Feature {
final SliderSetting delay = new SliderSetting("Задержка", 100.0f, 0.0f, 1000.0f, 1.0f);
final StopWatch stopWatch = new StopWatch();
public AutoArmor() {
addSettings(delay);
}
@Subscribe
private void onUpdate(EventUpdate event) {
if (MoveUtil.isMoving()) {
return;
}
PlayerInventory inventoryPlayer = AutoArmor.mc.player.inventory;
int[] bestIndexes = new int[4];
int[] bestValues = new int[4];
for (int i = 0; i < 4; ++i) {
bestIndexes[i] = -1;
ItemStack stack = inventoryPlayer.armorItemInSlot(i);
if (!isItemValid(stack) || !(stack.getItem() instanceof ArmorItem armorItem)) {
continue;
}
bestValues[i] = calculateArmorValue(armorItem, stack);
}
for (int i = 0; i < 36; ++i) {
Item item;
ItemStack stack = inventoryPlayer.getStackInSlot(i);
if (!isItemValid(stack) || !((item = stack.getItem()) instanceof ArmorItem)) continue;
ArmorItem armorItem = (ArmorItem) item;
int armorTypeIndex = armorItem.getSlot().getIndex();
int value = calculateArmorValue(armorItem, stack);
if (value <= bestValues[armorTypeIndex]) continue;
bestIndexes[armorTypeIndex] = i;
bestValues[armorTypeIndex] = value;
}
ArrayList<Integer> randomIndexes = new ArrayList<>(Arrays.asList(0, 1, 2, 3));
Collections.shuffle(randomIndexes);
for (int index : randomIndexes) {
int bestIndex = bestIndexes[index];
if (bestIndex == -1 || (isItemValid(inventoryPlayer.armorItemInSlot(index)) && inventoryPlayer.getFirstEmptyStack() == -1))
continue;
if (bestIndex < 9) {
bestIndex += 36;
}
if (!this.stopWatch.isReached(this.delay.getValue().longValue())) break;
ItemStack armorItemStack = inventoryPlayer.armorItemInSlot(index);
if (isItemValid(armorItemStack)) {
AutoArmor.mc.playerController.windowClick(0, 8 - index, 0, ClickType.QUICK_MOVE, AutoArmor.mc.player);
}
AutoArmor.mc.playerController.windowClick(0, bestIndex, 0, ClickType.QUICK_MOVE, AutoArmor.mc.player);
this.stopWatch.reset();
break;
}
}
private boolean isItemValid(ItemStack stack) {
return stack != null && !stack.isEmpty();
}
private int calculateArmorValue(final ArmorItem armor, final ItemStack stack) {
final int protectionLevel = EnchantmentHelper.getEnchantmentLevel(Enchantments.PROTECTION, stack);
final IArmorMaterial armorMaterial = armor.getArmorMaterial();
final int damageReductionAmount = armorMaterial.getDamageReductionAmount(armor.getEquipmentSlot());
return ((armor.getDamageReduceAmount() * 20 + protectionLevel * 12 + (int) (armor.getToughness() * 2) + damageReductionAmount * 5) >> 3);
}
@Override
public void onEvent(final Event event) {
if (event instanceof EventUpdate) {
onUpdate((EventUpdate) event);
}
}
}
StopwlWatch:
package nw.s394xd.utils.math;
import lombok.Getter;
public class StopWatch {
[USER=270918]@Getter[/USER]
public long lastMS = System.currentTimeMillis();
public void reset() {
lastMS = System.currentTimeMillis();
}
public boolean isReached(long time) {
return System.currentTimeMillis() - lastMS > time;
}
public void setLastMS(long newValue) {
lastMS = System.currentTimeMillis() + newValue;
}
public void setTime(long time) {
lastMS = time;
}
public long getTime() {
return System.currentTimeMillis() - lastMS;
}
public boolean isRunning() {
return System.currentTimeMillis() - lastMS <= 0;
}
public boolean hasTimeElapsed() {
return lastMS < System.currentTimeMillis();
}
}