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 0000000..fe1e8cf Binary files /dev/null and b/src/main/resources/assets/saturnclient/textures/gui/hud/crosshair_range.png differ 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 0000000..cd208a3 Binary files /dev/null and b/src/main/resources/assets/saturnclient/textures/gui/mod/crosshair.png differ 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