Вот вам 3 завоз ! EXP 3.1 ! AuctionHelper

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
20 Апр 2023
Сообщения
157
Реакции
0
Такой вот завоз умный 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);
    }
    }

 
Ебать что с кодом...
 
а можно норм код вставить?
 
Такой вот завоз умный 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 строк на миксине делал
так тут 3 слота подсвечиваеться и самый дешёвый лот просто и самый дешёвый лот по броне без шипов и самый дешёвый лот с шипами и также просто сферы думаю достойно и код не такой большой
 
code этой хуйни:
Expand Collapse Copy
@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);
}
}
 
code этой хуйни:
Expand Collapse Copy
@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);
}
}
спасиб брать что правишь мои темы я ток узнал как так встовлять не когда свои темы не выкладывал
 
импорты из жопы доставать
 
xz:
Expand Collapse Copy
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;
вроде это но не точно
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
xz:
Expand Collapse Copy
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 где брать?
 
if (!isFuntimeServer()) return; // Проверяет KaTrec, что игрок на сервере Funtime

ого
 
дай импорты
 
update auchelper обновил вам исправил ошибки пользуйтесь
добавляем в im.expensive.functions.setting туда пихаем SettingManager
one:
Expand Collapse Copy
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:
Expand Collapse Copy
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:
Expand Collapse Copy
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); // Нарисовать прямоугольник для подсветки
    }
}
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
update auchelper обновил вам исправил ошибки пользуйтесь
добавляем в im.expensive.functions.setting туда пихаем SettingManager
one:
Expand Collapse Copy
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:
Expand Collapse Copy
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:
Expand Collapse Copy
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 где брать?
 
найти у меня всё робит у меня старая база exp 3.1 и свои добавления в неё
щас я на своей базе сижу
скоро киллаура будет на юге рабочая на сервере фантайм
выложу 23-25 числа
 
/del мусор
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
найти у меня всё робит у меня старая база exp 3.1 и свои добавления в неё
щас я на своей базе сижу
скоро киллаура будет на юге рабочая на сервере фантайм
выложу 23-25 числа
блять скинь методы
 
найти у меня всё робит у меня старая база exp 3.1 и свои добавления в неё
щас я на своей базе сижу
скоро киллаура будет на юге рабочая на сервере фантайм
выложу 23-25 числа
наебал? я лютый пастир
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Такой вот завоз умный 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);
    }
    }
вставить код в столбик кода: нееее. просто ctrl + v =✅
 
Назад
Сверху Снизу