hud editor+color picker
This commit is contained in:
@@ -11,4 +11,4 @@ Kosher client base ported to Minecraft 1.21.5 by [@cattyngmd](https://github.com
|
||||
# What
|
||||
Add stuff to it like you would add stuff to your 1.12.2 OyVey paste
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,5 +1,6 @@
|
||||
package me.alpha432.oyvey;
|
||||
|
||||
import me.alpha432.oyvey.features.gui.HudEditorScreen;
|
||||
import me.alpha432.oyvey.manager.*;
|
||||
import me.alpha432.oyvey.util.TextUtil;
|
||||
import net.fabricmc.api.ClientModInitializer;
|
||||
@@ -26,6 +27,7 @@ public class OyVey implements ModInitializer, ClientModInitializer {
|
||||
public static FriendManager friendManager;
|
||||
public static ModuleManager moduleManager;
|
||||
public static ConfigManager configManager;
|
||||
public static HudEditorScreen hudEditorScreen;
|
||||
|
||||
@Override
|
||||
public void onInitialize() {
|
||||
@@ -47,6 +49,7 @@ public class OyVey implements ModInitializer, ClientModInitializer {
|
||||
public void onInitializeClient() {
|
||||
eventManager.init();
|
||||
moduleManager.init();
|
||||
hudEditorScreen = new HudEditorScreen();
|
||||
|
||||
configManager = new ConfigManager();
|
||||
configManager.load();
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
package me.alpha432.oyvey.event.impl;
|
||||
|
||||
import me.alpha432.oyvey.event.Event;
|
||||
|
||||
public class MouseEvent extends Event {
|
||||
private final int button;
|
||||
private final int action;
|
||||
|
||||
public MouseEvent(int button, int action) {
|
||||
this.button = button;
|
||||
this.action = action;
|
||||
}
|
||||
|
||||
public int getButton() {
|
||||
return button;
|
||||
}
|
||||
|
||||
public int getAction() {
|
||||
return action;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ public class Component
|
||||
this.drag(mouseX, mouseY);
|
||||
counter1 = new int[]{1};
|
||||
float totalItemHeight = this.open ? this.getTotalItemHeight() - 2.0f : 0.0f;
|
||||
int color = ColorUtil.toARGB(ClickGui.getInstance().topRed.getValue(), ClickGui.getInstance().topGreen.getValue(), ClickGui.getInstance().topBlue.getValue(), 255);
|
||||
int color = ClickGui.getInstance().topColor.getValue().getRGB();
|
||||
context.fill(this.x, this.y - 1, this.x + this.width, this.y + this.height - 6, ClickGui.getInstance().rainbow.getValue() ? ColorUtil.rainbow(ClickGui.getInstance().rainbowHue.getValue()).getRGB() : color);
|
||||
if (this.open) {
|
||||
RenderUtil.rect(context.getMatrices(), this.x, (float) this.y + 12.5f, this.x + this.width, (float) (this.y + this.height) + totalItemHeight, 0x77000000);
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
package me.alpha432.oyvey.features.gui;
|
||||
|
||||
import me.alpha432.oyvey.OyVey;
|
||||
import me.alpha432.oyvey.features.Feature;
|
||||
import me.alpha432.oyvey.features.gui.items.buttons.ModuleButton;
|
||||
import me.alpha432.oyvey.features.modules.Module;
|
||||
import me.alpha432.oyvey.features.modules.client.HudModule;
|
||||
import net.minecraft.client.gui.DrawContext;
|
||||
import net.minecraft.client.gui.screen.Screen;
|
||||
import net.minecraft.text.Text;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
|
||||
public class HudEditorScreen extends Screen {
|
||||
private final ArrayList<Component> components = new ArrayList<>();
|
||||
public HudModule currentDragging;
|
||||
public boolean anyHover;
|
||||
|
||||
public HudEditorScreen() {
|
||||
super(Text.literal("oyvey-hudeditor"));
|
||||
load();
|
||||
}
|
||||
|
||||
private void load() {
|
||||
this.components.add(new Component("Hud", 50, 50, true) {
|
||||
@Override
|
||||
public void setupItems() {
|
||||
Component.counter1 = new int[]{1};
|
||||
OyVey.moduleManager.getModulesByCategory(Module.Category.HUD).forEach(module -> {
|
||||
if (!module.hidden) {
|
||||
this.addButton(new ModuleButton(module));
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
this.components.forEach(component -> component.getItems().sort(Comparator.comparing(Feature::getName)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(DrawContext context, int mouseX, int mouseY, float delta) {
|
||||
anyHover = false;
|
||||
this.components.forEach(component -> component.drawScreen(context, mouseX, mouseY, delta));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean mouseClicked(double mouseX, double mouseY, int clickedButton) {
|
||||
this.components.forEach(component -> component.mouseClicked((int) mouseX, (int) mouseY, clickedButton));
|
||||
return super.mouseClicked(mouseX, mouseY, clickedButton);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean mouseReleased(double mouseX, double mouseY, int releaseButton) {
|
||||
this.components.forEach(component -> component.mouseReleased((int) mouseX, (int) mouseY, releaseButton));
|
||||
return super.mouseReleased(mouseX, mouseY, releaseButton);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean mouseScrolled(double mouseX, double mouseY, double horizontalAmount, double verticalAmount) {
|
||||
if (verticalAmount < 0) {
|
||||
this.components.forEach(component -> component.setY(component.getY() - 10));
|
||||
} else if (verticalAmount > 0) {
|
||||
this.components.forEach(component -> component.setY(component.getY() + 10));
|
||||
}
|
||||
return super.mouseScrolled(mouseX, mouseY, horizontalAmount, verticalAmount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
|
||||
this.components.forEach(component -> component.onKeyPressed(keyCode));
|
||||
return super.keyPressed(keyCode, scanCode, modifiers);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean charTyped(char chr, int modifiers) {
|
||||
this.components.forEach(component -> component.onKeyTyped(chr, modifiers));
|
||||
return super.charTyped(chr, modifiers);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldPause() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public ArrayList<Component> getComponents() {
|
||||
return components;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,8 +14,8 @@ import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
|
||||
public class OyVeyGui extends Screen {
|
||||
private static OyVeyGui oyveyGui;
|
||||
private static OyVeyGui INSTANCE;
|
||||
private static Color colorClipboard = null;
|
||||
|
||||
static {
|
||||
INSTANCE = new OyVeyGui();
|
||||
@@ -47,6 +47,7 @@ public class OyVeyGui extends Screen {
|
||||
private void load() {
|
||||
int x = -84;
|
||||
for (final Module.Category category : OyVey.moduleManager.getCategories()) {
|
||||
if (category == Module.Category.HUD) continue; // Skip HUD category in ClickGui
|
||||
this.components.add(new Component(category.getName(), x += 90, 4, true) {
|
||||
|
||||
@Override
|
||||
@@ -136,4 +137,12 @@ public class OyVeyGui extends Screen {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Color getColorClipboard() {
|
||||
return colorClipboard;
|
||||
}
|
||||
|
||||
public static void setColorClipboard(Color color) {
|
||||
colorClipboard = color;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,8 +26,8 @@ public class BindButton
|
||||
|
||||
@Override
|
||||
public void drawScreen(DrawContext context, int mouseX, int mouseY, float partialTicks) {
|
||||
int color = ColorUtil.toARGB(ClickGui.getInstance().red.getValue(), ClickGui.getInstance().green.getValue(), ClickGui.getInstance().blue.getValue(), 255);
|
||||
RenderUtil.rect(context.getMatrices(), this.x, this.y, this.x + (float) this.width + 7.4f, this.y + (float) this.height - 0.5f, this.getState() ? (!this.isHovering(mouseX, mouseY) ? 0x11555555 : -2007673515) : (!this.isHovering(mouseX, mouseY) ? OyVey.colorManager.getColorWithAlpha(OyVey.moduleManager.getModuleByClass(ClickGui.class).hoverAlpha.getValue()) : OyVey.colorManager.getColorWithAlpha(OyVey.moduleManager.getModuleByClass(ClickGui.class).alpha.getValue())));
|
||||
int color = ClickGui.getInstance().color.getValue().getRGB();
|
||||
RenderUtil.rect(context.getMatrices(), this.x, this.y, this.x + (float) this.width + 7.4f, this.y + (float) this.height - 0.5f, this.getState() ? (!this.isHovering(mouseX, mouseY) ? 0x11555555 : -2007673515) : (!this.isHovering(mouseX, mouseY) ? OyVey.colorManager.getColorWithAlpha(ClickGui.getInstance().color.getValue().getAlpha()) : OyVey.colorManager.getColorWithAlpha(ClickGui.getInstance().topColor.getValue().getAlpha())));
|
||||
if (this.isListening) {
|
||||
drawString("Press a Key...", this.x + 2.3f, this.y - 1.7f - (float) OyVeyGui.getClickGui().getTextOffset(), -1);
|
||||
} else {
|
||||
|
||||
@@ -22,7 +22,7 @@ public class BooleanButton
|
||||
|
||||
@Override
|
||||
public void drawScreen(DrawContext context, int mouseX, int mouseY, float partialTicks) {
|
||||
RenderUtil.rect(context.getMatrices(), this.x, this.y, this.x + (float) this.width + 7.4f, this.y + (float) this.height - 0.5f, this.getState() ? (!this.isHovering(mouseX, mouseY) ? OyVey.colorManager.getColorWithAlpha(OyVey.moduleManager.getModuleByClass(ClickGui.class).hoverAlpha.getValue()) : OyVey.colorManager.getColorWithAlpha(OyVey.moduleManager.getModuleByClass(ClickGui.class).alpha.getValue())) : (!this.isHovering(mouseX, mouseY) ? 0x11555555 : -2007673515));
|
||||
RenderUtil.rect(context.getMatrices(), this.x, this.y, this.x + (float) this.width + 7.4f, this.y + (float) this.height - 0.5f, this.getState() ? (!this.isHovering(mouseX, mouseY) ? OyVey.colorManager.getColorWithAlpha(ClickGui.getInstance().color.getValue().getAlpha()) : OyVey.colorManager.getColorWithAlpha(ClickGui.getInstance().topColor.getValue().getAlpha())) : (!this.isHovering(mouseX, mouseY) ? 0x11555555 : -2007673515));
|
||||
drawString(this.getName(), this.x + 2.3f, this.y - 1.7f - (float) OyVeyGui.getClickGui().getTextOffset(), this.getState() ? -1 : -5592406);
|
||||
}
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ public class Button
|
||||
|
||||
@Override
|
||||
public void drawScreen(DrawContext context, int mouseX, int mouseY, float partialTicks) {
|
||||
RenderUtil.rect(context.getMatrices(), this.x, this.y, this.x + (float) this.width, this.y + (float) this.height - 0.5f, this.getState() ? (!this.isHovering(mouseX, mouseY) ? OyVey.colorManager.getColorWithAlpha(OyVey.moduleManager.getModuleByClass(ClickGui.class).hoverAlpha.getValue()) : OyVey.colorManager.getColorWithAlpha(OyVey.moduleManager.getModuleByClass(ClickGui.class).alpha.getValue())) : (!this.isHovering(mouseX, mouseY) ? 0x11555555 : -2007673515));
|
||||
RenderUtil.rect(context.getMatrices(), this.x, this.y, this.x + (float) this.width, this.y + (float) this.height - 0.5f, this.getState() ? (!this.isHovering(mouseX, mouseY) ? OyVey.colorManager.getColorWithAlpha(ClickGui.getInstance().color.getValue().getAlpha()) : OyVey.colorManager.getColorWithAlpha(ClickGui.getInstance().topColor.getValue().getAlpha())) : (!this.isHovering(mouseX, mouseY) ? 0x11555555 : -2007673515));
|
||||
drawString(this.getName(), this.x + 2.3f, this.y - 2.0f - (float) OyVeyGui.getClickGui().getTextOffset(), this.getState() ? -1 : -5592406);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,200 @@
|
||||
package me.alpha432.oyvey.features.gui.items.buttons;
|
||||
|
||||
import me.alpha432.oyvey.OyVey;
|
||||
import me.alpha432.oyvey.features.gui.Component;
|
||||
import me.alpha432.oyvey.features.gui.OyVeyGui;
|
||||
import me.alpha432.oyvey.features.modules.client.ClickGui;
|
||||
import me.alpha432.oyvey.features.settings.Setting;
|
||||
import me.alpha432.oyvey.util.render.RenderUtil;
|
||||
import net.minecraft.client.gui.DrawContext;
|
||||
import net.minecraft.client.sound.PositionedSoundInstance;
|
||||
import net.minecraft.sound.SoundEvents;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
|
||||
import java.awt.Color;
|
||||
|
||||
public class ColorButton extends Button {
|
||||
private final Setting<Color> setting;
|
||||
private boolean open = false;
|
||||
private boolean hoveringHue = false, hoveringColor = false, hoveringAlpha = false, hoveringCopy = false, hoveringPaste = false;
|
||||
private boolean draggingHue = false, draggingColor = false, draggingAlpha = false;
|
||||
private int pickerSize = 84;
|
||||
private float[] hsb;
|
||||
|
||||
public ColorButton(Setting<Color> setting) {
|
||||
super(setting.getName());
|
||||
this.setting = setting;
|
||||
this.width = 15;
|
||||
hsb = Color.RGBtoHSB(setting.getValue().getRed(), setting.getValue().getGreen(), setting.getValue().getBlue(), null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawScreen(DrawContext context, int mouseX, int mouseY, float partialTicks) {
|
||||
Color currentColor = setting.getValue();
|
||||
Color outlineColor = Color.BLACK;
|
||||
Color realColor = Color.getHSBColor(hsb[0], 1, 1);
|
||||
|
||||
RenderUtil.rect(context.getMatrices(), this.x, this.y, this.x + (float) this.width + 7.4f, this.y + (float) this.height - 0.5f,
|
||||
!this.isHovering(mouseX, mouseY) ? 0x11555555 : -2007673515);
|
||||
|
||||
RenderUtil.rect(context.getMatrices(), this.x + (float) this.width - 3.0f, this.y + 2.0f,
|
||||
this.x + (float) this.width + 5.0f, this.y + (float) this.height - 2.5f,
|
||||
new Color(currentColor.getRed(), currentColor.getGreen(), currentColor.getBlue(), 255).getRGB());
|
||||
|
||||
drawString(this.getName(), this.x + 2.3f, this.y - 1.7f - (float) OyVeyGui.getClickGui().getTextOffset(), -1);
|
||||
|
||||
if (open) {
|
||||
float yOffset = this.height;
|
||||
int availableWidth = this.width + 3;
|
||||
int pickerWidth = Math.min(pickerSize, availableWidth);
|
||||
float pickerX = this.x + 2.0f;
|
||||
|
||||
int dragX = MathHelper.clamp(mouseX - (int)pickerX, 0, pickerWidth);
|
||||
int dragY = MathHelper.clamp(mouseY - (int)(getY() + yOffset), 0, pickerWidth);
|
||||
float dragHue = pickerWidth * hsb[0];
|
||||
float dragSaturation = pickerWidth * hsb[1];
|
||||
float dragBrightness = pickerWidth * (1.0f - hsb[2]);
|
||||
float dragAlpha = pickerWidth * (currentColor.getAlpha() / 255.0f);
|
||||
|
||||
RenderUtil.horizontalGradient(context.getMatrices(), pickerX, this.y + yOffset, pickerX + pickerWidth, this.y + yOffset + pickerWidth, Color.WHITE, realColor);
|
||||
RenderUtil.verticalGradient(context.getMatrices(), pickerX, this.y + yOffset, pickerX + pickerWidth, this.y + yOffset + pickerWidth, new Color(0, 0, 0, 0), Color.BLACK);
|
||||
RenderUtil.rect(context.getMatrices(), pickerX, this.y + yOffset, pickerX + pickerWidth, this.y + yOffset + pickerWidth, outlineColor.getRGB(), 1.0f);
|
||||
|
||||
hoveringColor = isHoveringArea(mouseX, mouseY, pickerX, this.y + yOffset, pickerX + pickerWidth, this.y + yOffset + pickerWidth);
|
||||
|
||||
if (dragSaturation < pickerWidth && dragBrightness < pickerWidth) {
|
||||
RenderUtil.rect(context.getMatrices(), pickerX + dragSaturation - 1.5f, this.y + yOffset + dragBrightness - 1.5f,
|
||||
pickerX + dragSaturation + 1.5f, this.y + yOffset + dragBrightness + 1.5f, outlineColor.getRGB());
|
||||
RenderUtil.rect(context.getMatrices(), pickerX + dragSaturation - 0.5f, this.y + yOffset + dragBrightness - 0.5f,
|
||||
pickerX + dragSaturation + 0.5f, this.y + yOffset + dragBrightness + 0.5f, Color.WHITE.getRGB());
|
||||
}
|
||||
|
||||
if (draggingColor) {
|
||||
hsb[1] = (float) dragX / pickerWidth;
|
||||
hsb[2] = 1.0f - (float) dragY / pickerWidth;
|
||||
setColor(hsb);
|
||||
}
|
||||
|
||||
yOffset += pickerWidth + 2;
|
||||
|
||||
RenderUtil.horizontalGradient(context.getMatrices(), pickerX, this.y + yOffset, pickerX + pickerWidth, this.y + yOffset + 8,
|
||||
new Color(currentColor.getRed(), currentColor.getGreen(), currentColor.getBlue(), 0),
|
||||
new Color(currentColor.getRed(), currentColor.getGreen(), currentColor.getBlue(), 255));
|
||||
RenderUtil.rect(context.getMatrices(), pickerX, this.y + yOffset, pickerX + pickerWidth, this.y + yOffset + 8, outlineColor.getRGB(), 1.0f);
|
||||
hoveringAlpha = isHoveringArea(mouseX, mouseY, pickerX, this.y + yOffset, pickerX + pickerWidth, this.y + yOffset + 8);
|
||||
|
||||
RenderUtil.rect(context.getMatrices(), pickerX + dragAlpha - 1.5f, this.y + yOffset - 1,
|
||||
pickerX + dragAlpha + 1.5f, this.y + yOffset + 9, outlineColor.getRGB());
|
||||
RenderUtil.rect(context.getMatrices(), pickerX + dragAlpha - 0.5f, this.y + yOffset,
|
||||
pickerX + dragAlpha + 0.5f, this.y + yOffset + 8, Color.WHITE.getRGB());
|
||||
|
||||
if (draggingAlpha) {
|
||||
setColor(hsb, (int) (255 * (float) dragX / pickerWidth));
|
||||
}
|
||||
|
||||
yOffset += 10;
|
||||
|
||||
for (float i = 0; i < pickerWidth; i += 0.5f) {
|
||||
RenderUtil.rect(context.getMatrices(), pickerX + i, this.y + yOffset, pickerX + i + 0.5f, this.y + yOffset + 8,
|
||||
Color.getHSBColor(i / pickerWidth, 1.0f, 1.0f).getRGB());
|
||||
}
|
||||
RenderUtil.rect(context.getMatrices(), pickerX, this.y + yOffset, pickerX + pickerWidth, this.y + yOffset + 8, outlineColor.getRGB(), 1.0f);
|
||||
hoveringHue = isHoveringArea(mouseX, mouseY, pickerX, this.y + yOffset, pickerX + pickerWidth, this.y + yOffset + 8);
|
||||
|
||||
if (dragHue < pickerWidth) {
|
||||
RenderUtil.rect(context.getMatrices(), pickerX + dragHue - 1.5f, this.y + yOffset - 1,
|
||||
pickerX + dragHue + 1.5f, this.y + yOffset + 9, outlineColor.getRGB());
|
||||
RenderUtil.rect(context.getMatrices(), pickerX + dragHue - 0.5f, this.y + yOffset,
|
||||
pickerX + dragHue + 0.5f, this.y + yOffset + 8, Color.WHITE.getRGB());
|
||||
}
|
||||
|
||||
if (draggingHue) {
|
||||
hsb[0] = (float) dragX / pickerWidth;
|
||||
setColor(hsb);
|
||||
}
|
||||
|
||||
yOffset += 10;
|
||||
|
||||
int buttonWidth = availableWidth / 2;
|
||||
RenderUtil.rect(context.getMatrices(), pickerX, this.y + yOffset, pickerX + buttonWidth, this.y + yOffset + 14,
|
||||
hoveringCopy ? OyVey.colorManager.getColorWithAlpha(ClickGui.getInstance().topColor.getValue().getAlpha()) : 0x11555555);
|
||||
drawString("Copy", pickerX + buttonWidth / 2 - mc.textRenderer.getWidth("Copy") / 2, this.y + yOffset + 2, -1);
|
||||
hoveringCopy = isHoveringArea(mouseX, mouseY, pickerX, this.y + yOffset, pickerX + buttonWidth, this.y + yOffset + 14);
|
||||
|
||||
RenderUtil.rect(context.getMatrices(), pickerX + buttonWidth + 1, this.y + yOffset, pickerX + buttonWidth * 2 + 1, this.y + yOffset + 14,
|
||||
hoveringPaste ? OyVey.colorManager.getColorWithAlpha(ClickGui.getInstance().topColor.getValue().getAlpha()) : 0x11555555);
|
||||
drawString("Paste", pickerX + buttonWidth + buttonWidth / 2 - mc.textRenderer.getWidth("Paste") / 2 + 1, this.y + yOffset + 2, -1);
|
||||
hoveringPaste = isHoveringArea(mouseX, mouseY, pickerX + buttonWidth + 1, this.y + yOffset, pickerX + buttonWidth * 2 + 1, this.y + yOffset + 14);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseClicked(int mouseX, int mouseY, int mouseButton) {
|
||||
if (this.isHovering(mouseX, mouseY) && mouseButton == 1) {
|
||||
open = !open;
|
||||
mc.getSoundManager().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1f));
|
||||
}
|
||||
|
||||
if (mouseButton == 0) {
|
||||
if (hoveringHue) draggingHue = true;
|
||||
if (hoveringColor) draggingColor = true;
|
||||
if (hoveringAlpha) draggingAlpha = true;
|
||||
|
||||
if (hoveringCopy) {
|
||||
OyVeyGui.setColorClipboard(setting.getValue());
|
||||
mc.getSoundManager().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1f));
|
||||
}
|
||||
if (hoveringPaste && OyVeyGui.getColorClipboard() != null) {
|
||||
setting.setValue(OyVeyGui.getColorClipboard());
|
||||
hsb = Color.RGBtoHSB(setting.getValue().getRed(), setting.getValue().getGreen(), setting.getValue().getBlue(), null);
|
||||
mc.getSoundManager().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1f));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseReleased(int mouseX, int mouseY, int releaseButton) {
|
||||
if (releaseButton == 0) {
|
||||
draggingHue = false;
|
||||
draggingColor = false;
|
||||
draggingAlpha = false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update() {
|
||||
this.setHidden(!this.setting.isVisible());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getHeight() {
|
||||
if (!open) return 14;
|
||||
int pickerWidth = Math.min(pickerSize, this.width + 3);
|
||||
return 14 + pickerWidth + 8 + 8 + 14 + 10;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isHovering(int mouseX, int mouseY) {
|
||||
for (Component component : OyVeyGui.getClickGui().getComponents()) {
|
||||
if (component.drag) return false;
|
||||
}
|
||||
return (float) mouseX >= this.getX() && (float) mouseX <= this.getX() + (float) this.getWidth() + 8.0f
|
||||
&& (float) mouseY >= this.getY() && (float) mouseY <= this.getY() + (float) this.height;
|
||||
}
|
||||
|
||||
private boolean isHoveringArea(int mouseX, int mouseY, float left, float top, float right, float bottom) {
|
||||
for (Component component : OyVeyGui.getClickGui().getComponents()) {
|
||||
if (component.drag) return false;
|
||||
}
|
||||
return left <= mouseX && top <= mouseY && right > mouseX && bottom > mouseY;
|
||||
}
|
||||
|
||||
private void setColor(float[] hsb) {
|
||||
setColor(hsb, setting.getValue().getAlpha());
|
||||
}
|
||||
|
||||
private void setColor(float[] hsb, int alpha) {
|
||||
Color color = new Color(Color.HSBtoRGB(hsb[0], hsb[1], hsb[2]));
|
||||
setting.setValue(new Color(color.getRed(), color.getGreen(), color.getBlue(), alpha));
|
||||
}
|
||||
}
|
||||
@@ -23,7 +23,7 @@ public class EnumButton
|
||||
|
||||
@Override
|
||||
public void drawScreen(DrawContext context, int mouseX, int mouseY, float partialTicks) {
|
||||
RenderUtil.rect(context.getMatrices(), this.x, this.y, this.x + (float) this.width + 7.4f, this.y + (float) this.height - 0.5f, this.getState() ? (!this.isHovering(mouseX, mouseY) ? OyVey.colorManager.getColorWithAlpha(OyVey.moduleManager.getModuleByClass(ClickGui.class).hoverAlpha.getValue()) : OyVey.colorManager.getColorWithAlpha(OyVey.moduleManager.getModuleByClass(ClickGui.class).alpha.getValue())) : (!this.isHovering(mouseX, mouseY) ? 0x11555555 : -2007673515));
|
||||
RenderUtil.rect(context.getMatrices(), this.x, this.y, this.x + (float) this.width + 7.4f, this.y + (float) this.height - 0.5f, this.getState() ? (!this.isHovering(mouseX, mouseY) ? OyVey.colorManager.getColorWithAlpha(ClickGui.getInstance().color.getValue().getAlpha()) : OyVey.colorManager.getColorWithAlpha(ClickGui.getInstance().topColor.getValue().getAlpha())) : (!this.isHovering(mouseX, mouseY) ? 0x11555555 : -2007673515));
|
||||
drawString(this.setting.getName() + " " + Formatting.GRAY + (this.setting.currentEnumName().equalsIgnoreCase("ABC") ? "ABC" : this.setting.currentEnumName()), this.x + 2.3f, this.y - 1.7f - (float) OyVeyGui.getClickGui().getTextOffset(), this.getState() ? -1 : -5592406);
|
||||
}
|
||||
|
||||
|
||||
@@ -37,6 +37,10 @@ public class ModuleButton
|
||||
if ((setting.getValue() instanceof String || setting.getValue() instanceof Character) && !setting.getName().equalsIgnoreCase("displayName")) {
|
||||
newItems.add(new StringButton((Setting<String>) setting));
|
||||
}
|
||||
if (setting.isColorSetting()) {
|
||||
newItems.add(new ColorButton((Setting<java.awt.Color>) setting));
|
||||
continue;
|
||||
}
|
||||
if (setting.isNumberSetting() && setting.hasRestriction()) {
|
||||
newItems.add(new Slider((Setting<Number>) setting));
|
||||
continue;
|
||||
@@ -54,14 +58,14 @@ public class ModuleButton
|
||||
super.drawScreen(context, mouseX, mouseY, partialTicks);
|
||||
if (!this.items.isEmpty()) {
|
||||
if (this.subOpen) {
|
||||
float height = 1.0f;
|
||||
float height = 14.0f;
|
||||
for (Item item : this.items) {
|
||||
Component.counter1[0] = Component.counter1[0] + 1;
|
||||
if (!item.isHidden()) {
|
||||
item.setLocation(this.x + 1.0f, this.y + (height += 15.0f));
|
||||
item.setHeight(15);
|
||||
item.setLocation(this.x + 1.0f, this.y + height);
|
||||
item.setWidth(this.width - 9);
|
||||
item.drawScreen(context, mouseX, mouseY, partialTicks);
|
||||
height += item.getHeight() + 1;
|
||||
}
|
||||
item.update();
|
||||
}
|
||||
@@ -86,6 +90,17 @@ public class ModuleButton
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseReleased(int mouseX, int mouseY, int releaseButton) {
|
||||
super.mouseReleased(mouseX, mouseY, releaseButton);
|
||||
if (!this.items.isEmpty() && this.subOpen) {
|
||||
for (Item item : this.items) {
|
||||
if (item.isHidden()) continue;
|
||||
item.mouseReleased(mouseX, mouseY, releaseButton);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onKeyTyped(char typedChar, int keyCode) {
|
||||
super.onKeyTyped(typedChar, keyCode);
|
||||
|
||||
@@ -30,7 +30,7 @@ public class Slider
|
||||
public void drawScreen(DrawContext context, int mouseX, int mouseY, float partialTicks) {
|
||||
this.dragSetting(mouseX, mouseY);
|
||||
RenderUtil.rect(context.getMatrices(), this.x, this.y, this.x + (float) this.width + 7.4f, this.y + (float) this.height - 0.5f, !this.isHovering(mouseX, mouseY) ? 0x11555555 : -2007673515);
|
||||
RenderUtil.rect(context.getMatrices(), this.x, this.y, (this.setting.getValue()).floatValue() <= this.min.floatValue() ? this.x : this.x + ((float) this.width + 7.4f) * this.partialMultiplier(), this.y + (float) this.height - 0.5f, !this.isHovering(mouseX, mouseY) ? OyVey.colorManager.getColorWithAlpha(OyVey.moduleManager.getModuleByClass(ClickGui.class).hoverAlpha.getValue()) : OyVey.colorManager.getColorWithAlpha(OyVey.moduleManager.getModuleByClass(ClickGui.class).alpha.getValue()));
|
||||
RenderUtil.rect(context.getMatrices(), this.x, this.y, (this.setting.getValue()).floatValue() <= this.min.floatValue() ? this.x : this.x + ((float) this.width + 7.4f) * this.partialMultiplier(), this.y + (float) this.height - 0.5f, !this.isHovering(mouseX, mouseY) ? OyVey.colorManager.getColorWithAlpha(ClickGui.getInstance().color.getValue().getAlpha()) : OyVey.colorManager.getColorWithAlpha(ClickGui.getInstance().topColor.getValue().getAlpha()));
|
||||
drawString(this.getName() + " " + Formatting.GRAY + (this.setting.getValue() instanceof Float ? this.setting.getValue() : Double.valueOf((this.setting.getValue()).doubleValue())), this.x + 2.3f, this.y - 1.7f - (float) OyVeyGui.getClickGui().getTextOffset(), -1);
|
||||
}
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ public class StringButton
|
||||
|
||||
@Override
|
||||
public void drawScreen(DrawContext context, int mouseX, int mouseY, float partialTicks) {
|
||||
RenderUtil.rect(context.getMatrices(), this.x, this.y, this.x + (float) this.width + 7.4f, this.y + (float) this.height - 0.5f, this.getState() ? (!this.isHovering(mouseX, mouseY) ? OyVey.colorManager.getColorWithAlpha(OyVey.moduleManager.getModuleByClass(ClickGui.class).hoverAlpha.getValue()) : OyVey.colorManager.getColorWithAlpha(OyVey.moduleManager.getModuleByClass(ClickGui.class).alpha.getValue())) : (!this.isHovering(mouseX, mouseY) ? 0x11555555 : -2007673515));
|
||||
RenderUtil.rect(context.getMatrices(), this.x, this.y, this.x + (float) this.width + 7.4f, this.y + (float) this.height - 0.5f, this.getState() ? (!this.isHovering(mouseX, mouseY) ? OyVey.colorManager.getColorWithAlpha(ClickGui.getInstance().color.getValue().getAlpha()) : OyVey.colorManager.getColorWithAlpha(ClickGui.getInstance().topColor.getValue().getAlpha())) : (!this.isHovering(mouseX, mouseY) ? 0x11555555 : -2007673515));
|
||||
if (this.isListening) {
|
||||
drawString(this.currentString.string() + "_", this.x + 2.3f, this.y - 1.7f - (float) OyVeyGui.getClickGui().getTextOffset(), this.getState() ? -1 : -5592406);
|
||||
} else {
|
||||
|
||||
@@ -171,6 +171,10 @@ public class Module extends Feature implements Jsonable {
|
||||
try {
|
||||
if (setting.getValue() instanceof Bind bind) {
|
||||
object.addProperty(setting.getName(), bind.getKey());
|
||||
} else if (setting.getValue() instanceof java.awt.Color color) {
|
||||
object.addProperty(setting.getName(), color.getRed() + "," + color.getGreen() + "," + color.getBlue() + "," + color.getAlpha());
|
||||
} else if (setting.getValue() instanceof me.alpha432.oyvey.features.settings.Pos pos) {
|
||||
object.addProperty(setting.getName(), pos.getX() + "," + pos.getY());
|
||||
} else {
|
||||
object.addProperty(setting.getName(), setting.getValueAsString());
|
||||
}
|
||||
@@ -182,13 +186,20 @@ public class Module extends Feature implements Jsonable {
|
||||
|
||||
@Override
|
||||
public void fromJson(JsonElement element) {
|
||||
if (element == null || element.isJsonNull()) return;
|
||||
JsonObject object = element.getAsJsonObject();
|
||||
String enabled = object.get("Enabled").getAsString();
|
||||
if (Boolean.parseBoolean(enabled)) toggle();
|
||||
if (object.has("Enabled")) {
|
||||
String enabled = object.get("Enabled").getAsString();
|
||||
if (Boolean.parseBoolean(enabled)) toggle();
|
||||
}
|
||||
for (Setting<?> setting : getSettings()) {
|
||||
try {
|
||||
ConfigManager.setValueFromJson(this, setting, object.get(setting.getName()));
|
||||
JsonElement settingElement = object.get(setting.getName());
|
||||
if (settingElement != null && !settingElement.isJsonNull()) {
|
||||
ConfigManager.setValueFromJson(this, setting, settingElement);
|
||||
}
|
||||
} catch (Throwable throwable) {
|
||||
throwable.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -199,7 +210,8 @@ public class Module extends Feature implements Jsonable {
|
||||
RENDER("Render"),
|
||||
MOVEMENT("Movement"),
|
||||
PLAYER("Player"),
|
||||
CLIENT("Client");
|
||||
CLIENT("Client"),
|
||||
HUD("Hud");
|
||||
|
||||
private final String name;
|
||||
|
||||
|
||||
@@ -9,21 +9,17 @@ import me.alpha432.oyvey.features.modules.Module;
|
||||
import me.alpha432.oyvey.features.settings.Setting;
|
||||
import org.lwjgl.glfw.GLFW;
|
||||
|
||||
import java.awt.Color;
|
||||
|
||||
public class ClickGui
|
||||
extends Module {
|
||||
private static ClickGui INSTANCE = new ClickGui();
|
||||
public Setting<String> prefix = str("Prefix", ".");
|
||||
public Setting<Integer> red = num("Red", 0, 0, 255);
|
||||
public Setting<Integer> green = num("Green", 0, 0, 255);
|
||||
public Setting<Integer> blue = num("Blue", 255, 0, 255);
|
||||
public Setting<Integer> hoverAlpha = num("Alpha", 180, 0, 255);
|
||||
public Setting<Integer> topRed = num("SecondRed", 0, 0, 255);
|
||||
public Setting<Integer> topGreen = num("SecondGreen", 0, 0, 255);
|
||||
public Setting<Integer> topBlue = num("SecondBlue", 150, 0, 255);
|
||||
public Setting<Integer> alpha = num("HoverAlpha", 240, 0, 255);
|
||||
public Setting<Color> color = color("Color", 0, 0, 255, 180);
|
||||
public Setting<Color> topColor = color("TopColor", 0, 0, 150, 240);
|
||||
public Setting<Boolean> rainbow = bool("Rainbow", false);
|
||||
public Setting<Integer> rainbowHue = num("Delay", 240, 0, 600);
|
||||
public Setting<Float> rainbowBrightness = num("Brightness ", 150.0f, 1.0f, 255.0f);
|
||||
public Setting<Float> rainbowBrightness = num("Brightness", 150.0f, 1.0f, 255.0f);
|
||||
public Setting<Float> rainbowSaturation = num("Saturation", 150.0f, 1.0f, 255.0f);
|
||||
|
||||
public ClickGui() {
|
||||
@@ -53,7 +49,9 @@ public class ClickGui
|
||||
OyVey.commandManager.setPrefix(this.prefix.getPlannedValue());
|
||||
Command.sendMessage("Prefix set to {global} %s", OyVey.commandManager.getPrefix());
|
||||
}
|
||||
OyVey.colorManager.setColor(this.red.getPlannedValue(), this.green.getPlannedValue(), this.blue.getPlannedValue(), this.hoverAlpha.getPlannedValue());
|
||||
if (event.getSetting().equals(this.color)) {
|
||||
OyVey.colorManager.setColor(this.color.getPlannedValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,7 +65,7 @@ public class ClickGui
|
||||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
OyVey.colorManager.setColor(this.red.getValue(), this.green.getValue(), this.blue.getValue(), this.hoverAlpha.getValue());
|
||||
OyVey.colorManager.setColor(this.color.getValue());
|
||||
OyVey.commandManager.setPrefix(this.prefix.getValue());
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
package me.alpha432.oyvey.features.modules.client;
|
||||
|
||||
import com.google.common.eventbus.Subscribe;
|
||||
import me.alpha432.oyvey.event.impl.Render2DEvent;
|
||||
import me.alpha432.oyvey.features.settings.Setting;
|
||||
|
||||
public class Coordinates extends HudModule {
|
||||
public Setting<Boolean> nether = bool("Nether", false);
|
||||
|
||||
public Coordinates() {
|
||||
super("Coordinates", "Display coordinates", 150, 20);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Subscribe
|
||||
public void onRender2D(Render2DEvent e) {
|
||||
super.onRender2DHud(e);
|
||||
|
||||
if (fullNullCheck()) return;
|
||||
|
||||
String coordsStr = String.format("X: %d Y: %d Z: %d",
|
||||
mc.player.getBlockX(),
|
||||
mc.player.getBlockY(),
|
||||
mc.player.getBlockZ());
|
||||
|
||||
if (nether.getValue()) {
|
||||
int netherX = mc.player.getWorld().getRegistryKey().getValue().getPath().equals("the_nether")
|
||||
? mc.player.getBlockX() * 8
|
||||
: mc.player.getBlockX() / 8;
|
||||
int netherZ = mc.player.getWorld().getRegistryKey().getValue().getPath().equals("the_nether")
|
||||
? mc.player.getBlockZ() * 8
|
||||
: mc.player.getBlockZ() / 8;
|
||||
coordsStr += String.format(" [%d, %d]", netherX, netherZ);
|
||||
}
|
||||
|
||||
e.getContext().drawTextWithShadow(mc.textRenderer, coordsStr,
|
||||
(int) getX(), (int) getY(), -1);
|
||||
|
||||
setWidth(mc.textRenderer.getWidth(coordsStr));
|
||||
setHeight(mc.textRenderer.fontHeight);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
package me.alpha432.oyvey.features.modules.client;
|
||||
|
||||
import com.google.common.eventbus.Subscribe;
|
||||
import me.alpha432.oyvey.OyVey;
|
||||
import me.alpha432.oyvey.event.impl.UpdateEvent;
|
||||
import me.alpha432.oyvey.features.gui.HudEditorScreen;
|
||||
import me.alpha432.oyvey.features.modules.Module;
|
||||
|
||||
public class HudEditor extends Module {
|
||||
public HudEditor() {
|
||||
super("HudEditor", "Edit HUD element positions", Category.CLIENT, true, false, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
if (fullNullCheck()) {
|
||||
disable();
|
||||
return;
|
||||
}
|
||||
mc.setScreen(OyVey.hudEditorScreen);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
if (fullNullCheck()) return;
|
||||
mc.setScreen(null);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onUpdate(UpdateEvent event) {
|
||||
if (fullNullCheck()) return;
|
||||
if (!(mc.currentScreen instanceof HudEditorScreen)) {
|
||||
disable();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,22 +1,143 @@
|
||||
package me.alpha432.oyvey.features.modules.client;
|
||||
|
||||
import com.google.common.eventbus.Subscribe;
|
||||
import me.alpha432.oyvey.OyVey;
|
||||
import me.alpha432.oyvey.event.impl.MouseEvent;
|
||||
import me.alpha432.oyvey.event.impl.Render2DEvent;
|
||||
import me.alpha432.oyvey.features.gui.HudEditorScreen;
|
||||
import me.alpha432.oyvey.features.modules.Module;
|
||||
import me.alpha432.oyvey.util.TextUtil;
|
||||
import me.alpha432.oyvey.features.settings.Pos;
|
||||
import me.alpha432.oyvey.features.settings.Setting;
|
||||
import me.alpha432.oyvey.util.render.RenderUtil;
|
||||
import net.minecraft.client.gui.screen.ChatScreen;
|
||||
|
||||
public class HudModule extends Module {
|
||||
public HudModule() {
|
||||
super("Hud", "hud", Category.CLIENT, true, false, false);
|
||||
public abstract class HudModule extends Module {
|
||||
public final Setting<Pos> pos = pos("Position", 0.5f, 0.5f);
|
||||
public final Setting<Boolean> chatOffset = bool("ChatOffset", true);
|
||||
private float dragX, dragY, width, height;
|
||||
private boolean dragging, button;
|
||||
|
||||
public HudModule(String name, String description, float width, float height) {
|
||||
super(name, description, Category.HUD, true, false, false);
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRender2D(Render2DEvent event) {
|
||||
event.getContext().drawTextWithShadow(
|
||||
mc.textRenderer,
|
||||
TextUtil.text("{global} %s {} %s", OyVey.NAME, OyVey.VERSION),
|
||||
2, 2,
|
||||
-1
|
||||
);
|
||||
public float getX() {
|
||||
return mc.getWindow().getScaledWidth() * pos.getValue().getX();
|
||||
}
|
||||
|
||||
public float getY() {
|
||||
float baseY = mc.getWindow().getScaledHeight() * pos.getValue().getY();
|
||||
if (chatOffset.getValue() && mc.currentScreen instanceof ChatScreen && !(mc.currentScreen instanceof HudEditorScreen)) {
|
||||
float chatHeight = 14f;
|
||||
if (baseY > mc.getWindow().getScaledHeight() / 2f) {
|
||||
baseY -= chatHeight;
|
||||
}
|
||||
}
|
||||
return baseY;
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onRender2DHud(Render2DEvent e) {
|
||||
if (!(mc.currentScreen instanceof HudEditorScreen) || fullNullCheck()) return;
|
||||
|
||||
float x = getX();
|
||||
float y = getY();
|
||||
|
||||
if (button) {
|
||||
if (!dragging && isHovering() && (OyVey.hudEditorScreen == null || !OyVey.hudEditorScreen.anyHover)) {
|
||||
dragX = getMouseX() - x;
|
||||
dragY = getMouseY() - y;
|
||||
dragging = true;
|
||||
if (OyVey.hudEditorScreen != null) {
|
||||
OyVey.hudEditorScreen.currentDragging = this;
|
||||
}
|
||||
}
|
||||
|
||||
if (dragging) {
|
||||
float finalX = Math.min(Math.max(getMouseX() - dragX, 0),
|
||||
mc.getWindow().getScaledWidth() - width);
|
||||
float finalY = Math.min(Math.max(getMouseY() - dragY, 0),
|
||||
mc.getWindow().getScaledHeight() - height);
|
||||
|
||||
pos.getValue().setX(finalX / mc.getWindow().getScaledWidth());
|
||||
pos.getValue().setY(finalY / mc.getWindow().getScaledHeight());
|
||||
}
|
||||
} else {
|
||||
dragging = false;
|
||||
}
|
||||
|
||||
if (isHovering()) {
|
||||
int textWidth = mc.textRenderer.getWidth(getName());
|
||||
int textHeight = mc.textRenderer.fontHeight;
|
||||
float textX = x + width + 5;
|
||||
if (textX + textWidth > mc.getWindow().getScaledWidth()) {
|
||||
textX = x - 5 - textWidth;
|
||||
}
|
||||
e.getContext().drawTextWithShadow(mc.textRenderer, getName(),
|
||||
(int) textX, (int) (y + height / 2f - textHeight / 2f), -1);
|
||||
}
|
||||
|
||||
RenderUtil.rect(e.getContext().getMatrices(),
|
||||
x - 1, y - 1, x + width + 1, y + height + 1,
|
||||
OyVey.colorManager.getColor().getRGB(), 1.0f);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onMouse(MouseEvent e) {
|
||||
if (!(mc.currentScreen instanceof HudEditorScreen) || fullNullCheck()) return;
|
||||
|
||||
if (e.getAction() == 0) {
|
||||
button = false;
|
||||
dragging = false;
|
||||
if (OyVey.hudEditorScreen != null) {
|
||||
OyVey.hudEditorScreen.currentDragging = null;
|
||||
}
|
||||
} else if (e.getAction() == 1 && isHovering() &&
|
||||
(OyVey.hudEditorScreen == null || OyVey.hudEditorScreen.currentDragging == null)) {
|
||||
button = true;
|
||||
}
|
||||
}
|
||||
|
||||
public int getMouseX() {
|
||||
return (int) (mc.mouse.getX() / mc.getWindow().getScaleFactor());
|
||||
}
|
||||
|
||||
public int getMouseY() {
|
||||
return (int) (mc.mouse.getY() / mc.getWindow().getScaleFactor());
|
||||
}
|
||||
|
||||
public void setBounds(float x, float y, float width, float height) {
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
pos.getValue().setX(x / mc.getWindow().getScaledWidth());
|
||||
pos.getValue().setY(y / mc.getWindow().getScaledHeight());
|
||||
}
|
||||
|
||||
public boolean isHovering() {
|
||||
float x = getX();
|
||||
float y = getY();
|
||||
int mouseX = getMouseX();
|
||||
int mouseY = getMouseY();
|
||||
|
||||
return mouseX >= x - 1 && mouseX <= x + width + 1 &&
|
||||
mouseY >= y - 1 && mouseY <= y + height + 1;
|
||||
}
|
||||
|
||||
public float getWidth() {
|
||||
return width;
|
||||
}
|
||||
|
||||
public float getHeight() {
|
||||
return height;
|
||||
}
|
||||
|
||||
public void setWidth(float width) {
|
||||
this.width = width;
|
||||
}
|
||||
|
||||
public void setHeight(float height) {
|
||||
this.height = height;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
package me.alpha432.oyvey.features.modules.client;
|
||||
|
||||
import com.google.common.eventbus.Subscribe;
|
||||
import me.alpha432.oyvey.OyVey;
|
||||
import me.alpha432.oyvey.event.impl.Render2DEvent;
|
||||
import me.alpha432.oyvey.features.settings.Setting;
|
||||
import me.alpha432.oyvey.util.TextUtil;
|
||||
|
||||
public class Watermark extends HudModule {
|
||||
public Setting<String> text = str("Text", "OyVey");
|
||||
|
||||
public Watermark() {
|
||||
super("Watermark", "Display watermark", 100, 10);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Subscribe
|
||||
public void onRender2D(Render2DEvent e) {
|
||||
super.onRender2DHud(e);
|
||||
|
||||
e.getContext().drawTextWithShadow(mc.textRenderer,
|
||||
TextUtil.text("{global} %s {} %s", text.getValue(), OyVey.VERSION),
|
||||
(int) getX(), (int) getY(), -1);
|
||||
|
||||
String watermarkString = text.getValue() + " " + OyVey.VERSION;
|
||||
setWidth(mc.textRenderer.getWidth(watermarkString));
|
||||
setHeight(mc.textRenderer.fontHeight);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package me.alpha432.oyvey.features.modules.render;
|
||||
import com.google.common.eventbus.Subscribe;
|
||||
import me.alpha432.oyvey.event.impl.Render3DEvent;
|
||||
import me.alpha432.oyvey.features.modules.Module;
|
||||
import me.alpha432.oyvey.features.settings.Setting;
|
||||
import me.alpha432.oyvey.util.render.RenderUtil;
|
||||
import net.minecraft.util.hit.BlockHitResult;
|
||||
import net.minecraft.util.math.Box;
|
||||
@@ -11,6 +12,9 @@ import net.minecraft.util.shape.VoxelShape;
|
||||
import java.awt.*;
|
||||
|
||||
public class BlockHighlight extends Module {
|
||||
public Setting<Color> color = color("Color", 255, 0, 0, 255);
|
||||
public Setting<Float> lineWidth = num("LineWidth", 1.0f, 0.1f, 5.0f);
|
||||
|
||||
public BlockHighlight() {
|
||||
super("BlockHighlight", "Draws box at the block that you are looking at", Category.RENDER, true, false, false);
|
||||
}
|
||||
@@ -22,7 +26,7 @@ public class BlockHighlight extends Module {
|
||||
if (shape.isEmpty()) return;
|
||||
Box box = shape.getBoundingBox();
|
||||
box = box.offset(result.getBlockPos());
|
||||
RenderUtil.drawBox(event.getMatrix(), box, Color.red, 1f);
|
||||
RenderUtil.drawBox(event.getMatrix(), box, color.getValue(), lineWidth.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
package me.alpha432.oyvey.features.settings;
|
||||
|
||||
public class Pos {
|
||||
private float x, y;
|
||||
|
||||
public Pos(float x, float y) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
}
|
||||
|
||||
public float getX() {
|
||||
return x;
|
||||
}
|
||||
|
||||
public void setX(float x) {
|
||||
this.x = x;
|
||||
}
|
||||
|
||||
public float getY() {
|
||||
return y;
|
||||
}
|
||||
|
||||
public void setY(float y) {
|
||||
this.y = y;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return x + "," + y;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -208,6 +208,12 @@ public class Setting<T> {
|
||||
if (this.isEnumSetting()) {
|
||||
return "Enum";
|
||||
}
|
||||
if (this.isColorSetting()) {
|
||||
return "Color";
|
||||
}
|
||||
if (this.isPoseSetting()) {
|
||||
return "Pos";
|
||||
}
|
||||
return this.getClassName(this.defaultValue);
|
||||
}
|
||||
|
||||
@@ -227,13 +233,21 @@ public class Setting<T> {
|
||||
}
|
||||
|
||||
public boolean isEnumSetting() {
|
||||
return !this.isNumberSetting() && !(this.value instanceof String) && !(this.value instanceof Bind) && !(this.value instanceof Character) && !(this.value instanceof Boolean);
|
||||
return !this.isNumberSetting() && !(this.value instanceof String) && !(this.value instanceof Bind) && !(this.value instanceof Character) && !(this.value instanceof Boolean) && !this.isColorSetting() && !this.isPoseSetting();
|
||||
}
|
||||
|
||||
public boolean isStringSetting() {
|
||||
return this.value instanceof String;
|
||||
}
|
||||
|
||||
public boolean isColorSetting() {
|
||||
return this.value instanceof java.awt.Color;
|
||||
}
|
||||
|
||||
public boolean isPoseSetting() {
|
||||
return this.value instanceof Pos;
|
||||
}
|
||||
|
||||
public T getDefaultValue() {
|
||||
return this.defaultValue;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package me.alpha432.oyvey.features.settings;
|
||||
|
||||
import java.awt.Color;
|
||||
|
||||
public interface SettingFactory {
|
||||
<T extends Setting<?>> T register(T setting);
|
||||
|
||||
@@ -23,4 +25,20 @@ public interface SettingFactory {
|
||||
return register(new Setting<>(name, bind));
|
||||
}
|
||||
|
||||
default Setting<Color> color(String name, Color value) {
|
||||
return register(new Setting<>(name, value));
|
||||
}
|
||||
|
||||
default Setting<Color> color(String name, int r, int g, int b, int a) {
|
||||
return register(new Setting<>(name, new Color(r, g, b, a)));
|
||||
}
|
||||
|
||||
default Setting<Pos> pos(String name, Pos value) {
|
||||
return register(new Setting<>(name, value));
|
||||
}
|
||||
|
||||
default Setting<Pos> pos(String name, float x, float y) {
|
||||
return register(new Setting<>(name, new Pos(x, y)));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -7,15 +7,11 @@ import me.alpha432.oyvey.util.ColorUtil;
|
||||
import java.awt.*;
|
||||
|
||||
public class ColorManager {
|
||||
private float red = 1.0f;
|
||||
private float green = 1.0f;
|
||||
private float blue = 1.0f;
|
||||
private float alpha = 1.0f;
|
||||
private Color color = new Color(this.red, this.green, this.blue, this.alpha);
|
||||
private Color color = new Color(0, 0, 255, 180);
|
||||
|
||||
public void init() {
|
||||
ClickGui ui = ClickGui.getInstance();
|
||||
setColor(ui.red.getValue(), ui.green.getValue(), ui.blue.getValue(), ui.hoverAlpha.getValue());
|
||||
setColor(ui.color.getValue());
|
||||
}
|
||||
|
||||
public Color getColor() {
|
||||
@@ -38,46 +34,6 @@ public class ColorManager {
|
||||
if (ClickGui.getInstance().rainbow.getValue()) {
|
||||
return ColorUtil.rainbow(Component.counter1[0] * ClickGui.getInstance().rainbowHue.getValue()).getRGB();
|
||||
}
|
||||
return ColorUtil.toRGBA(new Color(this.red, this.green, this.blue, (float) alpha / 255.0f));
|
||||
}
|
||||
|
||||
public void setColor(float red, float green, float blue, float alpha) {
|
||||
this.red = red;
|
||||
this.green = green;
|
||||
this.blue = blue;
|
||||
this.alpha = alpha;
|
||||
this.updateColor();
|
||||
}
|
||||
|
||||
public void updateColor() {
|
||||
this.setColor(new Color(this.red, this.green, this.blue, this.alpha));
|
||||
}
|
||||
|
||||
public void setColor(int red, int green, int blue, int alpha) {
|
||||
this.red = (float) red / 255.0f;
|
||||
this.green = (float) green / 255.0f;
|
||||
this.blue = (float) blue / 255.0f;
|
||||
this.alpha = (float) alpha / 255.0f;
|
||||
this.updateColor();
|
||||
}
|
||||
|
||||
public void setRed(float red) {
|
||||
this.red = red;
|
||||
this.updateColor();
|
||||
}
|
||||
|
||||
public void setGreen(float green) {
|
||||
this.green = green;
|
||||
this.updateColor();
|
||||
}
|
||||
|
||||
public void setBlue(float blue) {
|
||||
this.blue = blue;
|
||||
this.updateColor();
|
||||
}
|
||||
|
||||
public void setAlpha(float alpha) {
|
||||
this.alpha = alpha;
|
||||
this.updateColor();
|
||||
return new Color(this.color.getRed(), this.color.getGreen(), this.color.getBlue(), alpha).getRGB();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ import me.alpha432.oyvey.features.settings.Setting;
|
||||
import me.alpha432.oyvey.util.traits.Jsonable;
|
||||
import net.fabricmc.loader.api.FabricLoader;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.List;
|
||||
@@ -25,6 +26,7 @@ public class ConfigManager {
|
||||
|
||||
@SuppressWarnings({"rawtypes", "unchecked"})
|
||||
public static void setValueFromJson(Feature feature, Setting setting, JsonElement element) {
|
||||
if (element == null || element.isJsonNull()) return;
|
||||
String str;
|
||||
switch (setting.getType()) {
|
||||
case "Boolean" -> {
|
||||
@@ -46,6 +48,34 @@ public class ConfigManager {
|
||||
case "Bind" -> {
|
||||
setting.setValue(new Bind(element.getAsInt()));
|
||||
}
|
||||
case "Color" -> {
|
||||
try {
|
||||
String colorStr = element.getAsString();
|
||||
String[] parts = colorStr.split(",");
|
||||
if (parts.length == 4) {
|
||||
int r = Integer.parseInt(parts[0]);
|
||||
int g = Integer.parseInt(parts[1]);
|
||||
int b = Integer.parseInt(parts[2]);
|
||||
int a = Integer.parseInt(parts[3]);
|
||||
setting.setValue(new Color(r, g, b, a));
|
||||
}
|
||||
} catch (Exception exception) {
|
||||
OyVey.LOGGER.error("Error parsing color for: " + feature.getName() + " : " + setting.getName());
|
||||
}
|
||||
}
|
||||
case "Pos" -> {
|
||||
try {
|
||||
String posStr = element.getAsString();
|
||||
String[] parts = posStr.split(",");
|
||||
if (parts.length == 2) {
|
||||
float x = Float.parseFloat(parts[0]);
|
||||
float y = Float.parseFloat(parts[1]);
|
||||
setting.setValue(new me.alpha432.oyvey.features.settings.Pos(x, y));
|
||||
}
|
||||
} catch (Exception exception) {
|
||||
OyVey.LOGGER.error("Error parsing position for: " + feature.getName() + " : " + setting.getName());
|
||||
}
|
||||
}
|
||||
case "Enum" -> {
|
||||
try {
|
||||
EnumConverter converter = new EnumConverter(((Enum) setting.getValue()).getClass());
|
||||
|
||||
@@ -7,6 +7,7 @@ import me.alpha432.oyvey.event.impl.Render3DEvent;
|
||||
import me.alpha432.oyvey.features.Feature;
|
||||
import me.alpha432.oyvey.features.modules.Module;
|
||||
import me.alpha432.oyvey.features.modules.client.ClickGui;
|
||||
import me.alpha432.oyvey.features.modules.client.*;
|
||||
import me.alpha432.oyvey.features.modules.client.HudModule;
|
||||
import me.alpha432.oyvey.features.modules.combat.Criticals;
|
||||
import me.alpha432.oyvey.features.modules.misc.MCF;
|
||||
@@ -31,7 +32,9 @@ public class ModuleManager implements Jsonable, Util {
|
||||
public List<String> sortedModulesABC = new ArrayList<>();
|
||||
|
||||
public void init() {
|
||||
modules.add(new HudModule());
|
||||
modules.add(new Watermark());
|
||||
modules.add(new Coordinates());
|
||||
modules.add(new HudEditor());
|
||||
modules.add(new ClickGui());
|
||||
modules.add(new Criticals());
|
||||
modules.add(new MCF());
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package me.alpha432.oyvey.mixin;
|
||||
|
||||
import me.alpha432.oyvey.event.impl.MouseEvent;
|
||||
import net.minecraft.client.Mouse;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
import static me.alpha432.oyvey.util.traits.Util.EVENT_BUS;
|
||||
|
||||
@Mixin(Mouse.class)
|
||||
public class MixinMouse {
|
||||
@Inject(method = "onMouseButton", at = @At("HEAD"), cancellable = true)
|
||||
private void onMouseButton(long window, int button, int action, int mods, CallbackInfo ci) {
|
||||
MouseEvent event = new MouseEvent(button, action);
|
||||
EVENT_BUS.post(event);
|
||||
if (event.isCancelled()) {
|
||||
ci.cancel();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,6 +93,28 @@ public class RenderUtil implements Util {
|
||||
Layers.getGlobalQuads().draw(bufferBuilder.end());
|
||||
}
|
||||
|
||||
public static void horizontalGradient(MatrixStack matrix, float x1, float y1, float x2, float y2, Color left, Color right) {
|
||||
BufferBuilder bufferBuilder = Tessellator.getInstance()
|
||||
.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_COLOR);
|
||||
bufferBuilder.vertex(matrix.peek().getPositionMatrix(), x1, y1, 0.0F).color(left.getRed() / 255.0F, left.getGreen() / 255.0F, left.getBlue() / 255.0F, left.getAlpha() / 255.0F);
|
||||
bufferBuilder.vertex(matrix.peek().getPositionMatrix(), x1, y2, 0.0F).color(left.getRed() / 255.0F, left.getGreen() / 255.0F, left.getBlue() / 255.0F, left.getAlpha() / 255.0F);
|
||||
bufferBuilder.vertex(matrix.peek().getPositionMatrix(), x2, y2, 0.0F).color(right.getRed() / 255.0F, right.getGreen() / 255.0F, right.getBlue() / 255.0F, right.getAlpha() / 255.0F);
|
||||
bufferBuilder.vertex(matrix.peek().getPositionMatrix(), x2, y1, 0.0F).color(right.getRed() / 255.0F, right.getGreen() / 255.0F, right.getBlue() / 255.0F, right.getAlpha() / 255.0F);
|
||||
|
||||
Layers.getGlobalQuads().draw(bufferBuilder.end());
|
||||
}
|
||||
|
||||
public static void verticalGradient(MatrixStack matrix, float x1, float y1, float x2, float y2, Color top, Color bottom) {
|
||||
BufferBuilder bufferBuilder = Tessellator.getInstance()
|
||||
.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_COLOR);
|
||||
bufferBuilder.vertex(matrix.peek().getPositionMatrix(), x1, y1, 0.0F).color(top.getRed() / 255.0F, top.getGreen() / 255.0F, top.getBlue() / 255.0F, top.getAlpha() / 255.0F);
|
||||
bufferBuilder.vertex(matrix.peek().getPositionMatrix(), x1, y2, 0.0F).color(bottom.getRed() / 255.0F, bottom.getGreen() / 255.0F, bottom.getBlue() / 255.0F, bottom.getAlpha() / 255.0F);
|
||||
bufferBuilder.vertex(matrix.peek().getPositionMatrix(), x2, y2, 0.0F).color(bottom.getRed() / 255.0F, bottom.getGreen() / 255.0F, bottom.getBlue() / 255.0F, bottom.getAlpha() / 255.0F);
|
||||
bufferBuilder.vertex(matrix.peek().getPositionMatrix(), x2, y1, 0.0F).color(top.getRed() / 255.0F, top.getGreen() / 255.0F, top.getBlue() / 255.0F, top.getAlpha() / 255.0F);
|
||||
|
||||
Layers.getGlobalQuads().draw(bufferBuilder.end());
|
||||
}
|
||||
|
||||
// 3d
|
||||
public static void drawBoxFilled(MatrixStack stack, Box box, Color c) {
|
||||
float minX = (float) (box.minX - mc.getEntityRenderDispatcher().camera.getPos().getX());
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
"MixinClientPlayNetworkHandler",
|
||||
"MixinInGameHud",
|
||||
"MixinKeyboard",
|
||||
"MixinMouse",
|
||||
"MixinRenderTickCounter",
|
||||
"MixinWorldRenderer"
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user