Исходник Вот вам 3 завоз ! EXP 3.1 ! AuctionHelper

Начинающий
Статус
Оффлайн
Регистрация
20 Апр 2023
Сообщения
54
Реакции[?]
1
Поинты[?]
1K

Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:

  • бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
  • маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
  • приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
  • обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.

Спасибо!

Такой вот завоз умный AuctionHelper не срите меня онли на фт можите ограничитель на сервера убрать если надоможите

  1. //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);
    }
    }

 
Начинающий
Статус
Оффлайн
Регистрация
20 Июн 2024
Сообщения
351
Реакции[?]
1
Поинты[?]
1K
Такой вот завоз умный AuctionHelper не срите меня онли на фт можите ограничитель на сервера убрать если надоможите

  1. //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);
    }
    }
" // Координаты слотов для подсветки "
я на фордж в 20 строк на миксине делал
 
Начинающий
Статус
Оффлайн
Регистрация
20 Апр 2023
Сообщения
54
Реакции[?]
1
Поинты[?]
1K
" // Координаты слотов для подсветки "
я на фордж в 20 строк на миксине делал
так тут 3 слота подсвечиваеться и самый дешёвый лот просто и самый дешёвый лот по броне без шипов и самый дешёвый лот с шипами и также просто сферы думаю достойно и код не такой большой
 
Начинающий
Статус
Оффлайн
Регистрация
7 Мар 2023
Сообщения
19
Реакции[?]
0
Поинты[?]
0
code этой хуйни:
@FunctionRegister(name = "AuctionHelper", type = Category.misc) // Старая база моя exp 3.1 сам всё менял пытайтесь перепастить под обыч exp 3.1
public class AhHelper extends Function {

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);
}
}
 
Начинающий
Статус
Оффлайн
Регистрация
20 Апр 2023
Сообщения
54
Реакции[?]
1
Поинты[?]
1K
code этой хуйни:
@FunctionRegister(name = "AuctionHelper", type = Category.misc) // Старая база моя exp 3.1 сам всё менял пытайтесь перепастить под обыч exp 3.1
public class AhHelper extends Function {

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);
}
}
спасиб брать что правишь мои темы я ток узнал как так встовлять не когда свои темы не выкладывал
 
Начинающий
Статус
Оффлайн
Регистрация
20 Апр 2023
Сообщения
54
Реакции[?]
1
Поинты[?]
1K
xz:
import im.Nexgen.events.EventUpdate;
import im.Nexgen.functions.api.Function;
import im.Nexgen.functions.api.FunctionRegister;
import im.Nexgen.functions.settings.impl.BooleanSetting;
import im.Nexgen.gui.screens.ChestScreen;
import im.Nexgen.utils.Expensive;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.slot.Slot;
import net.minecraft.item.ItemStack;

import java.util.List;
вроде это но не точно
 
Начинающий
Статус
Оффлайн
Регистрация
16 Апр 2024
Сообщения
307
Реакции[?]
3
Поинты[?]
1K
xz:
import im.Nexgen.events.EventUpdate;
import im.Nexgen.functions.api.Function;
import im.Nexgen.functions.api.FunctionRegister;
import im.Nexgen.functions.settings.impl.BooleanSetting;
import im.Nexgen.gui.screens.ChestScreen;
import im.Nexgen.utils.Expensive;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.slot.Slot;
import net.minecraft.item.ItemStack;

import java.util.List;
вроде это но не точно
drawRectangle, logError, getItemLore, getItemTranslationKey, toLowerCase,getTooltip, getScreenTitle и getCurrentServerIP где брать?
 
Начинающий
Статус
Оффлайн
Регистрация
20 Апр 2023
Сообщения
54
Реакции[?]
1
Поинты[?]
1K
update auchelper обновил вам исправил ошибки пользуйтесь
добавляем в im.expensive.functions.setting туда пихаем SettingManager
one:
package im.Expensive.functions.settings;

