Added Quests and Real Settings (yay)
This commit is contained in:
@@ -0,0 +1,130 @@
|
||||
package de.fullrisk.citrusDev.UI;
|
||||
|
||||
import io.wispforest.owo.ui.component.LabelComponent;
|
||||
import io.wispforest.owo.ui.component.UIComponents;
|
||||
import io.wispforest.owo.ui.container.FlowLayout;
|
||||
import io.wispforest.owo.ui.container.UIContainers;
|
||||
import io.wispforest.owo.ui.core.*;
|
||||
import io.wispforest.owo.ui.hud.Hud;
|
||||
import net.minecraft.client.KeyMapping;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.resources.Identifier;
|
||||
import de.fullrisk.citrusDev.Config;
|
||||
|
||||
public class Module_KeyStrokes {
|
||||
|
||||
private static FlowLayout keyContainer;
|
||||
private static FlowLayout topRow;
|
||||
private static FlowLayout bottomRow;
|
||||
|
||||
private static FlowLayout wBox, aBox, sBox, dBox;
|
||||
private static LabelComponent wLabel, aLabel, sLabel, dLabel;
|
||||
|
||||
static boolean toggle = true;
|
||||
private static boolean shown = false;
|
||||
public static boolean isEnabled() {
|
||||
return toggle;
|
||||
}
|
||||
|
||||
public static void setEnabled(boolean value) {
|
||||
toggle = value;
|
||||
}
|
||||
|
||||
private static final Config CONFIG = Config.get();
|
||||
|
||||
private static final Surface GLASS_PANEL = Surface.blur(5f, 15f)
|
||||
.and(Surface.flat(0x40FFFFFF));
|
||||
|
||||
private static final int KEY_SIZE = 16;
|
||||
private static final int PRESSED_COLOR = 0xFF64de4b;
|
||||
private static final int IDLE_COLOR = 0x40FFFFFF;
|
||||
|
||||
public static void setPosition(int x, int y) {
|
||||
if (keyContainer != null) {
|
||||
keyContainer.positioning(Positioning.relative(x, y));
|
||||
}
|
||||
CONFIG.keyX = x;
|
||||
CONFIG.keyY = y;
|
||||
CONFIG.save();
|
||||
}
|
||||
|
||||
public static void register() {
|
||||
Hud.add(Identifier.fromNamespaceAndPath("citrus-dev", "keystrokes_display"), () -> {
|
||||
if (keyContainer == null) {
|
||||
wLabel = UIComponents.label(Component.literal("W"));
|
||||
aLabel = UIComponents.label(Component.literal("A"));
|
||||
sLabel = UIComponents.label(Component.literal("S"));
|
||||
dLabel = UIComponents.label(Component.literal("D"));
|
||||
|
||||
wBox = makeKeyBox(wLabel);
|
||||
aBox = makeKeyBox(aLabel);
|
||||
sBox = makeKeyBox(sLabel);
|
||||
dBox = makeKeyBox(dLabel);
|
||||
|
||||
topRow = UIContainers.horizontalFlow(Sizing.content(), Sizing.content());
|
||||
topRow.gap(2);
|
||||
topRow.horizontalAlignment(HorizontalAlignment.CENTER);
|
||||
topRow.child(UIContainers.horizontalFlow(Sizing.fixed(KEY_SIZE), Sizing.fixed(KEY_SIZE))); // spacer
|
||||
topRow.child(wBox);
|
||||
topRow.child(UIContainers.horizontalFlow(Sizing.fixed(KEY_SIZE), Sizing.fixed(KEY_SIZE))); // spacer
|
||||
|
||||
bottomRow = UIContainers.horizontalFlow(Sizing.content(), Sizing.content());
|
||||
bottomRow.gap(2);
|
||||
bottomRow.horizontalAlignment(HorizontalAlignment.CENTER);
|
||||
bottomRow.child(aBox);
|
||||
bottomRow.child(sBox);
|
||||
bottomRow.child(dBox);
|
||||
|
||||
keyContainer = UIContainers.verticalFlow(Sizing.content(), Sizing.content());
|
||||
keyContainer.gap(2);
|
||||
keyContainer.verticalAlignment(VerticalAlignment.CENTER);
|
||||
keyContainer.horizontalAlignment(HorizontalAlignment.CENTER);
|
||||
keyContainer.padding(Insets.of(0));
|
||||
|
||||
keyContainer.positioning(Positioning.relative(CONFIG.keyX, CONFIG.keyY));
|
||||
}
|
||||
return keyContainer;
|
||||
});
|
||||
}
|
||||
|
||||
private static FlowLayout makeKeyBox(LabelComponent label) {
|
||||
FlowLayout box = UIContainers.verticalFlow(Sizing.fixed(KEY_SIZE), Sizing.fixed(KEY_SIZE));
|
||||
box.horizontalAlignment(HorizontalAlignment.CENTER);
|
||||
box.verticalAlignment(VerticalAlignment.CENTER);
|
||||
box.surface(Surface.flat(IDLE_COLOR));
|
||||
box.child(label);
|
||||
return box;
|
||||
}
|
||||
|
||||
public static void tick() {
|
||||
if (keyContainer == null) return;
|
||||
|
||||
if (toggle && !shown) {
|
||||
keyContainer.clearChildren(); // <-- safety net against duplicate adds
|
||||
keyContainer.surface(GLASS_PANEL);
|
||||
keyContainer.padding(Insets.of(Config.get().fpsP));
|
||||
keyContainer.child(topRow);
|
||||
keyContainer.child(bottomRow);
|
||||
shown = true;
|
||||
} else if (!toggle && shown) {
|
||||
keyContainer.clearChildren();
|
||||
keyContainer.surface(Surface.flat(0));
|
||||
keyContainer.padding(Insets.of(0));
|
||||
shown = false;
|
||||
}
|
||||
|
||||
if (!toggle) return;
|
||||
|
||||
Minecraft client = Minecraft.getInstance();
|
||||
KeyMapping up = client.options.keyUp;
|
||||
KeyMapping left = client.options.keyLeft;
|
||||
KeyMapping down = client.options.keyDown;
|
||||
KeyMapping right = client.options.keyRight;
|
||||
|
||||
wBox.surface(Surface.flat(up.isDown() ? PRESSED_COLOR : IDLE_COLOR));
|
||||
aBox.surface(Surface.flat(left.isDown() ? PRESSED_COLOR : IDLE_COLOR));
|
||||
sBox.surface(Surface.flat(down.isDown() ? PRESSED_COLOR : IDLE_COLOR));
|
||||
dBox.surface(Surface.flat(right.isDown() ? PRESSED_COLOR : IDLE_COLOR));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user