-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
сливаю обоссаный аб но робит вроде
Код:
package im.expensive.functions.impl.misc;
import com.google.common.eventbus.Subscribe;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import im.expensive.events.EventUpdate;
import im.expensive.functions.api.Category;
import im.expensive.functions.api.Function;
import im.expensive.functions.api.FunctionRegister;
import im.expensive.functions.settings.impl.ModeSetting;
import im.expensive.functions.settings.impl.SliderSetting;
import im.expensive.utils.math.StopWatch;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.container.ChestContainer;
import net.minecraft.inventory.container.ClickType;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.nbt.ListNBT;
import net.minecraft.util.text.StringTextComponent;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
@FunctionRegister(name = "AutoBuy",type = Category.Misc)
public class AutoBuyFT extends Function {
private final ModeSetting mode = new ModeSetting("Способ лута", "Обычный", "Обычный", "Рандом");
private final ModeSetting bigdick = new ModeSetting("Лутать", "Низ/Вверх", "Низ/Вверх", "Вверх/Низ");
private final SliderSetting stealDelay = new SliderSetting("Скорость лута", 80, 0, 150, 1);
public AutoBuyFT() {
}
final StopWatch stopWatch = new StopWatch();
final List<Item> ingotItemList = List.of(
Items.NAUTILUS_SHELL,
Items.PHANTOM_MEMBRANE
);
@Subscribe
public void onUpdate(EventUpdate e) {
switch (mode.getIndex()) {
case 0: {
if (mc.player.openContainer instanceof ChestContainer container) {
IInventory lowerChestInventory = container.getLowerChestInventory();
int size = lowerChestInventory.getSizeInventory();
if (bigdick.is("Низ/Вверх")) {
for (int index = size - 1; index >= 0; index--) {
ItemStack stack = lowerChestInventory.getStackInSlot(index);
if (!shouldMoveItem(container, index)) {
continue;
}
if (isContainerEmpty(stack)) {
continue;
}
if (stealDelay.get() == 0.0f) {
moveItem(container, index, size);
} else {
if (stopWatch.isReached(stealDelay.get().longValue())) {
mc.playerController.windowClick(container.windowId, index, 0, ClickType.QUICK_MOVE, mc.player);
stopWatch.reset();
}
}
}
} else {
for (int index = 0; index < size; index++) {
ItemStack stack = lowerChestInventory.getStackInSlot(index);
if (!shouldMoveItem(container, index)) {
continue;
}
if (isContainerEmpty(stack)) {
continue;
}
if (stealDelay.get() == 0.0f) {
moveItem(container, index, size);
} else {
if (stopWatch.isReached(stealDelay.get().longValue())) {
mc.playerController.windowClick(container.windowId, index, 0, ClickType.QUICK_MOVE, mc.player);
stopWatch.reset();
}
}
}
}
}
break;
}
case 1: {
if (mc.player.openContainer instanceof ChestContainer container) {
IInventory lowerChestInventory = container.getLowerChestInventory();
List<Integer> availableSlots = new ArrayList<>();
for (int index = 0; index < lowerChestInventory.getSizeInventory(); ++index) {
ItemStack stack = lowerChestInventory.getStackInSlot(index);
if (!shouldMoveItem(container, index)) {
continue;
}
if (isContainerEmpty(stack)) {
continue;
}
availableSlots.add(index);
}
if (!availableSlots.isEmpty()) {
int randomIndex = availableSlots.get(new Random().nextInt(availableSlots.size()));
if (stealDelay.get().longValue() == 0.0f) {
moveItem(container, randomIndex, lowerChestInventory.getSizeInventory());
} else {
if (stopWatch.isReached(stealDelay.get().longValue())) {
mc.playerController.windowClick(container.windowId, randomIndex, 0, ClickType.QUICK_MOVE, mc.player);
stopWatch.reset();
}
}
}
break;
}
}
}
}
private boolean shouldMoveItem(ChestContainer container, int index) {
ItemStack itemStack = container.getLowerChestInventory().getStackInSlot(index);
return itemStack.getItem() != Item.getItemById(0);
}
private void moveItem(ChestContainer container, int index, int multi) {
for (int i = 0; i < multi; i++) {
mc.playerController.windowClick(container.windowId, index + i, 0, ClickType.QUICK_MOVE, mc.player);
ItemStack itemStack = container.getLowerChestInventory().getStackInSlot(index + i);
mc.player.sendMessage(new StringTextComponent("Слутан предмет: " + itemStack.getDisplayName().getString()), mc.player.getUniqueID());
}
}
public boolean ListItem(ItemStack itemStack) {
Item item = itemStack.getItem();
int price = extractPriceFromStack(itemStack);
return (ingotItemList.contains(item)
|| item == Items.NAUTILUS_SHELL
|| item == Items.GRAY_DYE
|| item == Items.GUNPOWDER
|| item == Items.PHANTOM_MEMBRANE
|| (item == Items.STONE && price == 10000)
);
}
private boolean isContainerEmpty(ItemStack stack) {
return !ListItem(stack);
}
protected int extractPriceFromStack(ItemStack stack) {
CompoundNBT tag = stack.getTag();
if (tag != null && tag.contains("display", 10)) {
CompoundNBT display = tag.getCompound("display");
if (display.contains("Lore", 9)) {
ListNBT lore = display.getList("Lore", 8);
for (int j = 0; j < lore.size(); ++j) {
JsonObject object = JsonParser.parseString(lore.getString(j)).getAsJsonObject();
if (object.has("extra")) {
JsonArray array = object.getAsJsonArray("extra");
if (array.size() > 2) {
JsonObject title = array.get(1).getAsJsonObject();
if (title.get("text").getAsString().trim().toLowerCase().contains("цена")) {
try {
String line = array.get(2).getAsJsonObject().get("text").getAsString().trim().substring(1).replaceAll(" ", "");
return Integer.parseInt(line);
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
}
}
}
}
}
return -1; // Если цена не найдена
}
}