import java.util.HashMap;
import java.util.Map;

public class SettingManager {
    private final Map<String, Setting> settingsMap;

    public SettingManager() {
        settingsMap = new HashMap<>();
    }


    public void addSetting(Setting setting) {
        if (setting != null) {
            settingsMap.put(setting.getName(), setting);
        }
    }


    public Setting getSetting(String name) {
        return settingsMap.get(name);
    }


    public void removeSetting(String name) {
        settingsMap.remove(name);
    }


    public Map<String, Setting> getAllSettings() {
        return settingsMap;
    }
}
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

добавляем в im.expensive.functions.setting.impl туда пихаем IntegerSetting
two:
package im.Expensive.functions.settings.impl;

import lombok.AccessLevel;
import lombok.Getter;
import lombok.experimental.FieldDefaults;
import im.Expensive.functions.settings.Setting;

import java.util.function.Supplier;

[USER=270918]@Getter[/USER]
@FieldDefaults(level = AccessLevel.PRIVATE)
public class IntegerSetting extends Setting {
    private int value;

    public IntegerSetting(String name, int value) {
        super();
        this.value = value;
    }

    public IntegerSetting(String highlightColorRed, int value, int i, int i1) {
    }

    [USER=1367676]@override[/USER]
    public Integer getValue() {
        return value;
    }

    [USER=1367676]@override[/USER]
    public void setValue(Object value) {
        if (value instanceof Integer) {
            this.value = (Integer) value;
        }
    }

    [USER=1367676]@override[/USER]
    public Setting<?> setVisible(Supplier<Boolean> bool) {
        return null;
    }
}


--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Вот и наш auchelper
New Code:
package im.expensive.functions.impl.misc;

import com.google.common.eventbus.Subscribe;
import im.Expensive.events.EventUpdate;
import im.Expensive.functions.api.Function;
import im.Expensive.functions.settings.SettingManager;
import im.Expensive.functions.settings.impl.BooleanSetting;
import im.Expenisve.functions.settings.impl.IntegerSetting;
import im.Expensive.functions.settings.impl.ModeListSetting;
import net.minecraft.client.gui.screen.inventory.ChestScreen;
import im.Expensive.Expensive;
import net.minecraft.inventory.container.Container;
import net.minecraft.inventory.container.Slot;
import net.minecraft.item.ItemStack;

import java.util.List;

public class AuctionHelper extends Function {


    private final SettingManager settingManager;


    private final BooleanSetting highlightCheapest = new BooleanSetting("Highlight Cheapest", true);
    private final BooleanSetting highlightArmorWithoutThorns = new BooleanSetting("Highlight Armor Without Thorns", true);
    private final BooleanSetting highlightThornsArmor = new BooleanSetting("Highlight Thorns Armor", true);
    private final BooleanSetting useCustomColors = new BooleanSetting("Use Custom Colors", true);


    private final BooleanSetting customHighlightColor = new BooleanSetting("Use Custom Highlight Color", false);
    private final IntegerSetting highlightColorRed = new IntegerSetting("Highlight Color Red", 0, 0, 255);
    private final IntegerSetting highlightColorGreen = new IntegerSetting("Highlight Color Green", 255, 0, 255);
    private final IntegerSetting highlightColorBlue = new IntegerSetting("Highlight Color Blue", 0, 0, 255);


    private int x1, y1, x2, y2, x3, y3;

    public AuctionHelper() {

        settingManager = new SettingManager();

        // Добавляем настройки в SettingManager
        settingManager.addSetting(highlightCheapest);
        settingManager.addSetting(highlightArmorWithoutThorns);
        settingManager.addSetting(highlightThornsArmor);
        settingManager.addSetting(useCustomColors);
        settingManager.addSetting(customHighlightColor);
        settingManager.addSetting(highlightColorRed);
        settingManager.addSetting(highlightColorGreen);
        settingManager.addSetting(highlightColorBlue);
    }

