added coords
This commit is contained in:
@@ -16,11 +16,18 @@ public class Config {
|
||||
public int fpsSize = 16;
|
||||
public int fpsX = 1;
|
||||
public int fpsY = 1;
|
||||
public boolean fpsEnabled = true;
|
||||
public String lastModule = "FPS";
|
||||
|
||||
public int keyX = 1;
|
||||
public int keyY = 1;
|
||||
public int keySize = 16;
|
||||
public boolean keyEnabled = true;
|
||||
|
||||
public int coordsX = 1;
|
||||
public int coordsY = 1;
|
||||
public int coordsP = 4;
|
||||
public boolean coordsEnabled = true;
|
||||
|
||||
private static final Gson GSON = new GsonBuilder().setPrettyPrinting().create();
|
||||
private static final Path PATH = FabricLoader.getInstance()
|
||||
|
||||
@@ -0,0 +1,121 @@
|
||||
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.Minecraft;
|
||||
import net.minecraft.client.player.LocalPlayer;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.resources.Identifier;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import de.fullrisk.citrusDev.Config;
|
||||
|
||||
public class Module_Coords {
|
||||
|
||||
private static LabelComponent x;
|
||||
private static LabelComponent y;
|
||||
private static LabelComponent z;
|
||||
public static FlowLayout coordinates;
|
||||
|
||||
private static final Config CONFIG = Config.get();
|
||||
|
||||
// Loaded from Config instead of hardcoded, so the toggle survives a restart.
|
||||
static boolean toggle = CONFIG.coordsEnabled;
|
||||
private static boolean shown = false;
|
||||
|
||||
public static boolean isEnabled() {
|
||||
return toggle;
|
||||
}
|
||||
|
||||
public static void setEnabled(boolean value) {
|
||||
toggle = value;
|
||||
CONFIG.coordsEnabled = value;
|
||||
CONFIG.save();
|
||||
}
|
||||
|
||||
private static final Surface GLASS_PANEL = Surface.blur(5f, 15f)
|
||||
.and(Surface.flat(0x40FFFFFF));
|
||||
|
||||
public static void setPosition(int x, int y) {
|
||||
if (coordinates != null) {
|
||||
coordinates.positioning(Positioning.relative(x, y));
|
||||
}
|
||||
CONFIG.coordsX = x;
|
||||
CONFIG.coordsY = y;
|
||||
CONFIG.save();
|
||||
}
|
||||
|
||||
public static void setCoordsPadding(int padding) {
|
||||
CONFIG.coordsP = padding;
|
||||
CONFIG.save();
|
||||
|
||||
if (coordinates == null) return;
|
||||
coordinates.padding(Insets.of(padding));
|
||||
}
|
||||
|
||||
public static void register() {
|
||||
Hud.add(Identifier.fromNamespaceAndPath("citrus-dev", "coords_display"), () -> {
|
||||
if (coordinates == null) {
|
||||
x = UIComponents.label(Component.literal(""));
|
||||
y = UIComponents.label(Component.literal(""));
|
||||
z = UIComponents.label(Component.literal(""));
|
||||
|
||||
coordinates = UIContainers.verticalFlow(Sizing.content(), Sizing.content());
|
||||
coordinates.gap(2);
|
||||
coordinates.verticalAlignment(VerticalAlignment.CENTER);
|
||||
coordinates.horizontalAlignment(HorizontalAlignment.CENTER);
|
||||
coordinates.padding(Insets.of(0));
|
||||
|
||||
coordinates.positioning(Positioning.relative(CONFIG.coordsX, CONFIG.coordsY));
|
||||
}
|
||||
return coordinates;
|
||||
});
|
||||
}
|
||||
|
||||
public static Vec3 getPlayerPosition() {
|
||||
LocalPlayer player = Minecraft.getInstance().player;
|
||||
return player != null ? player.position() : null;
|
||||
}
|
||||
|
||||
public static double getX() {
|
||||
LocalPlayer player = Minecraft.getInstance().player;
|
||||
return player != null ? player.getX() : 0.0;
|
||||
}
|
||||
|
||||
public static double getY() {
|
||||
LocalPlayer player = Minecraft.getInstance().player;
|
||||
return player != null ? player.getY() : 0.0;
|
||||
}
|
||||
|
||||
public static double getZ() {
|
||||
LocalPlayer player = Minecraft.getInstance().player;
|
||||
return player != null ? player.getZ() : 0.0;
|
||||
}
|
||||
|
||||
public static void tick() {
|
||||
if (coordinates == null) return;
|
||||
|
||||
if (toggle && !shown) {
|
||||
coordinates.surface(GLASS_PANEL);
|
||||
coordinates.padding(Insets.of(CONFIG.coordsP));
|
||||
coordinates.child(x);
|
||||
coordinates.child(y);
|
||||
coordinates.child(z);
|
||||
shown = true;
|
||||
} else if (!toggle && shown) {
|
||||
coordinates.clearChildren();
|
||||
coordinates.surface(Surface.flat(0));
|
||||
coordinates.padding(Insets.of(0));
|
||||
shown = false;
|
||||
}
|
||||
|
||||
if (!toggle) return;
|
||||
|
||||
x.text(Component.literal("X: " + String.format("%.1f", Module_Coords.getX())));
|
||||
y.text(Component.literal("Y: " + String.format("%.1f", Module_Coords.getY())));
|
||||
z.text(Component.literal("Z: " + String.format("%.1f", Module_Coords.getZ())));
|
||||
}
|
||||
}
|
||||
@@ -15,11 +15,23 @@ public class Module_FPS {
|
||||
|
||||
private static LabelComponent fpsLabel;
|
||||
public static FlowLayout fpsContainer;
|
||||
static boolean toggle = true;
|
||||
private static boolean shown = false;
|
||||
|
||||
private static final Config CONFIG = Config.get();
|
||||
|
||||
// Loaded from Config instead of hardcoded, so the toggle survives a restart.
|
||||
static boolean toggle = CONFIG.fpsEnabled;
|
||||
private static boolean shown = false;
|
||||
|
||||
public static boolean isEnabled() {
|
||||
return toggle;
|
||||
}
|
||||
|
||||
public static void setEnabled(boolean value) {
|
||||
toggle = value;
|
||||
CONFIG.fpsEnabled = value;
|
||||
CONFIG.save();
|
||||
}
|
||||
|
||||
private static final Surface GLASS_PANEL = Surface.blur(5f, 15f)
|
||||
.and(Surface.flat(0x40FFFFFF));
|
||||
|
||||
|
||||
@@ -25,18 +25,22 @@ public class Module_KeyStrokes {
|
||||
private static FlowLayout wBox, aBox, sBox, dBox;
|
||||
private static ScalableLabel wLabel, aLabel, sLabel, dLabel; // was LabelComponent
|
||||
|
||||
static boolean toggle = true;
|
||||
private static final Config CONFIG = Config.get();
|
||||
|
||||
// Loaded from Config instead of hardcoded, so the toggle survives a restart.
|
||||
static boolean toggle = CONFIG.keyEnabled;
|
||||
private static boolean shown = false;
|
||||
|
||||
public static boolean isEnabled() {
|
||||
return toggle;
|
||||
}
|
||||
|
||||
public static void setEnabled(boolean value) {
|
||||
toggle = value;
|
||||
CONFIG.keyEnabled = value;
|
||||
CONFIG.save();
|
||||
}
|
||||
|
||||
private static final Config CONFIG = Config.get();
|
||||
|
||||
private static final Surface GLASS_PANEL = Surface.blur(5f, 15f)
|
||||
.and(Surface.flat(0x40FFFFFF));
|
||||
|
||||
|
||||
@@ -291,6 +291,28 @@ public class MyScreen extends BaseOwoScreen<FlowLayout> {
|
||||
"Module Enabled", "Keystrokes is now active",
|
||||
"Module Disabled", "KeyStrokes is now inactive"
|
||||
);
|
||||
|
||||
FlowLayout coordinatesRow = ModuleRow.build(
|
||||
GLASS_PANEL, DISABLED, FLAT,
|
||||
Identifier.fromNamespaceAndPath("citrus-dev", "textures/icons/block_culling_file.png"),
|
||||
18, 12,
|
||||
MC_FIVE,
|
||||
"Coordinates",
|
||||
"Shows your Position",
|
||||
new ModuleRow.ToggleState() {
|
||||
public boolean get() { return Module_Coords.toggle; }
|
||||
public void set(boolean value) { Module_Coords.toggle = value; }
|
||||
},
|
||||
Identifier.fromNamespaceAndPath("citrus-dev", "textures/icons/settings.png"),
|
||||
() -> {
|
||||
Config.get().lastModule = "Coords";
|
||||
Config.get().save();
|
||||
openModuleSettings("Coords", CoordsSettings());
|
||||
},
|
||||
"Module Enabled", "Keystrokes is now active",
|
||||
"Module Disabled", "KeyStrokes is now inactive"
|
||||
);
|
||||
content.child(coordinatesRow);
|
||||
content.child(keyStrokesRow);
|
||||
content.child(fpsRow);
|
||||
|
||||
@@ -421,6 +443,23 @@ public class MyScreen extends BaseOwoScreen<FlowLayout> {
|
||||
);
|
||||
}
|
||||
|
||||
private List<SettingRow> CoordsSettings() {
|
||||
List<SettingsControls.ButtonState> positionStates = List.of(
|
||||
new SettingsControls.ButtonState("L-TOP", () -> Module_Coords.setPosition(1, 1)),
|
||||
new SettingsControls.ButtonState("R-TOP", () -> Module_Coords.setPosition(99, 1)),
|
||||
new SettingsControls.ButtonState("R-BOTTOM", () -> Module_Coords.setPosition(99, 99)),
|
||||
new SettingsControls.ButtonState("L-BOTTOM", () -> Module_Coords.setPosition(1, 99))
|
||||
);
|
||||
|
||||
|
||||
int currentIndex = positionIndex(Config.get().fpsX, Config.get().fpsY);
|
||||
|
||||
return List.of(
|
||||
new SettingRow("Position", SettingsControls.makeCyclingButton(GLASS_PANEL, positionStates, currentIndex))
|
||||
|
||||
);
|
||||
}
|
||||
|
||||
private int positionIndex(int x, int y) {
|
||||
boolean right = x > 50;
|
||||
boolean bottom = y > 50;
|
||||
|
||||
@@ -2,10 +2,7 @@ package de.fullrisk.citrusDev.client;
|
||||
|
||||
|
||||
import de.fullrisk.citrusDev.Config;
|
||||
import de.fullrisk.citrusDev.UI.Module_FPS;
|
||||
import de.fullrisk.citrusDev.UI.Module_KeyStrokes;
|
||||
import de.fullrisk.citrusDev.UI.MyScreen;
|
||||
import de.fullrisk.citrusDev.UI.OverviewScreen;
|
||||
import de.fullrisk.citrusDev.UI.*;
|
||||
import io.wispforest.owo.ui.hud.Hud;
|
||||
import net.fabricmc.api.ClientModInitializer;
|
||||
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
|
||||
@@ -22,6 +19,7 @@ public class CitrusDevClient implements ClientModInitializer {
|
||||
public void onInitializeClient() {
|
||||
Module_FPS.register();
|
||||
Module_KeyStrokes.register();
|
||||
Module_Coords.register();
|
||||
|
||||
KeyMapping.Category category = KeyMapping.Category.register(
|
||||
Identifier.fromNamespaceAndPath("citrus-dev", "general"));
|
||||
@@ -39,6 +37,7 @@ public class CitrusDevClient implements ClientModInitializer {
|
||||
|
||||
Module_FPS.tick();
|
||||
Module_KeyStrokes.tick();
|
||||
Module_Coords.tick();
|
||||
|
||||
while (openScreenKey.consumeClick()) {
|
||||
if (client.player != null && client.player.isShiftKeyDown()) {
|
||||
|
||||
Reference in New Issue
Block a user