From 8557c10354b777bea00cf0f2f1f0c76ca1798a1f Mon Sep 17 00:00:00 2001 From: Leo dev Date: Thu, 3 Apr 2025 01:33:14 +0200 Subject: [PATCH] totem particle mod --- .../mixin/TotemParticleMixin.java | 37 ++++++++++++ .../saturnclient/saturnmods/ModManager.java | 13 ++--- .../saturnmods/mods/Particles.java | 53 ++++++++++++++++++ .../textures/gui/mod/particles.png | Bin 0 -> 1087 bytes src/main/resources/saturnclient.mixins.json | 3 +- 5 files changed, 98 insertions(+), 8 deletions(-) create mode 100644 src/main/java/org/saturnclient/saturnclient/mixin/TotemParticleMixin.java create mode 100644 src/main/java/org/saturnclient/saturnmods/mods/Particles.java create mode 100644 src/main/resources/assets/saturnclient/textures/gui/mod/particles.png diff --git a/src/main/java/org/saturnclient/saturnclient/mixin/TotemParticleMixin.java b/src/main/java/org/saturnclient/saturnclient/mixin/TotemParticleMixin.java new file mode 100644 index 0000000..c2ff037 --- /dev/null +++ b/src/main/java/org/saturnclient/saturnclient/mixin/TotemParticleMixin.java @@ -0,0 +1,37 @@ +package org.saturnclient.saturnclient.mixin; + +import net.minecraft.client.particle.AnimatedParticle; +import net.minecraft.client.particle.SpriteProvider; +import net.minecraft.client.particle.TotemParticle; +import net.minecraft.client.world.ClientWorld; +import net.minecraft.util.math.ColorHelper; + +import org.saturnclient.saturnmods.mods.Particles; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(TotemParticle.class) +public class TotemParticleMixin extends AnimatedParticle { + protected TotemParticleMixin(ClientWorld world, double x, double y, double z, SpriteProvider spriteProvider, + float upwardsAcceleration) { + super(world, x, y, z, spriteProvider, upwardsAcceleration); + } + + @Inject(at = @At("TAIL"), method = "") + private void colorChanger(ClientWorld world, double x, double y, double z, double velocityX, double velocityY, + double velocityZ, SpriteProvider spriteProvider, CallbackInfo ci) { + if (Particles.enabled.value && Particles.totem_enabled.value) { + if (this.random.nextInt(2) == 0) { + this.setColor(ColorHelper.getRedFloat(Particles.totem_1.value), + ColorHelper.getGreenFloat(Particles.totem_1.value), + ColorHelper.getBlueFloat(Particles.totem_1.value)); + } else { + this.setColor(ColorHelper.getRedFloat(Particles.totem_2.value), + ColorHelper.getGreenFloat(Particles.totem_2.value), + ColorHelper.getBlueFloat(Particles.totem_2.value)); + } + } + } +} \ 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 d8fd88f..ebbffc8 100644 --- a/src/main/java/org/saturnclient/saturnmods/ModManager.java +++ b/src/main/java/org/saturnclient/saturnmods/ModManager.java @@ -11,9 +11,10 @@ import org.saturnclient.saturnmods.mods.*; public class ModManager { public static SaturnMod[] MODS = { - new Coordinates(), - new ArmorDisplay(), - new FpsDisplay(), + new Coordinates(), + new ArmorDisplay(), + new FpsDisplay(), + new Particles() }; public static void init() { @@ -21,10 +22,8 @@ public class ModManager { MinecraftClient client = MinecraftClient.getInstance(); TextRenderer textRenderer = client.textRenderer; - if ( - textRenderer != null && - !(client.currentScreen instanceof HudEditor) - ) { + if (textRenderer != null && + !(client.currentScreen instanceof HudEditor)) { SaturnClient.textRenderer = textRenderer; for (SaturnMod m : MODS) { diff --git a/src/main/java/org/saturnclient/saturnmods/mods/Particles.java b/src/main/java/org/saturnclient/saturnmods/mods/Particles.java new file mode 100644 index 0000000..039a4bd --- /dev/null +++ b/src/main/java/org/saturnclient/saturnmods/mods/Particles.java @@ -0,0 +1,53 @@ +package org.saturnclient.saturnmods.mods; + +import net.minecraft.util.Identifier; +import org.saturnclient.saturnclient.SaturnClient; +import org.saturnclient.saturnclient.config.ConfigManager; +import org.saturnclient.saturnclient.config.Property; +import org.saturnclient.saturnmods.SaturnMod; +import org.saturnclient.ui.Textures; + +public class Particles implements SaturnMod { + public static ConfigManager config = new ConfigManager("Particles"); + + public static Property enabled = config.property( + "Enabled", + new Property<>(false)); + + public static Property totem_enabled = config.property( + "Change totem color", + new Property<>(false)); + + public static Property totem_1 = config.property( + "Totem particle color 1", + new Property<>(SaturnClient.COLOR.value, Property.PropertyType.HEX)); + + public static Property totem_2 = config.property( + "Totem particle color 2", + new Property<>(SaturnClient.COLOR.value, Property.PropertyType.HEX)); + + @Override + public boolean isEnabled() { + return enabled.value; + } + + @Override + public void setEnabled(boolean e) { + enabled.value = e; + } + + @Override + public String getName() { + return "Particles"; + } + + @Override + public Identifier getIconTexture() { + return Textures.getModIcon("particles"); + } + + @Override + public ConfigManager getConfig() { + return config; + } +} diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/particles.png b/src/main/resources/assets/saturnclient/textures/gui/mod/particles.png new file mode 100644 index 0000000000000000000000000000000000000000..3709190894dd0017a277f52e44154ae6c21b2c38 GIT binary patch literal 1087 zcmV-F1i<@=P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NFsYygZRA>e5n!QpKK@i99EXdGE zLQH%GLoGKTgHWG<#1|maOfyrljC>IY){+cDAR!k`Hi_v%8lQEWm$Wur0~F*%QOCv|&#sV-!$D5#mWn7HckJ#(J-Tf5N&a zM#G9YOQhh1dg|(P_x-3bD@RpOaZp%t$vDb_r%aGP8Owy zF2E=Eg#>Gtq%SgvKS7*^Nnw^C;&d;M}{>}04Pp8x0ju%bUHL%w!FJ;{azoa%a@6ZS3m6`Tjz4Ts_BJY(dF@eWkXsGaux$kkj=CI2%4 z%iYAb5|Ytl^fkCzk5OAhpebVY4ziGZYNVhIa0k@!uWLXGZnP6h`zb|u@*!Wl;P6+8 zR1ua(P;JE3xy;$*1KkwC5JCHNf~z7uwDRDm&uGtq$ew6>pq5uy{0_r`@)Ki!iK~o5 zON)Kl*cg?5WVQg@y#n<~PbhjG)J~x?b4!a|>(3})etF0UiYtMpHlc;HkRVKd&)EsG z!AF8A(Hyj2#C%{3^mOvD1w-gzu%}I_g?x_1IX$fl*0ECx7cJYO63B&6?X*%C?S802{pqTDW8)w2=I`YyAvD6S4DSGz7$E z9W1?qO12jC@8n2=M_>*PhfX@R2NsP{7aWvi1+%-7WwC002ovPDHLk FV1kjz=gt5C literal 0 HcmV?d00001 diff --git a/src/main/resources/saturnclient.mixins.json b/src/main/resources/saturnclient.mixins.json index c18b739..a18c000 100644 --- a/src/main/resources/saturnclient.mixins.json +++ b/src/main/resources/saturnclient.mixins.json @@ -9,7 +9,8 @@ "NameTagMixin", "PlayerEntityRendererMixin", "WhoAmI", - "SaturnReload" + "SaturnReload", + "TotemParticleMixin" ], "injectors": { "defaultRequire": 1