    @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();
        }
    }

    // Проверка на сервер Funtime
    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;

            if (highlightCheapest.getValue() && price < lowestPrice) {
                lowestPrice = price;
                cheapestSlot = slot;
            }

            boolean hasThorns = hasThornsEnchantment(stack);
            if (highlightArmorWithoutThorns.getValue() && !hasThorns && isArmor(stack) && price < noThornsPrice) {
                noThornsPrice = price;
                noThornsSlot = slot;
            }

            if (highlightThornsArmor.getValue() && 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 = Nexgen.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;
    }


    public void onRender() {

        int highlightColor = customHighlightColor.getValue() ?
                (highlightColorRed.getValue() << 16) | (highlightColorGreen.getValue() << 8) | highlightColorBlue.getValue() :
                0x00FF00; // Зеленый по умолчанию

        if (x1 != 0 || y1 != 0) drawSlotHighlight(x1, y1, highlightColor); // Подсветка самого дешевого предмета
        if (x2 != 0 || y2 != 0) drawSlotHighlight(x2, y2, 0x0000FF); // Подсветка брони без Шипов (синий)
        if (x3 != 0 || y3 != 0) drawSlotHighlight(x3, y3, 0xAAAAAA); // Подсветка брони с Шипами (серый)
    }

    // Нарисовать подсветку для слота
    private void drawSlotHighlight(float x, float y, int color) {
        Nexgen.drawRectangle(x, y, x + 16, y + 16, color); // Нарисовать прямоугольник для подсветки
    }
}
 
Начинающий
Статус
Оффлайн
Регистрация
16 Апр 2024
Сообщения
307
Реакции[?]
3
Поинты[?]
1K
update auchelper обновил вам исправил ошибки пользуйтесь
добавляем в im.expensive.functions.setting туда пихаем SettingManager
one:
package im.Expensive.functions.settings;

import java.util.HashMap;
import java.util.Map;

public class SettingManager {
    private final Map<String, Setting> settingsMap;

    public SettingManager() {
        settingsMap = new HashMap<>();
    }


    public void addSetting(Setting setting) {
        if (setting != null) {
            settingsMap.put(setting.getName(), setting);
        }
    }


    public Setting getSetting(String name) {
        return settingsMap.get(name);
    }


    public void removeSetting(String name) {
        settingsMap.remove(name);
    }


    public Map<String, Setting> getAllSettings() {
        return settingsMap;
    }
}
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

добавляем в im.expensive.functions.setting.impl туда пихаем IntegerSetting
two:
package im.Expensive.functions.settings.impl;

import lombok.AccessLevel;
import lombok.Getter;
import lombok.experimental.FieldDefaults;
import im.Expensive.functions.settings.Setting;

import java.util.function.Supplier;

[USER=270918]@Getter[/USER]
@FieldDefaults(level = AccessLevel.PRIVATE)
public class IntegerSetting extends Setting {
    private int value;

    public IntegerSetting(String name, int value) {
        super();
        this.value = value;
    }

    public IntegerSetting(String highlightColorRed, int value, int i, int i1) {
    }

    [USER=1367676]@override[/USER]
    public Integer getValue() {
        return value;
    }

    [USER=1367676]@override[/USER]
    public void setValue(Object value) {
        if (value instanceof Integer) {
            this.value = (Integer) value;
        }
    }

    [USER=1367676]@override[/USER]
    public Setting<?> setVisible(Supplier<Boolean> bool) {
        return null;
    }
}


--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Вот и наш auchelper
New Code:
package im.expensive.functions.impl.misc;

import com.google.common.eventbus.Subscribe;
import im.Expensive.events.EventUpdate;
import im.Expensive.functions.api.Function;
import im.Expensive.functions.settings.SettingManager;
import im.Expensive.functions.settings.impl.BooleanSetting;
import im.Expenisve.functions.settings.impl.IntegerSetting;
import im.Expensive.functions.settings.impl.ModeListSetting;
import net.minecraft.client.gui.screen.inventory.ChestScreen;
import im.Expensive.Expensive;
import net.minecraft.inventory.container.Container;
import net.minecraft.inventory.container.Slot;
import net.minecraft.item.ItemStack;

