From 9c5e184f07d54d98bf2ef47de49f7dd008817699 Mon Sep 17 00:00:00 2001 From: LitSkillz <124302831+LitSkillz@users.noreply.github.com> Date: Sun, 30 Mar 2025 10:42:51 -0700 Subject: [PATCH 1/4] Add respawn message settings and functionality. --- .../systems/modules/misc/AutoRespawn.java | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/AutoRespawn.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/AutoRespawn.java index 2a66effd44..9f355f2d68 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/AutoRespawn.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/AutoRespawn.java @@ -6,6 +6,11 @@ package meteordevelopment.meteorclient.systems.modules.misc; import meteordevelopment.meteorclient.events.game.OpenScreenEvent; +import meteordevelopment.meteorclient.settings.BoolSetting; +import meteordevelopment.meteorclient.settings.DoubleSetting; +import meteordevelopment.meteorclient.settings.Setting; +import meteordevelopment.meteorclient.settings.SettingGroup; +import meteordevelopment.meteorclient.settings.StringSetting; import meteordevelopment.meteorclient.systems.modules.Categories; import meteordevelopment.meteorclient.systems.modules.Module; import meteordevelopment.meteorclient.systems.modules.Modules; @@ -13,12 +18,53 @@ import meteordevelopment.orbit.EventHandler; import meteordevelopment.orbit.EventPriority; import net.minecraft.client.gui.screen.DeathScreen; +import meteordevelopment.meteorclient.utils.network.MeteorExecutor; +import meteordevelopment.meteorclient.utils.player.ChatUtils; public class AutoRespawn extends Module { + private final SettingGroup sgGeneral = settings.getDefaultGroup(); + + public final Setting sendRespawnMessage = sgGeneral.add(new BoolSetting.Builder() + .name("respawn-message") + .description("Sends a message or command upon respawning.") + .defaultValue(false) + .build() + ); + + private final Setting respawnMessage = sgGeneral.add(new StringSetting.Builder() + .name("message") + .description("The message/command to send.") + .defaultValue("Meteor on Crack!") + .visible(sendRespawnMessage::get) + .build() + ); + + private final Setting respawnMessageDelay = sgGeneral.add(new DoubleSetting.Builder() + .name("initial-delay") + .description("The delay before sending respawn message in seconds.") + .defaultValue(0.5) + .sliderMax(10) + .visible(sendRespawnMessage::get) + .build() + ); + public AutoRespawn() { super(Categories.Player, "auto-respawn", "Automatically respawns after death."); } + private void sendDeathMessage() { + long delay = (long) Math.floor(respawnMessageDelay.get() * 1000); + if (delay > 0) { + try { + Thread.sleep(delay); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + ChatUtils.sendPlayerMsg(respawnMessage.get()); + } + @EventHandler(priority = EventPriority.HIGH) private void onOpenScreenEvent(OpenScreenEvent event) { if (!(event.screen instanceof DeathScreen)) return; @@ -26,5 +72,9 @@ private void onOpenScreenEvent(OpenScreenEvent event) { Modules.get().get(WaypointsModule.class).addDeath(mc.player.getPos()); mc.player.requestRespawn(); event.cancel(); + + if (!sendRespawnMessage.get()) return; + // execute on a different thread to not yield literally everything. + MeteorExecutor.execute(() -> sendDeathMessage()); } } From 549c85ef8919b6f078f0e6e2e3ab59ba590daef4 Mon Sep 17 00:00:00 2001 From: LitSkillz <124302831+LitSkillz@users.noreply.github.com> Date: Sun, 30 Mar 2025 11:27:48 -0700 Subject: [PATCH 2/4] Notify when sending a message and change unclear setting name. --- .../meteorclient/systems/modules/misc/AutoRespawn.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/AutoRespawn.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/AutoRespawn.java index 9f355f2d68..7483e17f4e 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/AutoRespawn.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/AutoRespawn.java @@ -40,7 +40,7 @@ public class AutoRespawn extends Module { ); private final Setting respawnMessageDelay = sgGeneral.add(new DoubleSetting.Builder() - .name("initial-delay") + .name("message-delay") .description("The delay before sending respawn message in seconds.") .defaultValue(0.5) .sliderMax(10) @@ -62,6 +62,7 @@ private void sendDeathMessage() { } } + info("Sending message '"+respawnMessage.get()+"'"); ChatUtils.sendPlayerMsg(respawnMessage.get()); } From 0431ee1349bbc2cd1a183e9bd22ff009d2311eda Mon Sep 17 00:00:00 2001 From: DrParanoya <158059657+DrParanoya@users.noreply.github.com> Date: Sun, 30 Mar 2025 21:17:22 +0200 Subject: [PATCH 3/4] Imports are sorted in alphabetical order now --- .../meteorclient/systems/modules/misc/AutoRespawn.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/AutoRespawn.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/AutoRespawn.java index 7483e17f4e..374741446a 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/AutoRespawn.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/AutoRespawn.java @@ -15,11 +15,11 @@ import meteordevelopment.meteorclient.systems.modules.Module; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.WaypointsModule; +import meteordevelopment.meteorclient.utils.network.MeteorExecutor; +import meteordevelopment.meteorclient.utils.player.ChatUtils; import meteordevelopment.orbit.EventHandler; import meteordevelopment.orbit.EventPriority; import net.minecraft.client.gui.screen.DeathScreen; -import meteordevelopment.meteorclient.utils.network.MeteorExecutor; -import meteordevelopment.meteorclient.utils.player.ChatUtils; public class AutoRespawn extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); From efd2314780def933a80f5aa67ce84b683e983ab5 Mon Sep 17 00:00:00 2001 From: LitSkillz <124302831+LitSkillz@users.noreply.github.com> Date: Sun, 30 Mar 2025 14:22:20 -0700 Subject: [PATCH 4/4] Switched to tick delay. --- .../systems/modules/misc/AutoRespawn.java | 46 ++++++++++--------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/AutoRespawn.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/AutoRespawn.java index 374741446a..84fa0a643f 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/AutoRespawn.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/AutoRespawn.java @@ -6,8 +6,9 @@ package meteordevelopment.meteorclient.systems.modules.misc; import meteordevelopment.meteorclient.events.game.OpenScreenEvent; +import meteordevelopment.meteorclient.events.world.TickEvent; import meteordevelopment.meteorclient.settings.BoolSetting; -import meteordevelopment.meteorclient.settings.DoubleSetting; +import meteordevelopment.meteorclient.settings.IntSetting; import meteordevelopment.meteorclient.settings.Setting; import meteordevelopment.meteorclient.settings.SettingGroup; import meteordevelopment.meteorclient.settings.StringSetting; @@ -15,7 +16,6 @@ import meteordevelopment.meteorclient.systems.modules.Module; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.WaypointsModule; -import meteordevelopment.meteorclient.utils.network.MeteorExecutor; import meteordevelopment.meteorclient.utils.player.ChatUtils; import meteordevelopment.orbit.EventHandler; import meteordevelopment.orbit.EventPriority; @@ -39,33 +39,23 @@ public class AutoRespawn extends Module { .build() ); - private final Setting respawnMessageDelay = sgGeneral.add(new DoubleSetting.Builder() + private final Setting respawnMessageDelay = sgGeneral.add(new IntSetting.Builder() .name("message-delay") - .description("The delay before sending respawn message in seconds.") - .defaultValue(0.5) - .sliderMax(10) + .description("The delay before sending respawn message in ticks.") + .defaultValue(1) + .sliderMax(100) .visible(sendRespawnMessage::get) .build() ); + // Fields + private int respawnTimer; + private boolean respawning = false; + public AutoRespawn() { super(Categories.Player, "auto-respawn", "Automatically respawns after death."); } - private void sendDeathMessage() { - long delay = (long) Math.floor(respawnMessageDelay.get() * 1000); - if (delay > 0) { - try { - Thread.sleep(delay); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - - info("Sending message '"+respawnMessage.get()+"'"); - ChatUtils.sendPlayerMsg(respawnMessage.get()); - } - @EventHandler(priority = EventPriority.HIGH) private void onOpenScreenEvent(OpenScreenEvent event) { if (!(event.screen instanceof DeathScreen)) return; @@ -75,7 +65,19 @@ private void onOpenScreenEvent(OpenScreenEvent event) { event.cancel(); if (!sendRespawnMessage.get()) return; - // execute on a different thread to not yield literally everything. - MeteorExecutor.execute(() -> sendDeathMessage()); + respawnTimer = 0; + respawning = true; + } + + @EventHandler + private void onTick(TickEvent.Post event) { + if (!respawning) return; + respawnTimer++; + + if (respawnTimer <= respawnMessageDelay.get()) return; + respawning = false; + + info("Sending message '"+respawnMessage.get()+"'"); + ChatUtils.sendPlayerMsg(respawnMessage.get()); } }