Read Only
- Статус
- Оффлайн
- Регистрация
- 23 Сен 2024
- Сообщения
- 255
- Реакции
- 0
- Выберите загрузчик игры
- Прочие моды
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Дарова yougame, наверно вы видели такую тему в дельте или нурике как кнопки, тоесть например расскрываешь класс HUD/InterFace, и у нурика там кнопка открыть эдитор, так вот я реализовал такую штуку, короче утилки для рендера ректов у меня с LitkaClient (noad), если хотите замените на свои ректы, а также система шрифтов другая, замените на свою, если вы не еблан перенесёте
ss:
-------------------------------------------------
Вот класс ActionButtonObject, его кидать по пути: ваши импорты/modules/setting/impl
Вот класс ActionButtonGui, его кидать по пути: ваши импорты/ui/dropdown/components/settings
После этого идём в ваш ModuleComponent (Если что все пути а также названия классов могут у всех разные!)
Ищем это (в начале класса) :
Между любыми строчками вставляем эту строку:
if (setting instanceof ActionButtonObject actionButton) {
components.add(new ActionButtonGui (actionButton));
}
По идеи всё, но теперь у вас вопрос, как юзать эту залупу?
В классе там где хотим юзать эту залупу пишем
public ActionButtonObject pastaSetting = new ActionButtonObject("паста сеттинг",
() -> {mc.player.sendChatMessage(".way add");});
Если что вместо mc.player.sendChatMessage, вы можете сделать что та своё через гпт и тд, ну в принципе всё
ss:
-------------------------------------------------
Вот класс ActionButtonObject, его кидать по пути: ваши импорты/modules/setting/impl
ActionButtonObject:
package client.main.module.settings.implObjects;
import client.main.module.settings.Setting;
import java.util.function.Supplier;
public class ActionButtonObject extends Setting<Object> {
private final Runnable action;
public ActionButtonObject(String name, Runnable action) {
super(name, null);
this.action = action;
}
public void press() {
if (action != null) {
action.run();
}
}
@Override
public ActionButtonObject setVisible(Supplier<Boolean> bool) {
return (ActionButtonObject) super.setVisible(bool);
}
}
ActionButtonGui:
package client.display.client2Gui.components.settings;
import client.display.client2Gui.ClickGui;
import client.display.client2Gui.impl.Component;
import client.main.module.impl.misc.Theme;
import client.main.module.settings.implObjects.ActionButtonObject;
import client.util.display.render.ColorUtil;
import client.util.display.render.RenderUtil;
import client.util.display.render.Round;
import client.util.math.MathUtil;
import client.util.screenUtil.normalFont.Fonts;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.client.Minecraft;
import org.lwjgl.glfw.GLFW;
import ru.hogoshi.Animation;
import ru.hogoshi.util.Easings;
public class ActionButtonGui extends Component {
private static final long HAND_CURSOR = GLFW.glfwCreateStandardCursor(GLFW.GLFW_HAND_CURSOR);
private static final long ARROW_CURSOR = GLFW.glfwCreateStandardCursor(GLFW.GLFW_ARROW_CURSOR);
private final ActionButtonObject setting;
private Animation hoverAnim = new Animation();
private boolean hovered = false;
private int currentCursor = GLFW.GLFW_ARROW_CURSOR;
public ActionButtonGui(ActionButtonObject setting) {
this.setting = setting;
setHeight(16);
hoverAnim = hoverAnim.animate(0, 0.2, Easings.CIRC_OUT);
}
@Override
public void render(MatrixStack stack, float mouseX, float mouseY) {
super.render(stack, mouseX, mouseY);
hoverAnim.update();
boolean isHovered = isHovered(mouseX, mouseY);
hoverAnim = hoverAnim.animate(isHovered ? 1 : 0, 0.2, Easings.CIRC_OUT);
RenderUtil.Rounded.smooth(
stack,
getX() + 5,
getY() - 1,
getWidth() - 10,
getHeight() - 3,
ColorUtil.setAlpha(Theme.ClientColorG(), (int) (125 * ClickGui.getAnimation().getValue())),
Round.of(3)
);
if (hoverAnim.getValue() > 0.01f) {
RenderUtil.Rounded.smooth(
stack,
getX() + 5,
getY() - 1,
getWidth() - 10,
getHeight() - 3,
ColorUtil.setAlpha(Theme.ClientColorG(), (int) (150 * hoverAnim.getValue())),
Round.of(3)
);
}
RenderUtil.Rounded.roundedOutline(
stack,
getX() + 5,
getY() - 1,
getWidth() - 10,
getHeight() - 3,1,
ColorUtil.setAlpha(Theme.ClientColor(), (int) (100 * ClickGui.getAnimation().getValue())),
Round.of(3)
);
float textWidth = Fonts.SF_MEDIUM.getWidth(setting.getName(), client.main.module.impl.misc.ClickGui.sizeComponent.get());
Fonts.SF_MEDIUM.draw(
stack,
setting.getName(),
getX() + getWidth() / 2f - textWidth / 2f,
getY() - 7 + getHeight() / 2f + 1,
ColorUtil.setAlpha(-1, (int) (255 * ClickGui.getAnimation().getValue())),
client.main.module.impl.misc.ClickGui.sizeComponent.get()
);
Minecraft mc = Minecraft.getInstance();
if (mc != null && mc.getMainWindow() != null && mc.getMainWindow().getHandle() != 0) {
long windowHandle = mc.getMainWindow().getHandle();
if (isHovered) {
if (!hovered || currentCursor != GLFW.GLFW_HAND_CURSOR) {
GLFW.glfwSetCursor(windowHandle, HAND_CURSOR);
currentCursor = GLFW.GLFW_HAND_CURSOR;
hovered = true;
}
} else {
if (hovered || currentCursor != GLFW.GLFW_ARROW_CURSOR) {
GLFW.glfwSetCursor(windowHandle, ARROW_CURSOR);
currentCursor = GLFW.GLFW_ARROW_CURSOR;
hovered = false;
}
}
}
}
@Override
public void mouseClick(float mouseX, float mouseY, int mouse) {
if (isHovered(mouseX, mouseY) && mouse == 0) {
setting.press();
}
super.mouseClick(mouseX, mouseY, mouse);
}
@Override
public boolean isVisible() {
return setting.visible.get();
}
}
Ищем это (в начале класса) :
Между любыми строчками вставляем эту строку:
if (setting instanceof ActionButtonObject actionButton) {
components.add(new ActionButtonGui (actionButton));
}
По идеи всё, но теперь у вас вопрос, как юзать эту залупу?
В классе там где хотим юзать эту залупу пишем
public ActionButtonObject pastaSetting = new ActionButtonObject("паста сеттинг",
() -> {mc.player.sendChatMessage(".way add");});
Если что вместо mc.player.sendChatMessage, вы можете сделать что та своё через гпт и тд, ну в принципе всё