import java.util.List;

public class AuctionHelper extends Function {


    private final SettingManager settingManager;


    private final BooleanSetting highlightCheapest = new BooleanSetting("Highlight Cheapest", true);
    private final BooleanSetting highlightArmorWithoutThorns = new BooleanSetting("Highlight Armor Without Thorns", true);
    private final BooleanSetting highlightThornsArmor = new BooleanSetting("Highlight Thorns Armor", true);
    private final BooleanSetting useCustomColors = new BooleanSetting("Use Custom Colors", true);


    private final BooleanSetting customHighlightColor = new BooleanSetting("Use Custom Highlight Color", false);
    private final IntegerSetting highlightColorRed = new IntegerSetting("Highlight Color Red", 0, 0, 255);
    private final IntegerSetting highlightColorGreen = new IntegerSetting("Highlight Color Green", 255, 0, 255);
    private final IntegerSetting highlightColorBlue = new IntegerSetting("Highlight Color Blue", 0, 0, 255);


    private int x1, y1, x2, y2, x3, y3;

    public AuctionHelper() {

        settingManager = new SettingManager();

        // Добавляем настройки в SettingManager
        settingManager.addSetting(highlightCheapest);
        settingManager.addSetting(highlightArmorWithoutThorns);
        settingManager.addSetting(highlightThornsArmor);
        settingManager.addSetting(useCustomColors);
        settingManager.addSetting(customHighlightColor);
        settingManager.addSetting(highlightColorRed);
        settingManager.addSetting(highlightColorGreen);
        settingManager.addSetting(highlightColorBlue);
    }

    @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();
        }
    }

    // Проверка на сервер Funtime
    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;

            if (highlightCheapest.getValue() && price < lowestPrice) {
                lowestPrice = price;
                cheapestSlot = slot;
            }

            boolean hasThorns = hasThornsEnchantment(stack);
            if (highlightArmorWithoutThorns.getValue() && !hasThorns && isArmor(stack) && price < noThornsPrice) {
                noThornsPrice = price;
                noThornsSlot = slot;
            }

            if (highlightThornsArmor.getValue() && 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 = Nexgen.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;
    }


    public void onRender() {

        int highlightColor = customHighlightColor.getValue() ?
                (highlightColorRed.getValue() << 16) | (highlightColorGreen.getValue() << 8) | highlightColorBlue.getValue() :
                0x00FF00; // Зеленый по умолчанию

        if (x1 != 0 || y1 != 0) drawSlotHighlight(x1, y1, highlightColor); // Подсветка самого дешевого предмета
        if (x2 != 0 || y2 != 0) drawSlotHighlight(x2, y2, 0x0000FF); // Подсветка брони без Шипов (синий)
        if (x3 != 0 || y3 != 0) drawSlotHighlight(x3, y3, 0xAAAAAA); // Подсветка брони с Шипами (серый)
    }

    // Нарисовать подсветку для слота
    private void drawSlotHighlight(float x, float y, int color) {
        Nexgen.drawRectangle(x, y, x + 16, y + 16, color); // Нарисовать прямоугольник для подсветки
    }
}
drawRectangle, logError, getItemLore, getItemTranslationKey, toLowerCase,getTooltip, getScreenTitle и getCurrentServerIP где брать?
 
Начинающий
Статус
Оффлайн
Регистрация
20 Апр 2023
Сообщения
54
Реакции[?]
1
Поинты[?]
1K
найти у меня всё робит у меня старая база exp 3.1 и свои добавления в неё
щас я на своей базе сижу
скоро киллаура будет на юге рабочая на сервере фантайм
выложу 23-25 числа
 
Сверху Снизу