Начинающий
-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Такой вот завоз умный AuctionHelper не срите меня онли на фт можите ограничитель на сервера убрать если надоможите
//By KaTrec
@FunctionRegister(name = "AuctionHelper", type = Category.misc) // Старая база моя exp 3.1 сам всё менял пытайтесь перепастить под обыч exp 3.1
public class AhHelper extends Function {
// Setting от KaTrec
private final BooleanSetting highlightCheapest = new BooleanSetting("Подсвечивать самый дешевый предмет", true);
private final BooleanSetting highlightNoThorns = new BooleanSetting("Подсвечивать броню без шипов", true);
private final BooleanSetting highlightThorns = new BooleanSetting("Подсвечивать предметы с шипами", true);
private final BooleanSetting enableCustomColors = new BooleanSetting("Использовать пользовательские цвета", true);
// Координаты слотов для подсветки
private float x1, y1, x2, y2, x3, y3;
public AhHelper() {
addSettings(highlightCheapest, highlightNoThorns, highlightThorns, enableCustomColors);
}
@Subscribe
public void onUpdate(EventUpdate event) {
if (!isFuntimeServer()) return; // Проверяет KaTrec, что игрок на сервере Funtime
if (mc.currentScreen instanceof ChestScreen screen) {
if (isAuctionScreen(screen)) {
updateHighlightedSlots(screen.getContainer());
} else {
resetCoordinates();
}
} else {
resetCoordinates();
}
}
private boolean isFuntimeServer() {
String serverIP = Expensive.getCurrentServerIP();
return serverIP != null && serverIP.toLowerCase().contains("mc.funtime.su");
}
private boolean isAuctionScreen(ChestScreen screen) {
String title = Expensive.getScreenTitle(screen);
return title != null && (title.toLowerCase().contains("Аукцион") || title.toLowerCase().contains("поиск:"));
}
private void updateHighlightedSlots(Container container) {
Slot cheapestSlot = null, noThornsSlot = null, thornsSlot = null;
int lowestPrice = Integer.MAX_VALUE, noThornsPrice = Integer.MAX_VALUE, thornsPrice = Integer.MAX_VALUE;
for (Slot slot : container.inventorySlots) {
if (slot.slotNumber > 44) continue; //
ItemStack stack = slot.getStack();
int price = extractPriceFromStack(stack);
if (price == -1) continue; //
boolean hasThorns = stack.isEnchanted() && hasThornsEnchantment(stack);
// Обрабатываем категории в зависимости от настроек
if (highlightCheapest.get() && price < lowestPrice) {
lowestPrice = price;
cheapestSlot = slot;
}
if (highlightNoThorns.get() && !hasThorns && isArmor(stack) && price < noThornsPrice) {
noThornsPrice = price;
noThornsSlot = slot;
}
if (highlightThorns.get() && hasThorns && price < thornsPrice) {
thornsPrice = price;
thornsSlot = slot;
}
}
//
if (cheapestSlot != null) setSlotCoordinates(cheapestSlot, 1);
if (noThornsSlot != null) setSlotCoordinates(noThornsSlot, 2);
if (thornsSlot != null) setSlotCoordinates(thornsSlot, 3);
}
private boolean hasThornsEnchantment(ItemStack stack) {
return Expensive.getTooltip(stack)
.stream()
.anyMatch(tooltip -> tooltip.toLowerCase().contains("шипы"));
}
private boolean isArmor(ItemStack stack) {
return Expensive.getItemTranslationKey(stack).toLowerCase().contains("armor");
}
private void setSlotCoordinates(Slot slot, int slotNumber) {
switch (slotNumber) {
case 1 -> { x1 = slot.xPos; y1 = slot.yPos; }
case 2 -> { x2 = slot.xPos; y2 = slot.yPos; }
case 3 -> { x3 = slot.xPos; y3 = slot.yPos; }
}
}
private void resetCoordinates() {
x1 = y1 = x2 = y2 = x3 = y3 = 0;
}
private int extractPriceFromStack(ItemStack stack) {
try {
List<String> lore = Expensive.getItemLore(stack);
for (String line : lore) {
if (line.contains("₽")) {
String priceText = line.substring(line.indexOf("₽") + 1).replaceAll(" ", "");
return Integer.parseInt(priceText);
}
}
} catch (Exception e) {
Expensive.logError("Ошибка при извлечении цены из ItemStack: " + e.getMessage());
}
return -1; // Цена не найдена
}
override
public void onRender() {
if (x1 != 0 || y1 != 0) drawSlotHighlight(x1, y1, 0x00FF00); // Зеленый (самый дешевый предмет)
if (x2 != 0 || y2 != 0) drawSlotHighlight(x2, y2, enableCustomColors.get() ? 0x0000FF : 0x00AAFF); // Синий (самая дешевая броня без Шипов)
if (x3 != 0 || y3 != 0) drawSlotHighlight(x3, y3, 0xAAAAAA); // Серый (самый дешевый предмет с Шипами)
}
private void drawSlotHighlight(float x, float y, int color) {
Expensive.drawRectangle(x, y, x + 16, y + 16, color);
}
}