From 8645f2dd221351ab5c6b0a94a43942c686c374cb Mon Sep 17 00:00:00 2001 From: OnlyRain233 Date: Thu, 10 Aug 2023 23:58:24 +0800 Subject: [PATCH] Fix Tokyo Client Crash (#283) --- .../gui/screens/InteractionScreen.java | 80 ++++++------------- .../rejects/modules/VehicleOneHit.java | 4 +- .../anticope/rejects/utils/RejectsUtils.java | 11 ++- .../accounts/CustomYggdrasilAccount.java | 6 +- 4 files changed, 36 insertions(+), 65 deletions(-) diff --git a/src/main/java/anticope/rejects/gui/screens/InteractionScreen.java b/src/main/java/anticope/rejects/gui/screens/InteractionScreen.java index 9376ea4..e56c4d5 100644 --- a/src/main/java/anticope/rejects/gui/screens/InteractionScreen.java +++ b/src/main/java/anticope/rejects/gui/screens/InteractionScreen.java @@ -37,6 +37,7 @@ import net.minecraft.text.Text; import net.minecraft.util.Hand; import net.minecraft.util.Identifier; import net.minecraft.util.math.MathHelper; +import org.joml.Vector2f; import org.lwjgl.glfw.GLFW; import java.awt.*; @@ -167,7 +168,6 @@ public class InteractionScreen extends Screen { MeteorStarscript.printChatError(err); } }); - }); functions.put("Cancel", (Entity e) -> { closeScreen(); @@ -215,8 +215,8 @@ public class InteractionScreen extends Screen { private void cursorMode(int mode) { KeyBinding.unpressAll(); - double x = (double) (this.client.getWindow().getWidth() / 2); - double y = (double) (this.client.getWindow().getHeight() / 2); + double x = (double) this.client.getWindow().getWidth() / 2; + double y = (double) this.client.getWindow().getHeight() / 2; InputUtil.setCursorParameters(this.client.getWindow().getHandle(), mode, x, y); } @@ -226,7 +226,7 @@ public class InteractionScreen extends Screen { } private void closeScreen() { - client.setScreen((Screen) null); + client.setScreen(null); } public void close() { @@ -235,7 +235,7 @@ public class InteractionScreen extends Screen { if (focusedString != null) { functions.get(focusedString).accept(this.entity); } else - client.setScreen((Screen) null); + client.setScreen(null); } public boolean isPauseScreen() { @@ -257,20 +257,7 @@ public class InteractionScreen extends Screen { matrix.scale(2f, 2f, 1f); context.drawCenteredTextWithShadow(textRenderer, entity.getName(), width / 4, 6, 0xFFFFFFFF); - int scale = client.options.getGuiScale().getValue(); - Vector2 mouse = new Vector2(mouseX, mouseY); - Vector2 center = new Vector2(width / 2, height / 2); - mouse.subtract(center); - mouse.normalize(); - - if (scale == 0) - scale = 4; - - // Move crossHair based on distance between mouse and center. But with limit - if (Math.hypot(width / 2 - mouseX, height / 2 - mouseY) < 1f / scale * 200f) - mouse.multiply((float) Math.hypot(width / 2 - mouseX, height / 2 - mouseY)); - else - mouse.multiply(1f / scale * 200f); + Vector2f mouse = getMouseVecs(mouseX, mouseY); this.crosshairX = (int) mouse.x + width / 2; this.crosshairY = (int) mouse.y + height / 2; @@ -280,6 +267,21 @@ public class InteractionScreen extends Screen { super.render(context, mouseX, mouseY, delta); } + private Vector2f getMouseVecs(int mouseX, int mouseY) { + int scale = client.options.getGuiScale().getValue(); + Vector2f mouse = new Vector2f(mouseX, mouseY); + Vector2f center = new Vector2f(width / 2, height / 2); + mouse.sub(center).normalize(); + + if (scale == 0) scale = 4; + + // Move crossHair based on distance between mouse and center. But with limit + if (Math.hypot(width / 2 - mouseX, height / 2 - mouseY) < 1f / scale * 200f) + mouse.mul((float) Math.hypot(width / 2 - mouseX, height / 2 - mouseY)); + else + mouse.mul(1f / scale * 200f); + return mouse; + } private void drawDots(DrawContext context, int radius, int mouseX, int mouseY) { ArrayList pointList = new ArrayList(); @@ -326,7 +328,7 @@ public class InteractionScreen extends Screen { private void drawTextField(DrawContext context, int x, int y, String key) { if (x >= width / 2) { - drawRect(context,x + 10, y - 8, textRenderer.getWidth(key) + 3, 15, backgroundColor, borderColor); + drawRect(context, x + 10, y - 8, textRenderer.getWidth(key) + 3, 15, backgroundColor, borderColor); context.drawTextWithShadow(textRenderer, key, x + 12, y - 4, textColor); } else { drawRect(context, x - 14 - textRenderer.getWidth(key), y - 8, textRenderer.getWidth(key) + 3, 15, backgroundColor, borderColor); @@ -361,40 +363,4 @@ public class InteractionScreen extends Screen { } } } -} - - -// Creating my own Vector class beacause I couldn“t find a good one in minecrafts code -class Vector2 { - float x, y; - - Vector2(float x, float y) { - this.x = x; - this.y = y; - } - - void normalize() { - float mag = getMag(); - if (mag != 0 && mag != 1) - divide(mag); - } - - void subtract(Vector2 vec) { - this.x -= vec.x; - this.y -= vec.y; - } - - void divide(float n) { - x /= n; - y /= n; - } - - void multiply(float n) { - x *= n; - y *= n; - } - - private float getMag() { - return (float) Math.sqrt(x * x + y * y); - } -} +} \ No newline at end of file diff --git a/src/main/java/anticope/rejects/modules/VehicleOneHit.java b/src/main/java/anticope/rejects/modules/VehicleOneHit.java index ff728e9..ea8b433 100644 --- a/src/main/java/anticope/rejects/modules/VehicleOneHit.java +++ b/src/main/java/anticope/rejects/modules/VehicleOneHit.java @@ -1,11 +1,11 @@ package anticope.rejects.modules; +import anticope.rejects.MeteorRejectsAddon; import meteordevelopment.meteorclient.events.packets.PacketEvent; import meteordevelopment.meteorclient.settings.IntSetting; import meteordevelopment.meteorclient.settings.Setting; import meteordevelopment.meteorclient.settings.SettingGroup; -import meteordevelopment.meteorclient.systems.modules.Categories; import meteordevelopment.meteorclient.systems.modules.Module; import meteordevelopment.orbit.EventHandler; import net.minecraft.entity.vehicle.AbstractMinecartEntity; @@ -28,7 +28,7 @@ public class VehicleOneHit extends Module { private boolean ignorePackets; public VehicleOneHit() { - super(Categories.Player, "vehicle-one-hit", "Destroy vehicles with one hit."); + super(MeteorRejectsAddon.CATEGORY, "vehicle-one-hit", "Destroy vehicles with one hit."); } @EventHandler diff --git a/src/main/java/anticope/rejects/utils/RejectsUtils.java b/src/main/java/anticope/rejects/utils/RejectsUtils.java index f86bab0..3cc5558 100644 --- a/src/main/java/anticope/rejects/utils/RejectsUtils.java +++ b/src/main/java/anticope/rejects/utils/RejectsUtils.java @@ -1,5 +1,6 @@ package anticope.rejects.utils; +import anticope.rejects.MeteorRejectsAddon; import anticope.rejects.utils.seeds.Seeds; import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.events.entity.player.PlayerMoveEvent; @@ -17,7 +18,6 @@ import java.util.Random; import static meteordevelopment.meteorclient.MeteorClient.mc; public class RejectsUtils { - @PostInit public static void init() { Runtime.getRuntime().addShutdownHook(new Thread(() -> { @@ -29,7 +29,12 @@ public class RejectsUtils { public static String getModuleName(String name) { int dupe = 0; - for (Module module : Modules.get().getAll()) { + Modules modules = Modules.get(); + if (modules == null) { + MeteorRejectsAddon.LOG.warn("Module instantiation before Modules initialized."); + return name; + } + for (Module module : modules.getAll()) { if (module.name.equals(name)) { dupe++; break; @@ -58,7 +63,7 @@ public class RejectsUtils { return angleDistance <= fov; } - public static float fullFlightMove(PlayerMoveEvent event, double speed, boolean verticalSpeedMatch){ + public static float fullFlightMove(PlayerMoveEvent event, double speed, boolean verticalSpeedMatch) { if (PlayerUtils.isMoving()) { double dir = getDir(); diff --git a/src/main/java/anticope/rejects/utils/accounts/CustomYggdrasilAccount.java b/src/main/java/anticope/rejects/utils/accounts/CustomYggdrasilAccount.java index 57adf39..628aa67 100644 --- a/src/main/java/anticope/rejects/utils/accounts/CustomYggdrasilAccount.java +++ b/src/main/java/anticope/rejects/utils/accounts/CustomYggdrasilAccount.java @@ -1,8 +1,8 @@ package anticope.rejects.utils.accounts; +import anticope.rejects.MeteorRejectsAddon; import com.mojang.authlib.exceptions.AuthenticationException; import com.mojang.authlib.minecraft.MinecraftSessionService; -import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.mixin.MinecraftClientAccessor; import meteordevelopment.meteorclient.systems.accounts.Account; import meteordevelopment.meteorclient.systems.accounts.AccountType; @@ -49,8 +49,8 @@ public class CustomYggdrasilAccount extends Account { return true; } catch (AuthenticationException e) { if (e.getMessage().contains("Invalid username or password") || e.getMessage().contains("account migrated")) - MeteorClient.LOG.error("Wrong password."); - else MeteorClient.LOG.error("Failed to contact the authentication server."); + MeteorRejectsAddon.LOG.error("Wrong password."); + else MeteorRejectsAddon.LOG.error("Failed to contact the authentication server."); return false; } }