From 2d1381a64804fe4bd147aeeeefc3a64597507d3d Mon Sep 17 00:00:00 2001 From: Cloudburst Date: Sat, 12 Jun 2021 19:54:43 +0200 Subject: [PATCH] Cps Hud --- .../rejects/MeteorRejectsAddon.java | 3 +++ .../cloudburst/rejects/gui/hud/CpsHud.java | 16 +++++++++++++ .../rejects/mixin/MinecraftClientMixin.java | 23 ++++++++++++++++++ .../java/cloudburst/rejects/utils/Utils.java | 24 +++++++++++++++++++ src/main/resources/meteor-rejects.mixins.json | 1 + 5 files changed, 67 insertions(+) create mode 100644 src/main/java/cloudburst/rejects/gui/hud/CpsHud.java create mode 100644 src/main/java/cloudburst/rejects/mixin/MinecraftClientMixin.java create mode 100644 src/main/java/cloudburst/rejects/utils/Utils.java diff --git a/src/main/java/cloudburst/rejects/MeteorRejectsAddon.java b/src/main/java/cloudburst/rejects/MeteorRejectsAddon.java index d1cc1ab..37bd5d5 100644 --- a/src/main/java/cloudburst/rejects/MeteorRejectsAddon.java +++ b/src/main/java/cloudburst/rejects/MeteorRejectsAddon.java @@ -17,6 +17,7 @@ import java.lang.invoke.MethodHandles; import cloudburst.rejects.commands.*; import cloudburst.rejects.gui.hud.*; import cloudburst.rejects.modules.*; +import cloudburst.rejects.utils.Utils; public class MeteorRejectsAddon extends MeteorAddon { public static final Logger LOG = LogManager.getLogger(); @@ -27,6 +28,7 @@ public class MeteorRejectsAddon extends MeteorAddon { LOG.info("Initializing Meteor Rejects Addon"); MeteorClient.EVENT_BUS.registerLambdaFactory("cloudburst.rejects", (lookupInMethod, klass) -> (MethodHandles.Lookup) lookupInMethod.invoke(null, klass, MethodHandles.lookup())); + Utils.init(); Modules modules = Modules.get(); modules.add(new AntiBot()); @@ -71,6 +73,7 @@ public class MeteorRejectsAddon extends MeteorAddon { hud.elements.add(new AppleHud(hud)); hud.elements.add(new CrystalHud(hud)); hud.elements.add(new ExpHud(hud)); + hud.elements.add(new CpsHud(hud)); GuiThemes.add(new MeteorRoundedGuiTheme()); } diff --git a/src/main/java/cloudburst/rejects/gui/hud/CpsHud.java b/src/main/java/cloudburst/rejects/gui/hud/CpsHud.java new file mode 100644 index 0000000..1055f3d --- /dev/null +++ b/src/main/java/cloudburst/rejects/gui/hud/CpsHud.java @@ -0,0 +1,16 @@ +package cloudburst.rejects.gui.hud; + +import cloudburst.rejects.utils.Utils; +import minegame159.meteorclient.systems.modules.render.hud.HUD; +import minegame159.meteorclient.systems.modules.render.hud.modules.DoubleTextHudElement; + +public class CpsHud extends DoubleTextHudElement { + public CpsHud(HUD hud) { + super(hud, "cps", "Displays your CPS.", "CPS: ", false); + } + + @Override + protected String getRight() { + return Integer.toString(Utils.CPS); + } +} diff --git a/src/main/java/cloudburst/rejects/mixin/MinecraftClientMixin.java b/src/main/java/cloudburst/rejects/mixin/MinecraftClientMixin.java new file mode 100644 index 0000000..3ef4ee4 --- /dev/null +++ b/src/main/java/cloudburst/rejects/mixin/MinecraftClientMixin.java @@ -0,0 +1,23 @@ +package cloudburst.rejects.mixin; + +import net.minecraft.client.MinecraftClient; + +import cloudburst.rejects.utils.Utils; + +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; + +/** + * Injects the CPS counter. + */ +@Mixin(MinecraftClient.class) +public class MinecraftClientMixin +{ + @Inject(method = "handleInputEvents", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/MinecraftClient;doAttack()V")) + private void onAttack(CallbackInfo ci) + { + Utils.CPS++; + } +} diff --git a/src/main/java/cloudburst/rejects/utils/Utils.java b/src/main/java/cloudburst/rejects/utils/Utils.java new file mode 100644 index 0000000..9bb7817 --- /dev/null +++ b/src/main/java/cloudburst/rejects/utils/Utils.java @@ -0,0 +1,24 @@ +package cloudburst.rejects.utils; + +import java.util.Timer; +import java.util.TimerTask; + +public class Utils { + public static int CPS = 0; + + public static void init() { + new Timer().scheduleAtFixedRate(newTimerTaskFromLambda(() -> CPS = 0), 0, 1000); + } + + public static TimerTask newTimerTaskFromLambda(Runnable runnable) + { + return new TimerTask() + { + @Override + public void run() + { + runnable.run(); + } + }; + } +} diff --git a/src/main/resources/meteor-rejects.mixins.json b/src/main/resources/meteor-rejects.mixins.json index 31af5d3..cbbeb25 100644 --- a/src/main/resources/meteor-rejects.mixins.json +++ b/src/main/resources/meteor-rejects.mixins.json @@ -10,6 +10,7 @@ "StructureVoidBlockMixin", "TitleScreenMixin", "LivingEntityRendererMixin", + "MinecraftClientMixin", "GameRendererMixin", "ToastManagerMixin" ],