simple mods
This commit is contained in:
@@ -6,6 +6,7 @@ import net.minecraft.util.math.ColorHelper;
|
||||
|
||||
import org.saturnclient.saturnclient.cloaks.Cloaks;
|
||||
import org.saturnclient.saturnclient.event.KeyInputHandler;
|
||||
import org.saturnclient.saturnmods.ModManager;
|
||||
import org.saturnclient.saturnclient.auth.SaturnSocket;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@@ -18,11 +19,13 @@ public class SaturnClient implements ModInitializer {
|
||||
public static final String MOD_ID = "saturnclient";
|
||||
public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID);
|
||||
public static int COLOR = ColorHelper.getArgb(255, 251, 60, 79);
|
||||
public static int WHITE = ColorHelper.getArgb(255, 255, 255, 255);
|
||||
public static TextRenderer textRenderer = null;
|
||||
|
||||
@Override
|
||||
public void onInitialize() {
|
||||
LOGGER.info("Initializing " + MOD_ID);
|
||||
ModManager.init();
|
||||
|
||||
KeyInputHandler.register();
|
||||
if (SaturnSocket.authenticate()) {
|
||||
|
||||
@@ -0,0 +1,87 @@
|
||||
package org.saturnclient.saturnclient.menus;
|
||||
|
||||
import net.minecraft.client.gui.DrawContext;
|
||||
import net.minecraft.client.gui.screen.Screen;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import net.minecraft.text.Text;
|
||||
|
||||
import org.saturnclient.saturnmods.HudMod;
|
||||
import org.saturnclient.saturnmods.ModDimensions;
|
||||
import org.saturnclient.saturnmods.ModManager;
|
||||
import org.saturnclient.saturnmods.SaturnMod;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class HudEditor extends Screen {
|
||||
private List<HudMod> hudMods = new ArrayList<>();
|
||||
private HudMod draggingMod = null;
|
||||
private int offsetX, offsetY;
|
||||
|
||||
public HudEditor() {
|
||||
super(Text.literal("HUD Editor"));
|
||||
for (SaturnMod m : ModManager.MODS) {
|
||||
if (m.isEnabled() && m instanceof HudMod) {
|
||||
HudMod mod = (HudMod) m;
|
||||
hudMods.add(mod);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean mouseClicked(double mouseX, double mouseY, int button) {
|
||||
if (button == 0) {
|
||||
for (int m = hudMods.size() - 1; m >= 0; m--) {
|
||||
HudMod mod = hudMods.get(m);
|
||||
ModDimensions dim = mod.getDimensions();
|
||||
if (isInside(mouseX, mouseY, dim)) {
|
||||
draggingMod = mod;
|
||||
offsetX = (int) (mouseX - dim.x);
|
||||
offsetY = (int) (mouseY - dim.y);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.mouseClicked(mouseX, mouseY, button);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean mouseReleased(double mouseX, double mouseY, int button) {
|
||||
if (button == 0) {
|
||||
draggingMod = null;
|
||||
}
|
||||
return super.mouseReleased(mouseX, mouseY, button);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean mouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY) {
|
||||
if (draggingMod != null) {
|
||||
ModDimensions dim = draggingMod.getDimensions();
|
||||
dim.x = (int) mouseX - offsetX;
|
||||
dim.y = (int) mouseY - offsetY;
|
||||
}
|
||||
return super.mouseDragged(mouseX, mouseY, button, deltaX, deltaY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(DrawContext context, int mouseX, int mouseY, float delta) {
|
||||
for (HudMod mod : hudMods) {
|
||||
ModDimensions dim = mod.getDimensions();
|
||||
MatrixStack matrices = context.getMatrices();
|
||||
matrices.push();
|
||||
|
||||
matrices.translate(dim.x, dim.y, 0);
|
||||
|
||||
matrices.scale(dim.scale, dim.scale, 1.0f);
|
||||
|
||||
mod.renderDummy(context);
|
||||
|
||||
matrices.pop();
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isInside(double mouseX, double mouseY, ModDimensions dim) {
|
||||
return mouseX >= dim.x && mouseX <= dim.x + (dim.width * dim.scale) && mouseY >= dim.y
|
||||
&& mouseY <= dim.y + (dim.height * dim.scale);
|
||||
}
|
||||
}
|
||||
@@ -34,7 +34,7 @@ public class MainMenu extends SaturnUi {
|
||||
draw(
|
||||
new SaturnImageButton(Textures.EMOTE, 14, 14,
|
||||
() -> {
|
||||
client.setScreen(new SettingsMenu());
|
||||
client.setScreen(new HudEditor());
|
||||
})
|
||||
.setX((width - buttonWidth - (buttonHeight * 2) - 6) / 2)
|
||||
.setY((height - buttonHeight) / 2)
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
package org.saturnclient.saturnclient.menus;
|
||||
|
||||
import org.saturnclient.saturnclient.SaturnClient;
|
||||
import org.saturnclient.saturnmods.ModManager;
|
||||
import org.saturnclient.saturnmods.SaturnMod;
|
||||
import org.saturnclient.ui.SaturnUi;
|
||||
import org.saturnclient.ui.Textures;
|
||||
import org.saturnclient.ui.animations.FadeIn;
|
||||
import org.saturnclient.ui.animations.Slide;
|
||||
import org.saturnclient.ui.components.SaturnModComp;
|
||||
import org.saturnclient.ui.widgets.SaturnClickableImage;
|
||||
import org.saturnclient.ui.widgets.SaturnScroll;
|
||||
import org.saturnclient.ui.widgets.SaturnSprite;
|
||||
import org.saturnclient.ui.widgets.SaturnText;
|
||||
import net.minecraft.text.Text;
|
||||
|
||||
public class SettingsMenu extends SaturnUi {
|
||||
@@ -81,18 +80,12 @@ public class SettingsMenu extends SaturnUi {
|
||||
SaturnScroll modsScroll = new SaturnScroll();
|
||||
|
||||
for (SaturnMod mod : ModManager.MODS) {
|
||||
modsScroll.draw(new SaturnClickableImage(Textures.MOD, (m) -> {
|
||||
|
||||
})
|
||||
.setSelected(mod.isEnabled())
|
||||
modsScroll.draw(new SaturnModComp(mod)
|
||||
.setX(modX)
|
||||
.setY(modY)
|
||||
.setWidth(86)
|
||||
.setHeight(20));
|
||||
|
||||
modsScroll.draw(new SaturnText(mod.getName()).setX(modX + 27)
|
||||
.setY(modY + (21 - SaturnClient.textRenderer.fontHeight) / 2));
|
||||
|
||||
col++;
|
||||
|
||||
if (col < 3) {
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package org.saturnclient.saturnmods;
|
||||
|
||||
import net.minecraft.client.gui.DrawContext;
|
||||
|
||||
public interface HudMod {
|
||||
public void setDimensions(ModDimensions dimensions);
|
||||
|
||||
public ModDimensions getDimensions();
|
||||
|
||||
public void renderDummy(DrawContext context);
|
||||
|
||||
public void render(DrawContext context);
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package org.saturnclient.saturnmods;
|
||||
|
||||
public class ModDimensions {
|
||||
public int x = 0;
|
||||
public int y = 0;
|
||||
public float scale = 1.0f;
|
||||
|
||||
public int width = 0;
|
||||
public int height = 0;
|
||||
|
||||
public ModDimensions() {
|
||||
}
|
||||
|
||||
public ModDimensions(int x, int y) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
}
|
||||
|
||||
public ModDimensions(int x, int y, float scale) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.scale = scale;
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,43 @@
|
||||
package org.saturnclient.saturnmods;
|
||||
|
||||
import org.saturnclient.saturnclient.SaturnClient;
|
||||
import org.saturnclient.saturnmods.mods.ArmorDisplay;
|
||||
import org.saturnclient.saturnmods.mods.Coordinates;
|
||||
import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.client.font.TextRenderer;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
|
||||
public class ModManager {
|
||||
public static SaturnMod[] MODS = {
|
||||
new Coordinates()
|
||||
new Coordinates(),
|
||||
new ArmorDisplay()
|
||||
};
|
||||
|
||||
public static void init() {
|
||||
HudRenderCallback.EVENT.register((context, tickDelta) -> {
|
||||
TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer;
|
||||
|
||||
if (textRenderer != null) {
|
||||
SaturnClient.textRenderer = textRenderer;
|
||||
|
||||
for (SaturnMod m : MODS) {
|
||||
if (m instanceof HudMod && m.isEnabled()) {
|
||||
ModDimensions dim = ((HudMod) m).getDimensions();
|
||||
|
||||
MatrixStack matrices = context.getMatrices();
|
||||
matrices.push();
|
||||
|
||||
matrices.translate(dim.x, dim.y, 0);
|
||||
|
||||
matrices.scale(dim.scale, dim.scale, 1.0f);
|
||||
|
||||
((HudMod) m).render(context);
|
||||
|
||||
matrices.pop();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
package org.saturnclient.saturnmods;
|
||||
|
||||
public interface SaturnMod {
|
||||
public static boolean enabled = false;
|
||||
public boolean isEnabled();
|
||||
|
||||
default public boolean isEnabled() {
|
||||
return enabled;
|
||||
}
|
||||
public void setEnabled(boolean e);
|
||||
|
||||
public String getName();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,93 @@
|
||||
package org.saturnclient.saturnmods.mods;
|
||||
|
||||
import org.saturnclient.saturnclient.SaturnClient;
|
||||
import org.saturnclient.saturnmods.HudMod;
|
||||
import org.saturnclient.saturnmods.ModDimensions;
|
||||
import org.saturnclient.saturnmods.SaturnMod;
|
||||
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.client.gui.DrawContext;
|
||||
import net.minecraft.entity.EquipmentSlot;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.Items;
|
||||
|
||||
public class ArmorDisplay implements SaturnMod, HudMod {
|
||||
private static ModDimensions dimensions = new ModDimensions(120, 40);
|
||||
public static boolean enabled = false;
|
||||
|
||||
private boolean renderItem(DrawContext context, ItemStack item, int y) {
|
||||
if (item.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
context.drawItem(item, 0, y);
|
||||
|
||||
context.drawText(SaturnClient.textRenderer, "" + (item.getMaxDamage() - item.getDamage()),
|
||||
16, y + 4, SaturnClient.WHITE, false);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(DrawContext context) {
|
||||
PlayerEntity player = MinecraftClient.getInstance().player;
|
||||
ItemStack[] items = {
|
||||
player.getEquippedStack(EquipmentSlot.FEET),
|
||||
player.getEquippedStack(EquipmentSlot.LEGS),
|
||||
player.getEquippedStack(EquipmentSlot.CHEST),
|
||||
player.getEquippedStack(EquipmentSlot.HEAD),
|
||||
player.getEquippedStack(EquipmentSlot.MAINHAND),
|
||||
};
|
||||
|
||||
int y = 75;
|
||||
|
||||
for (ItemStack item : items) {
|
||||
if (renderItem(context, item, y)) {
|
||||
y -= 15;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderDummy(DrawContext context) {
|
||||
ItemStack[] items = {
|
||||
new ItemStack(Items.DIAMOND_BOOTS),
|
||||
new ItemStack(Items.DIAMOND_LEGGINGS),
|
||||
new ItemStack(Items.DIAMOND_CHESTPLATE),
|
||||
new ItemStack(Items.DIAMOND_HELMET),
|
||||
new ItemStack(Items.DIAMOND_SWORD),
|
||||
};
|
||||
|
||||
int y = 75;
|
||||
|
||||
for (ItemStack item : items) {
|
||||
if (renderItem(context, item, y)) {
|
||||
y -= 15;
|
||||
}
|
||||
}
|
||||
|
||||
dimensions.width = 28;
|
||||
dimensions.height = 100;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return "Armor display";
|
||||
}
|
||||
|
||||
public void setDimensions(ModDimensions d) {
|
||||
dimensions = d;
|
||||
}
|
||||
|
||||
public ModDimensions getDimensions() {
|
||||
return dimensions;
|
||||
}
|
||||
|
||||
public boolean isEnabled() {
|
||||
return enabled;
|
||||
}
|
||||
|
||||
public void setEnabled(boolean e) {
|
||||
enabled = e;
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,60 @@
|
||||
package org.saturnclient.saturnmods.mods;
|
||||
|
||||
import org.saturnclient.saturnclient.SaturnClient;
|
||||
import org.saturnclient.saturnmods.HudMod;
|
||||
import org.saturnclient.saturnmods.ModDimensions;
|
||||
import org.saturnclient.saturnmods.SaturnMod;
|
||||
|
||||
public class Coordinates implements SaturnMod {
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.client.gui.DrawContext;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
|
||||
public class Coordinates implements SaturnMod, HudMod {
|
||||
private static ModDimensions dimensions = new ModDimensions();
|
||||
public static boolean enabled = false;
|
||||
|
||||
public Coordinates() {
|
||||
}
|
||||
|
||||
public void renderDummy(DrawContext context) {
|
||||
int playerX = 124;
|
||||
int playerY = 69;
|
||||
int playerZ = 83;
|
||||
|
||||
context.drawText(SaturnClient.textRenderer, playerX + " " + playerY + " " + playerZ,
|
||||
0, 0, SaturnClient.WHITE, false);
|
||||
|
||||
dimensions.width = SaturnClient.textRenderer.getWidth(playerX + " " + playerY + " " + playerZ);
|
||||
dimensions.height = SaturnClient.textRenderer.fontHeight;
|
||||
}
|
||||
|
||||
public void render(DrawContext context) {
|
||||
PlayerEntity player = MinecraftClient.getInstance().player;
|
||||
int playerX = (int) player.getX();
|
||||
int playerY = (int) player.getY();
|
||||
int playerZ = (int) player.getZ();
|
||||
|
||||
context.drawText(SaturnClient.textRenderer, playerX + " " + playerY + " " + playerZ,
|
||||
0, 0, SaturnClient.WHITE, false);
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return "Coords";
|
||||
}
|
||||
|
||||
public void setDimensions(ModDimensions d) {
|
||||
dimensions = d;
|
||||
}
|
||||
|
||||
public ModDimensions getDimensions() {
|
||||
return dimensions;
|
||||
}
|
||||
|
||||
public boolean isEnabled() {
|
||||
return enabled;
|
||||
}
|
||||
|
||||
public void setEnabled(boolean e) {
|
||||
enabled = e;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
package org.saturnclient.ui.components;
|
||||
|
||||
import org.saturnclient.saturnclient.SaturnClient;
|
||||
import org.saturnclient.saturnmods.SaturnMod;
|
||||
import org.saturnclient.ui.SaturnWidget;
|
||||
import org.saturnclient.ui.Textures;
|
||||
|
||||
import net.minecraft.client.gui.DrawContext;
|
||||
import net.minecraft.client.render.RenderLayer;
|
||||
import net.minecraft.util.math.ColorHelper;
|
||||
|
||||
public class SaturnModComp extends SaturnWidget {
|
||||
SaturnMod mod;
|
||||
|
||||
public SaturnModComp(SaturnMod mod) {
|
||||
this.mod = mod;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(DrawContext context, boolean hovering, int mouseX, int mouseY) {
|
||||
int color = mod.isEnabled() || hovering ? SaturnClient.COLOR : ColorHelper.getWhite(alpha);
|
||||
|
||||
context.drawText(SaturnClient.textRenderer, mod.getName(), x + 27,
|
||||
y + (21 - SaturnClient.textRenderer.fontHeight) / 2,
|
||||
color, false);
|
||||
|
||||
context.drawTexture(RenderLayer::getGuiTextured, Textures.MOD, x, y, 0, 0, 86, 20, width,
|
||||
height, color);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void click(int mouseX, int mouseY) {
|
||||
mod.setEnabled(!mod.isEnabled());
|
||||
}
|
||||
}
|
||||
@@ -5,11 +5,9 @@ import org.saturnclient.ui.SaturnUi;
|
||||
import org.saturnclient.ui.SaturnWidget;
|
||||
import net.minecraft.client.gui.DrawContext;
|
||||
import net.minecraft.util.math.ColorHelper;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
|
||||
public class SaturnText extends SaturnWidget {
|
||||
private String text;
|
||||
private int color = ColorHelper.getWhite(1.0f);
|
||||
|
||||
public SaturnText(String text) {
|
||||
this.text = text;
|
||||
@@ -19,13 +17,12 @@ public class SaturnText extends SaturnWidget {
|
||||
|
||||
public SaturnText(String text, int color) {
|
||||
this(text);
|
||||
this.color = color;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(DrawContext context, boolean hovering, int mouseX, int mouseY) {
|
||||
context.drawText(SaturnClient.textRenderer,
|
||||
SaturnUi.text(text), x, y,
|
||||
color | MathHelper.ceil(this.alpha * 255.0F) << 24, false);
|
||||
ColorHelper.getWhite(alpha), false);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user