From 563a68e9f1d56c72ae2b28464ac2250ad6ce0387 Mon Sep 17 00:00:00 2001 From: Leo dev Date: Sat, 5 Apr 2025 19:18:44 +0200 Subject: [PATCH] added crosshair mod --- .../saturnclient/mixin/Crosshair.java | 47 ++++++++++++++++++ .../saturnclient/saturnmods/ModManager.java | 3 +- .../saturnmods/mods/Crosshair.java | 44 ++++++++++++++++ .../textures/gui/hud/crosshair_range.png | Bin 0 -> 105 bytes .../textures/gui/mod/crosshair.png | Bin 0 -> 1027 bytes src/main/resources/fabric.mod.json | 2 +- src/main/resources/saturnclient.mixins.json | 3 +- 7 files changed, 96 insertions(+), 3 deletions(-) create mode 100644 src/main/java/org/saturnclient/saturnclient/mixin/Crosshair.java create mode 100644 src/main/java/org/saturnclient/saturnmods/mods/Crosshair.java create mode 100644 src/main/resources/assets/saturnclient/textures/gui/hud/crosshair_range.png create mode 100644 src/main/resources/assets/saturnclient/textures/gui/mod/crosshair.png diff --git a/src/main/java/org/saturnclient/saturnclient/mixin/Crosshair.java b/src/main/java/org/saturnclient/saturnclient/mixin/Crosshair.java new file mode 100644 index 0000000..457207b --- /dev/null +++ b/src/main/java/org/saturnclient/saturnclient/mixin/Crosshair.java @@ -0,0 +1,47 @@ +/* + * Code from: https://github.com/Selyss + * Repo: https://github.com/Selyss/CrosshairIndicator/tree/main +*/ + +package org.saturnclient.saturnclient.mixin; + +import com.mojang.blaze3d.systems.RenderSystem; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.render.RenderLayer; +import net.minecraft.client.render.RenderTickCounter; +import net.minecraft.util.Identifier; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import net.minecraft.client.gui.hud.InGameHud; +import net.minecraft.client.gui.DrawContext; + +@Mixin(InGameHud.class) +public class Crosshair { + @Shadow + @Final + private MinecraftClient client; + @Unique + Identifier textureLocation = Identifier.of("saturnclient", "textures/gui/hud/crosshair_range.png"); + + @Inject(method = "renderCrosshair", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/DrawContext;drawGuiTexture(Ljava/util/function/Function;Lnet/minecraft/util/Identifier;IIII)V", ordinal = 0)) + private void drawCrosshair(DrawContext context, RenderTickCounter tickCounter, CallbackInfo ci) { + if (org.saturnclient.saturnmods.mods.Crosshair.enabled.value + && org.saturnclient.saturnmods.mods.Crosshair.range_indicator.value + && this.client.targetedEntity != null + && this.client.targetedEntity.isAlive()) { + RenderSystem.setShaderTexture(0, textureLocation); + int scaledWidth = 15; + int scaledHeight = 15; + + context.drawTexture(RenderLayer::getCrosshair, textureLocation, + (context.getScaledWindowWidth() - scaledWidth) / 2, + (context.getScaledWindowHeight() - scaledHeight) / 2, 0.0F, 0.0F, scaledWidth, scaledHeight, + scaledWidth, scaledHeight); + } + } +} \ No newline at end of file diff --git a/src/main/java/org/saturnclient/saturnmods/ModManager.java b/src/main/java/org/saturnclient/saturnmods/ModManager.java index ebbffc8..83b0b04 100644 --- a/src/main/java/org/saturnclient/saturnmods/ModManager.java +++ b/src/main/java/org/saturnclient/saturnmods/ModManager.java @@ -14,7 +14,8 @@ public class ModManager { new Coordinates(), new ArmorDisplay(), new FpsDisplay(), - new Particles() + new Particles(), + new Crosshair() }; public static void init() { diff --git a/src/main/java/org/saturnclient/saturnmods/mods/Crosshair.java b/src/main/java/org/saturnclient/saturnmods/mods/Crosshair.java new file mode 100644 index 0000000..d32416d --- /dev/null +++ b/src/main/java/org/saturnclient/saturnmods/mods/Crosshair.java @@ -0,0 +1,44 @@ +package org.saturnclient.saturnmods.mods; + +import net.minecraft.util.Identifier; +import org.saturnclient.saturnclient.config.ConfigManager; +import org.saturnclient.saturnclient.config.Property; +import org.saturnclient.saturnmods.SaturnMod; +import org.saturnclient.ui.Textures; + +public class Crosshair implements SaturnMod { + public static ConfigManager config = new ConfigManager("Crosshair"); + + public static Property enabled = config.property( + "Enabled", + new Property<>(false)); + + public static Property range_indicator = config.property( + "Hit range indicator", + new Property<>(false)); + + @Override + public boolean isEnabled() { + return enabled.value; + } + + @Override + public void setEnabled(boolean e) { + enabled.value = e; + } + + @Override + public String getName() { + return "Crosshair"; + } + + @Override + public Identifier getIconTexture() { + return Textures.getModIcon("crosshair"); + } + + @Override + public ConfigManager getConfig() { + return config; + } +} diff --git a/src/main/resources/assets/saturnclient/textures/gui/hud/crosshair_range.png b/src/main/resources/assets/saturnclient/textures/gui/hud/crosshair_range.png new file mode 100644 index 0000000000000000000000000000000000000000..fe1e8cf387210b9454c4051dd6c4c3ec57dfd173 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^{2Lo_BP zCrGgJ{9o8GLBj9sk`8`$hpzcEI|41{Fn5PAFnlyszs>P-sv1x^gQu&X%Q~loCIH){ B954U? literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/crosshair.png b/src/main/resources/assets/saturnclient/textures/gui/mod/crosshair.png new file mode 100644 index 0000000000000000000000000000000000000000..cd208a312e25e9bef61db26c5f02d583457009a0 GIT binary patch literal 1027 zcmV+e1pNDnP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NFZAnByRA>e5nmdliL_Y9`;%uM@k$HdH==7RSNLQz}4=7CVcRT-VfC zg5PaT(p$Ner-(n zqmFcrPsDbLAun|ph&#R@n^Rl1@8OTsZBeC(!54pZ2&s@h{1a*O=5wQP1%mY zO|A6Vx$8H5x6TC6wd%B;r^0Lx=+Mbx+1}Kg_F6KnHUOQNS!9ca&8#WywPadt0DiGh zx6Q;>f`{gZv)4M9#u~Yq%X)x4hYni1Ziv*r8%2-T&`q>DsoXMT8vjAl>`zMd3BAzV zkNPBlW*@60LFi+;nFm`6Kp=qT9xeV2VGu-f4|kJZX!h~C2|_*LPpZip96Htd1IPdW z6I1#=B)y^8$)8-SC&mTYp6pR34zx~avGa$(WL1W2$!78KxqYIfqlb`dr)joL-ZtEX xYp|9dx+@2O;0y$#v&vfjYLJPzP1N)R{s2chGlfVd^7sG%002ovPDHLkV1lRc%Pjx^ literal 0 HcmV?d00001 diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 5eacd1b..34e6e40 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -9,7 +9,7 @@ "website": "https://kleo-dev.netlify.app", "sources": "https://github.com/saturnclientmc/saturnclient" }, - "license": "GPL-3.0", + "license": "Apache-2.0", "icon": "assets/saturnclient/icon.png", "environment": "client", "entrypoints": { diff --git a/src/main/resources/saturnclient.mixins.json b/src/main/resources/saturnclient.mixins.json index a18c000..ae67074 100644 --- a/src/main/resources/saturnclient.mixins.json +++ b/src/main/resources/saturnclient.mixins.json @@ -10,7 +10,8 @@ "PlayerEntityRendererMixin", "WhoAmI", "SaturnReload", - "TotemParticleMixin" + "TotemParticleMixin", + "Crosshair" ], "injectors": { "defaultRequire": 1