diff --git a/src/main/java/net/aspw/client/Launch.kt b/src/main/java/net/aspw/client/Launch.kt index 950fb2cf..a2675682 100644 --- a/src/main/java/net/aspw/client/Launch.kt +++ b/src/main/java/net/aspw/client/Launch.kt @@ -24,8 +24,8 @@ object Launch { // Client information const val CLIENT_BEST = "NightX" const val CLIENT_FOLDER = "NightX-Client" - const val CLIENT_VERSION = "B120" - const val CLIENT_CHAT = "§c[$CLIENT_BEST] §r" + const val CLIENT_VERSION = "B121" + const val CLIENT_CHAT = "§7[§5N§di§3g§bh§6t§aX§7] [§eInfo§7] §r" var isStarting = false diff --git a/src/main/java/net/aspw/client/features/api/PacketManager.java b/src/main/java/net/aspw/client/features/api/PacketManager.java index 36e41ee5..bf903dfb 100644 --- a/src/main/java/net/aspw/client/features/api/PacketManager.java +++ b/src/main/java/net/aspw/client/features/api/PacketManager.java @@ -18,9 +18,7 @@ import net.minecraft.block.material.Material; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.network.Packet; -import org.lwjgl.opengl.GL11; -import java.awt.*; import java.util.ArrayList; import java.util.LinkedList; import java.util.Objects; @@ -78,31 +76,7 @@ public void onRender3D(Render3DEvent event) { findPos(routeX, routeY, routeZ); routeTimer.reset(); } - Color color = new Color(255, 255, 255, 180); - synchronized (routePositions) { - GL11.glPushMatrix(); - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_LINE_SMOOTH); - GL11.glEnable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_DEPTH_TEST); - mc.entityRenderer.disableLightmap(); - GL11.glBegin(GL11.GL_LINE_STRIP); - RenderUtils.glColor(color); - double renderPosX = mc.getRenderManager().viewerPosX; - double renderPosY = mc.getRenderManager().viewerPosY; - double renderPosZ = mc.getRenderManager().viewerPosZ; - for (Vec3 pos : routePositions) { - GL11.glVertex3d(pos.getX() - renderPosX, pos.getY() - renderPosY, pos.getZ() - renderPosZ); - } - GL11.glColor4d(1.0, 1.0, 1.0, 1.0); - GL11.glEnd(); - GL11.glEnable(GL11.GL_DEPTH_TEST); - GL11.glDisable(GL11.GL_LINE_SMOOTH); - GL11.glDisable(GL11.GL_BLEND); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glPopMatrix(); - } + RenderUtils.renderPathFinderLine(routePositions); } else if (!routePositions.isEmpty()) routePositions.clear(); diff --git a/src/main/java/net/aspw/client/features/module/ModuleManager.kt b/src/main/java/net/aspw/client/features/module/ModuleManager.kt index 1980d11f..c9284f35 100644 --- a/src/main/java/net/aspw/client/features/module/ModuleManager.kt +++ b/src/main/java/net/aspw/client/features/module/ModuleManager.kt @@ -157,7 +157,8 @@ class ModuleManager : Listenable { TargetESP::class.java, ReverseFreecam::class.java, HiderESP::class.java, - LegitVelocity::class.java + LegitVelocity::class.java, + Debug::class.java ) ClientUtils.getLogger().info("Successfully loaded modules") diff --git a/src/main/java/net/aspw/client/features/module/impl/exploit/Debug.kt b/src/main/java/net/aspw/client/features/module/impl/exploit/Debug.kt new file mode 100644 index 00000000..0c50ad22 --- /dev/null +++ b/src/main/java/net/aspw/client/features/module/impl/exploit/Debug.kt @@ -0,0 +1,21 @@ +package net.aspw.client.features.module.impl.exploit + +import net.aspw.client.event.EventTarget +import net.aspw.client.event.Render3DEvent +import net.aspw.client.features.module.Module +import net.aspw.client.features.module.ModuleCategory +import net.aspw.client.features.module.ModuleInfo +import net.aspw.client.utils.MovementUtils +import net.aspw.client.utils.render.RenderUtils +import net.aspw.client.value.IntegerValue + +@ModuleInfo(name = "Debug", category = ModuleCategory.EXPLOIT) +class Debug : Module() { + private val rangeValue = IntegerValue("Range", 100, 0, 200) + + @EventTarget + fun onRender3D(event: Render3DEvent) { + val positions = MovementUtils.predict(rangeValue.get()) + RenderUtils.renderLine(positions) + } +} \ No newline at end of file diff --git a/src/main/java/net/aspw/client/features/module/impl/movement/Flight.kt b/src/main/java/net/aspw/client/features/module/impl/movement/Flight.kt index 9acf2c74..d001a29a 100644 --- a/src/main/java/net/aspw/client/features/module/impl/movement/Flight.kt +++ b/src/main/java/net/aspw/client/features/module/impl/movement/Flight.kt @@ -343,6 +343,14 @@ class Flight : Module() { MovementUtils.strafe() } + "blocksmc" -> { + val bb = mc.thePlayer.entityBoundingBox.offset(0.0, 1.0, 0.0) + if (mc.theWorld.getCollidingBoundingBoxes(mc.thePlayer, bb).isEmpty() && !starteds) { + chat("failed to toggle fly") + state = false + } else chat("waiting...") + } + "vulcanzoom" -> { pog = false lastSentX = mc.thePlayer.posX @@ -1331,15 +1339,51 @@ class Flight : Module() { if (event.eventState === EventState.PRE) { val bb = mc.thePlayer.entityBoundingBox.offset(0.0, 1.0, 0.0) - if (starteds) { - mc.thePlayer.motionY += 0.025 - MovementUtils.strafe(0.95f.let { bmcSpeed *= it; bmcSpeed }.toFloat()) - } - if (mc.theWorld.getCollidingBoundingBoxes(mc.thePlayer, bb).isEmpty() && !starteds) { starteds = true mc.thePlayer.jump() - MovementUtils.strafe(4.also { bmcSpeed = it.toDouble() }.toFloat()) + MovementUtils.strafe(5.also { bmcSpeed = it.toDouble() }.toFloat()) + chat("started") + } + + if (starteds) { + val pos = mc.thePlayer.position.add(0.0, -1.5, 0.0) + if (mc.thePlayer.onGround) { + PacketUtils.sendPacketNoEvent( + C08PacketPlayerBlockPlacement( + pos, + 1, + ItemStack(Blocks.stone.getItem(mc.theWorld, pos)), + 0.0F, + 0.5F + Math.random().toFloat() * 0.44.toFloat(), + 0.0F + ) + ) + } + if (mc.thePlayer.ticksExisted % 4 == 0) { + chat("sent c08") + PacketUtils.sendPacketNoEvent( + C08PacketPlayerBlockPlacement( + pos, + 1, + ItemStack(Blocks.stone.getItem(mc.theWorld, pos)), + 0.0F, + 0.5F + Math.random().toFloat() * 0.44.toFloat(), + 0.0F + ) + ) + } + MovementUtils.strafe(0.95f.let { bmcSpeed *= it; bmcSpeed }.toFloat()) + if (bmcSpeed >= 3.1f) + mc.timer.timerSpeed = 0.45f + else mc.timer.timerSpeed = 0.2f + chat(bmcSpeed.toString()) + if (bmcSpeed <= 3f) { + mc.thePlayer.motionX = 0.0 + mc.thePlayer.motionZ = 0.0 + chat("disabled") + state = false + } } } } diff --git a/src/main/java/net/aspw/client/features/module/impl/movement/SilentSneak.kt b/src/main/java/net/aspw/client/features/module/impl/movement/SilentSneak.kt index 36ba6ff6..2771598e 100644 --- a/src/main/java/net/aspw/client/features/module/impl/movement/SilentSneak.kt +++ b/src/main/java/net/aspw/client/features/module/impl/movement/SilentSneak.kt @@ -3,6 +3,7 @@ package net.aspw.client.features.module.impl.movement import net.aspw.client.event.EventState import net.aspw.client.event.EventTarget import net.aspw.client.event.MotionEvent +import net.aspw.client.event.UpdateEvent import net.aspw.client.features.module.Module import net.aspw.client.features.module.ModuleCategory import net.aspw.client.features.module.ModuleInfo @@ -22,25 +23,28 @@ class SilentSneak : Module() { get() = modeValue.get() @EventTarget - fun onMotion(event: MotionEvent) { - if (mc.thePlayer.isSneaking) - sneaking = false - if (!sneaking && !mc.thePlayer.isSneaking) { - when (modeValue.get().lowercase(Locale.getDefault())) { - "legit" -> mc.gameSettings.keyBindSneak.pressed = true + fun onUpdate(event: UpdateEvent) { + if (modeValue.get().equals("legit", true)) + mc.gameSettings.keyBindSneak.pressed = true + } - "normal" -> { - if (event.eventState === EventState.PRE) { - mc.netHandler.addToSendQueue( - C0BPacketEntityAction( - mc.thePlayer, - C0BPacketEntityAction.Action.START_SNEAKING - ) + @EventTarget + fun onMotion(event: MotionEvent) { + if (modeValue.get().equals("normal", true)) { + if (mc.thePlayer.isSneaking) + sneaking = false + if (!sneaking && !mc.thePlayer.isSneaking) { + if (event.eventState === EventState.PRE) { + mc.netHandler.addToSendQueue( + C0BPacketEntityAction( + mc.thePlayer, + C0BPacketEntityAction.Action.START_SNEAKING ) - } + ) } + sneaking = true + chat("fix") } - sneaking = true } } @@ -48,17 +52,17 @@ class SilentSneak : Module() { sneaking = false if (mc.thePlayer == null) return when (modeValue.get().lowercase(Locale.getDefault())) { - "legit" -> if (!GameSettings.isKeyDown( - mc.gameSettings.keyBindSneak - ) - ) mc.gameSettings.keyBindSneak.pressed = false - "normal" -> mc.netHandler.addToSendQueue( C0BPacketEntityAction( mc.thePlayer, C0BPacketEntityAction.Action.STOP_SNEAKING ) ) + + "legit" -> if (!GameSettings.isKeyDown( + mc.gameSettings.keyBindSneak + ) + ) mc.gameSettings.keyBindSneak.pressed = false } } } \ No newline at end of file diff --git a/src/main/java/net/aspw/client/features/module/impl/movement/speeds/verus/VerusHop.java b/src/main/java/net/aspw/client/features/module/impl/movement/speeds/verus/VerusHop.java index aab13686..26432a4e 100644 --- a/src/main/java/net/aspw/client/features/module/impl/movement/speeds/verus/VerusHop.java +++ b/src/main/java/net/aspw/client/features/module/impl/movement/speeds/verus/VerusHop.java @@ -7,14 +7,8 @@ import net.aspw.client.utils.MovementUtils; import net.minecraft.potion.Potion; -/** - * The type Verus hop. - */ public class VerusHop extends SpeedMode { - /** - * Instantiates a new Verus hop. - */ public VerusHop() { super("VerusHop"); } @@ -31,12 +25,11 @@ public void onUpdate() { if (mc.thePlayer.onGround) { mc.thePlayer.jump(); if (mc.thePlayer.isPotionActive(Potion.moveSpeed)) { - MovementUtils.strafe(0.56f); + MovementUtils.strafe(0.55f); } else { - MovementUtils.strafe(0.48f); + MovementUtils.strafe(0.47f); } - } - MovementUtils.strafe(); + } else MovementUtils.strafe(); } } } diff --git a/src/main/java/net/aspw/client/features/module/impl/other/PacketTracker.kt b/src/main/java/net/aspw/client/features/module/impl/other/PacketTracker.kt index 0239a014..0e562ebf 100644 --- a/src/main/java/net/aspw/client/features/module/impl/other/PacketTracker.kt +++ b/src/main/java/net/aspw/client/features/module/impl/other/PacketTracker.kt @@ -19,9 +19,9 @@ class PacketTracker : Module() { val packet = event.packet if (transactionIDValue.get() && packet is C0FPacketConfirmTransaction) - chat("§c[Transaction ID]: §r" + packet.uid.toString()) + chat("§c[Transaction ID] §r" + packet.uid.toString()) if (keepAliveKeyValue.get() && packet is C00PacketKeepAlive) - chat("§c[KeepAlive Key]: §r" + packet.key.toString()) + chat("§c[KeepAlive Key] §r" + packet.key.toString()) } } \ No newline at end of file diff --git a/src/main/java/net/aspw/client/features/module/impl/player/Blink.kt b/src/main/java/net/aspw/client/features/module/impl/player/Blink.kt index a717b2a8..82f2b7fd 100644 --- a/src/main/java/net/aspw/client/features/module/impl/player/Blink.kt +++ b/src/main/java/net/aspw/client/features/module/impl/player/Blink.kt @@ -16,8 +16,7 @@ import net.minecraft.network.Packet import net.minecraft.network.play.client.* import net.minecraft.network.play.client.C03PacketPlayer.C04PacketPlayerPosition import net.minecraft.network.play.client.C03PacketPlayer.C06PacketPlayerPosLook -import org.lwjgl.opengl.GL11 -import java.awt.Color +import net.minecraft.util.Vec3 import java.util.* import java.util.concurrent.LinkedBlockingQueue @@ -25,7 +24,7 @@ import java.util.concurrent.LinkedBlockingQueue class Blink : Module() { private val pulseValue = BoolValue("Pulse", true) private val packets = LinkedBlockingQueue>() - private val positions = LinkedList() + private val positions = LinkedList() private val c0FValue = BoolValue("C0FCancel", false) private val pulseDelayValue = IntegerValue("PulseDelay", 400, 10, 5000, "ms") { pulseValue.get() } private val pulseTimer = MSTimer() @@ -34,22 +33,20 @@ class Blink : Module() { override fun onEnable() { if (mc.thePlayer == null) return - if (!pulseValue.get()) { - fakePlayer = EntityOtherPlayerMP(mc.theWorld, mc.thePlayer.gameProfile) - fakePlayer!!.clonePlayer(mc.thePlayer, true) - fakePlayer!!.copyLocationAndAnglesFrom(mc.thePlayer) - fakePlayer!!.rotationYawHead = mc.thePlayer.rotationYawHead - mc.theWorld.addEntityToWorld(-1337, fakePlayer) - } + fakePlayer = EntityOtherPlayerMP(mc.theWorld, mc.thePlayer.gameProfile) + fakePlayer!!.clonePlayer(mc.thePlayer, true) + fakePlayer!!.copyLocationAndAnglesFrom(mc.thePlayer) + fakePlayer!!.rotationYawHead = mc.thePlayer.rotationYawHead + mc.theWorld.addEntityToWorld(-1337, fakePlayer) synchronized(positions) { positions.add( - doubleArrayOf( + Vec3( mc.thePlayer.posX, mc.thePlayer.entityBoundingBox.minY + mc.thePlayer.getEyeHeight() / 2, mc.thePlayer.posZ ) ) - positions.add(doubleArrayOf(mc.thePlayer.posX, mc.thePlayer.entityBoundingBox.minY, mc.thePlayer.posZ)) + positions.add(Vec3(mc.thePlayer.posX, mc.thePlayer.entityBoundingBox.minY, mc.thePlayer.posZ)) } pulseTimer.reset() } @@ -67,7 +64,7 @@ class Blink : Module() { fun onPacket(event: PacketEvent) { val packet = event.packet if (mc.thePlayer == null || disableLogger) return - if (packet is C03PacketPlayer) // Cancel all movement stuff + if (packet is C03PacketPlayer) event.cancelEvent() if (packet is C04PacketPlayerPosition || packet is C06PacketPlayerPosLook || packet is C08PacketPlayerBlockPlacement || @@ -83,7 +80,7 @@ class Blink : Module() { fun onUpdate(event: UpdateEvent?) { synchronized(positions) { positions.add( - doubleArrayOf( + Vec3( mc.thePlayer.posX, mc.thePlayer.entityBoundingBox.minY, mc.thePlayer.posZ @@ -91,6 +88,11 @@ class Blink : Module() { ) } if (pulseValue.get() && pulseTimer.hasTimePassed(pulseDelayValue.get().toLong())) { + fakePlayer = EntityOtherPlayerMP(mc.theWorld, mc.thePlayer.gameProfile) + fakePlayer!!.clonePlayer(mc.thePlayer, true) + fakePlayer!!.copyLocationAndAnglesFrom(mc.thePlayer) + fakePlayer!!.rotationYawHead = mc.thePlayer.rotationYawHead + mc.theWorld.addEntityToWorld(-1337, fakePlayer) blink() pulseTimer.reset() } @@ -98,29 +100,7 @@ class Blink : Module() { @EventTarget fun onRender3D(event: Render3DEvent?) { - val color = Color(255, 255, 255, 180) - synchronized(positions) { - GL11.glPushMatrix() - GL11.glDisable(GL11.GL_TEXTURE_2D) - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA) - GL11.glEnable(GL11.GL_LINE_SMOOTH) - GL11.glEnable(GL11.GL_BLEND) - GL11.glDisable(GL11.GL_DEPTH_TEST) - mc.entityRenderer.disableLightmap() - GL11.glBegin(GL11.GL_LINE_STRIP) - RenderUtils.glColor(color) - val renderPosX = mc.renderManager.viewerPosX - val renderPosY = mc.renderManager.viewerPosY - val renderPosZ = mc.renderManager.viewerPosZ - for (pos in positions) GL11.glVertex3d(pos[0] - renderPosX, pos[1] - renderPosY, pos[2] - renderPosZ) - GL11.glColor4d(1.0, 1.0, 1.0, 1.0) - GL11.glEnd() - GL11.glEnable(GL11.GL_DEPTH_TEST) - GL11.glDisable(GL11.GL_LINE_SMOOTH) - GL11.glDisable(GL11.GL_BLEND) - GL11.glEnable(GL11.GL_TEXTURE_2D) - GL11.glPopMatrix() - } + RenderUtils.renderLine(positions) } override val tag: String diff --git a/src/main/java/net/aspw/client/features/module/impl/player/FastEat.kt b/src/main/java/net/aspw/client/features/module/impl/player/FastEat.kt index 8d0dd3a5..c68f931a 100644 --- a/src/main/java/net/aspw/client/features/module/impl/player/FastEat.kt +++ b/src/main/java/net/aspw/client/features/module/impl/player/FastEat.kt @@ -18,7 +18,7 @@ import java.util.* @ModuleInfo(name = "FastEat", spacedName = "Fast Eat", category = ModuleCategory.PLAYER) class FastEat : Module() { - private val modeValue = ListValue("Mode", arrayOf("NCP", "AAC", "AAC4", "Matrix", "BlocksMC", "Delayed"), "NCP") + private val modeValue = ListValue("Mode", arrayOf("NCP", "AAC", "AAC4", "Matrix", "Delayed"), "NCP") private val delayValue = IntegerValue("CustomDelay", 0, 0, 300) { modeValue.get().equals("delayed", true) } private val customSpeedValue = @@ -56,21 +56,6 @@ class FastEat : Module() { mc.playerController.onStoppedUsingItem(mc.thePlayer) } - "blocksmc" -> { - for (i in 0 until 2) { - mc.netHandler.addToSendQueue( - C03PacketPlayer.C06PacketPlayerPosLook( - mc.thePlayer.posX, - mc.thePlayer.posY, - mc.thePlayer.posZ, - mc.thePlayer.rotationYaw, - mc.thePlayer.rotationPitch, - mc.thePlayer.onGround - ) - ) - } - } - "matrix" -> { mc.timer.timerSpeed = 0.5f usedTimer = true diff --git a/src/main/java/net/aspw/client/features/module/impl/player/Scaffold.kt b/src/main/java/net/aspw/client/features/module/impl/player/Scaffold.kt index 48477573..16d301dc 100644 --- a/src/main/java/net/aspw/client/features/module/impl/player/Scaffold.kt +++ b/src/main/java/net/aspw/client/features/module/impl/player/Scaffold.kt @@ -27,13 +27,11 @@ import net.minecraft.client.settings.GameSettings import net.minecraft.client.settings.KeyBinding import net.minecraft.init.Blocks import net.minecraft.item.ItemBlock -import net.minecraft.network.Packet import net.minecraft.network.play.client.* import net.minecraft.potion.Potion import net.minecraft.stats.StatList import net.minecraft.util.* import java.util.* -import java.util.concurrent.LinkedBlockingQueue import kotlin.math.* @@ -164,8 +162,6 @@ class Scaffold : Module() { private val safeWalkValue = BoolValue("SafeWalk", false) private val airSafeValue = BoolValue("AirSafe", false) { safeWalkValue.get() } private val autoDisableSpeedValue = BoolValue("AutoDisable-Speed", false) - private val desyncValue = BoolValue("Desync", false) - private val desyncDelayValue = IntegerValue("DesyncDelay", 400, 10, 810, "ms") { desyncValue.get() } private val maxTurnSpeed: FloatValue = object : FloatValue("MaxTurnSpeed", 120f, 0f, 180f, "°") { override fun onChanged(oldValue: Float, newValue: Float) { @@ -195,12 +191,6 @@ class Scaffold : Module() { // Target block private var targetPlace: PlaceInfo? = null - // Desync - private val packets = LinkedBlockingQueue>() - private val positions = LinkedList() - private val pulseTimer = MSTimer() - private var disableLogger = false - // Launch position private var launchY = 0 private var placeCount = 0 @@ -252,22 +242,8 @@ class Scaffold : Module() { slot = mc.thePlayer.inventory.currentItem canTower = false lastMS = System.currentTimeMillis() - if (desyncValue.get()) { - synchronized(positions) { - positions.add( - doubleArrayOf( - mc.thePlayer.posX, - mc.thePlayer.entityBoundingBox.minY + mc.thePlayer.getEyeHeight() / 2, - mc.thePlayer.posZ - ) - ) - positions.add(doubleArrayOf(mc.thePlayer.posX, mc.thePlayer.entityBoundingBox.minY, mc.thePlayer.posZ)) - } - pulseTimer.reset() - } } - //Send jump packets, bypasses Hypixel. private fun fakeJump() { mc.thePlayer.isAirBorne = true mc.thePlayer.triggerAchievement(StatList.jumpStat) @@ -522,22 +498,6 @@ class Scaffold : Module() { } } - if (desyncValue.get()) { - synchronized(positions) { - positions.add( - doubleArrayOf( - mc.thePlayer.posX, - mc.thePlayer.entityBoundingBox.minY, - mc.thePlayer.posZ - ) - ) - } - if (pulseTimer.hasTimePassed(desyncDelayValue.get().toLong())) { - blink() - pulseTimer.reset() - } - } - if (customSpeedValue.get()) MovementUtils.strafe(customMoveSpeedValue.get()) if (sprintModeValue.get().equals("off", ignoreCase = true) || sprintModeValue.get() .equals("ground", ignoreCase = true) && !mc.thePlayer.onGround || sprintModeValue.get() @@ -586,20 +546,6 @@ class Scaffold : Module() { } } - if (desyncValue.get()) { - if (disableLogger) return - if (packet is C03PacketPlayer) - event.cancelEvent() - if (packet is C03PacketPlayer.C04PacketPlayerPosition || packet is C03PacketPlayer.C06PacketPlayerPosLook || - packet is C08PacketPlayerBlockPlacement || - packet is C0APacketAnimation || - packet is C0BPacketEntityAction || packet is C02PacketUseEntity - ) { - event.cancelEvent() - packets.add(packet) - } - } - // Sprint if (sprintModeValue.get().equals("silent", ignoreCase = true)) { if (packet is C0BPacketEntityAction && @@ -636,20 +582,6 @@ class Scaffold : Module() { return alwaysPlace || canTower || placeWhenAir && !mc.thePlayer.onGround || placeWhenFall && mc.thePlayer.fallDistance > 0 || placeWhenNegativeMotion && mc.thePlayer.motionY < 0 } - private fun blink() { - try { - disableLogger = true - while (!packets.isEmpty()) { - mc.netHandler.networkManager.sendPacket(packets.take()) - } - disableLogger = false - } catch (e: Exception) { - e.printStackTrace() - disableLogger = false - } - synchronized(positions) { positions.clear() } - } - @EventTarget fun onMotion(event: MotionEvent) { if (blocksAmount <= 0) return @@ -825,7 +757,6 @@ class Scaffold : Module() { */ override fun onDisable() { if (mc.thePlayer == null) return - blink() startPlaceTimer.reset() isHypixeling = false faceBlock = false diff --git a/src/main/java/net/aspw/client/features/module/impl/player/TargetStrafe.kt b/src/main/java/net/aspw/client/features/module/impl/player/TargetStrafe.kt index fe8694ac..87c4d5e4 100644 --- a/src/main/java/net/aspw/client/features/module/impl/player/TargetStrafe.kt +++ b/src/main/java/net/aspw/client/features/module/impl/player/TargetStrafe.kt @@ -33,7 +33,7 @@ class TargetStrafe : Module() { val killAura = Launch.moduleManager.getModule(KillAura::class.java) val speed = Launch.moduleManager.getModule(Speed::class.java) private val longJump = Launch.moduleManager.getModule(LongJump::class.java) - val flight = Launch.moduleManager.getModule(Flight::class.java) + private val flight = Launch.moduleManager.getModule(Flight::class.java) private var direction = 1 private var lastView = 0 @@ -49,7 +49,7 @@ class TargetStrafe : Module() { @EventTarget fun onMotion(event: MotionEvent) { - if (thirdPerson.get()) { // smart change back + if (thirdPerson.get()) { if (canStrafe) { if (hasChangedThirdPerson) lastView = mc.gameSettings.thirdPersonView mc.gameSettings.thirdPersonView = 1 diff --git a/src/main/java/net/aspw/client/features/module/impl/visual/Trajectories.kt b/src/main/java/net/aspw/client/features/module/impl/visual/Trajectories.kt index 0a8c781c..e30ff08b 100644 --- a/src/main/java/net/aspw/client/features/module/impl/visual/Trajectories.kt +++ b/src/main/java/net/aspw/client/features/module/impl/visual/Trajectories.kt @@ -188,7 +188,7 @@ class Trajectories : Module() { RenderUtils.disableGlCap(GL11.GL_DEPTH_TEST, GL11.GL_ALPHA_TEST, GL11.GL_TEXTURE_2D) GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA) GL11.glHint(GL11.GL_LINE_SMOOTH_HINT, GL11.GL_NICEST) - RenderUtils.glColor(Color(255, 255, 255, 180)) + RenderUtils.glColor(Color(255, 255, 255, 160)) GL11.glLineWidth(2f) worldRenderer.begin(GL11.GL_LINE_STRIP, DefaultVertexFormats.POSITION) diff --git a/src/main/java/net/aspw/client/injection/forge/mixins/block/MixinWorld.java b/src/main/java/net/aspw/client/injection/forge/mixins/block/MixinWorld.java new file mode 100644 index 00000000..08ce6bc7 --- /dev/null +++ b/src/main/java/net/aspw/client/injection/forge/mixins/block/MixinWorld.java @@ -0,0 +1,18 @@ +package net.aspw.client.injection.forge.mixins.block; + +import net.aspw.client.utils.MovementUtils; +import net.minecraft.util.EnumParticleTypes; +import net.minecraft.world.World; +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(World.class) +public class MixinWorld { + + @Inject(method = "spawnParticle(Lnet/minecraft/util/EnumParticleTypes;DDDDDD[I)V", at = @At("HEAD"), cancellable = true) + private void spawnParticle(EnumParticleTypes p_spawnParticle_1_, double p_spawnParticle_2_, double p_spawnParticle_3_, double p_spawnParticle_4_, double p_spawnParticle_5_, double p_spawnParticle_6_, double p_spawnParticle_7_, int[] p_spawnParticle_8_, CallbackInfo ci) { + if (MovementUtils.predicting) ci.cancel(); + } +} \ No newline at end of file diff --git a/src/main/java/net/aspw/client/injection/forge/mixins/block/MixinWorldClient.java b/src/main/java/net/aspw/client/injection/forge/mixins/block/MixinWorldClient.java new file mode 100644 index 00000000..01214576 --- /dev/null +++ b/src/main/java/net/aspw/client/injection/forge/mixins/block/MixinWorldClient.java @@ -0,0 +1,17 @@ +package net.aspw.client.injection.forge.mixins.block; + +import net.aspw.client.utils.MovementUtils; +import net.minecraft.client.multiplayer.WorldClient; +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(WorldClient.class) +public class MixinWorldClient { + + @Inject(method = "playSound", at = @At("HEAD"), cancellable = true) + public void playSound(double p_playSound_1_, double p_playSound_2_, double p_playSound_3_, String p_playSound_4_, float p_playSound_5_, float p_playSound_6_, boolean p_playSound_7_, CallbackInfo ci) { + if (MovementUtils.predicting) ci.cancel(); + } +} \ No newline at end of file diff --git a/src/main/java/net/aspw/client/injection/forge/mixins/entity/MixinEntity.java b/src/main/java/net/aspw/client/injection/forge/mixins/entity/MixinEntity.java index 1d9c6a11..9492b8c7 100644 --- a/src/main/java/net/aspw/client/injection/forge/mixins/entity/MixinEntity.java +++ b/src/main/java/net/aspw/client/injection/forge/mixins/entity/MixinEntity.java @@ -6,6 +6,7 @@ import net.aspw.client.features.module.impl.movement.Flight; import net.aspw.client.utils.EntityUtils; import net.aspw.client.utils.MinecraftInstance; +import net.aspw.client.utils.MovementUtils; import net.minecraft.block.Block; import net.minecraft.command.ICommandSender; import net.minecraft.crash.CrashReportCategory; @@ -216,7 +217,7 @@ public boolean alwaysReturnTrue(World world, BlockPos pos) { @Inject(method = "spawnRunningParticles", at = @At("HEAD"), cancellable = true) private void checkGroundState(CallbackInfo ci) { - if (!this.onGround) ci.cancel(); + if (!this.onGround || MovementUtils.predicting) ci.cancel(); } /** diff --git a/src/main/java/net/aspw/client/injection/forge/mixins/entity/MixinEntityPlayerSP.java b/src/main/java/net/aspw/client/injection/forge/mixins/entity/MixinEntityPlayerSP.java index 748ab7f4..f3429121 100644 --- a/src/main/java/net/aspw/client/injection/forge/mixins/entity/MixinEntityPlayerSP.java +++ b/src/main/java/net/aspw/client/injection/forge/mixins/entity/MixinEntityPlayerSP.java @@ -113,6 +113,9 @@ public abstract class MixinEntityPlayerSP extends MixinAbstractClientPlayer { @Shadow public abstract boolean isSneaking(); + @Shadow + public abstract void onUpdate(); + /** * @author As_pw * @reason RemoteView Fix diff --git a/src/main/java/net/aspw/client/injection/forge/mixins/network/MixinNetworkManager.java b/src/main/java/net/aspw/client/injection/forge/mixins/network/MixinNetworkManager.java index 35194139..ba5188c8 100644 --- a/src/main/java/net/aspw/client/injection/forge/mixins/network/MixinNetworkManager.java +++ b/src/main/java/net/aspw/client/injection/forge/mixins/network/MixinNetworkManager.java @@ -5,6 +5,7 @@ import net.aspw.client.Launch; import net.aspw.client.event.PacketEvent; import net.aspw.client.features.module.impl.combat.BackTrack; +import net.aspw.client.utils.MovementUtils; import net.aspw.client.utils.PacketUtils; import net.minecraft.network.INetHandler; import net.minecraft.network.NetworkManager; @@ -56,6 +57,7 @@ protected void channelRead0(final ChannelHandlerContext p_channelRead0_1_, final @Inject(method = "sendPacket(Lnet/minecraft/network/Packet;)V", at = @At("HEAD"), cancellable = true) private void send(final Packet packet, final CallbackInfo callback) { + if (MovementUtils.predicting) callback.cancel(); if (PacketUtils.handleSendPacket(packet)) return; final PacketEvent event = new PacketEvent(packet); final BackTrack backTrack = Launch.moduleManager.getModule(BackTrack.class); diff --git a/src/main/java/net/aspw/client/utils/MovementUtils.java b/src/main/java/net/aspw/client/utils/MovementUtils.java index 57aa0e41..c106921f 100644 --- a/src/main/java/net/aspw/client/utils/MovementUtils.java +++ b/src/main/java/net/aspw/client/utils/MovementUtils.java @@ -7,14 +7,21 @@ import net.minecraft.block.BlockPackedIce; import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.potion.Potion; +import net.minecraft.stats.StatFileWriter; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.BlockPos; +import net.minecraft.util.MovementInputFromOptions; +import net.minecraft.util.Vec3; + +import java.util.LinkedList; /** * The type Movement utils. */ public final class MovementUtils extends MinecraftInstance { + public static boolean predicting = false; + /** * Gets speed. * @@ -99,6 +106,38 @@ public static boolean isRidingBlock() { return !(mc.theWorld.getBlockState(new BlockPos(mc.thePlayer.posX, mc.thePlayer.posY - 1.8, mc.thePlayer.posZ)).getBlock() instanceof BlockAir) || !(mc.theWorld.getBlockState(new BlockPos(mc.thePlayer.posX, mc.thePlayer.posY - 1, mc.thePlayer.posZ)).getBlock() instanceof BlockAir) || !(mc.theWorld.getBlockState(new BlockPos(mc.thePlayer.posX, mc.thePlayer.posY - 0.5, mc.thePlayer.posZ)).getBlock() instanceof BlockAir) || !(mc.theWorld.getBlockState(new BlockPos(mc.thePlayer.posX + 0.5, mc.thePlayer.posY - 1.8, mc.thePlayer.posZ + 0.5)).getBlock() instanceof BlockAir) || !(mc.theWorld.getBlockState(new BlockPos(mc.thePlayer.posX - 0.5, mc.thePlayer.posY - 1.8, mc.thePlayer.posZ + 0.5)).getBlock() instanceof BlockAir) || !(mc.theWorld.getBlockState(new BlockPos(mc.thePlayer.posX + 0.5, mc.thePlayer.posY - 1.8, mc.thePlayer.posZ - 0.5)).getBlock() instanceof BlockAir) || !(mc.theWorld.getBlockState(new BlockPos(mc.thePlayer.posX - 0.5, mc.thePlayer.posY - 1.8, mc.thePlayer.posZ - 0.5)).getBlock() instanceof BlockAir) || !(mc.theWorld.getBlockState(new BlockPos(mc.thePlayer.posX + 0.5, mc.thePlayer.posY - 1, mc.thePlayer.posZ + 0.5)).getBlock() instanceof BlockAir) || !(mc.theWorld.getBlockState(new BlockPos(mc.thePlayer.posX - 0.5, mc.thePlayer.posY - 1, mc.thePlayer.posZ + 0.5)).getBlock() instanceof BlockAir) || !(mc.theWorld.getBlockState(new BlockPos(mc.thePlayer.posX + 0.5, mc.thePlayer.posY - 1, mc.thePlayer.posZ - 0.5)).getBlock() instanceof BlockAir) || !(mc.theWorld.getBlockState(new BlockPos(mc.thePlayer.posX - 0.5, mc.thePlayer.posY - 1, mc.thePlayer.posZ - 0.5)).getBlock() instanceof BlockAir) || !(mc.theWorld.getBlockState(new BlockPos(mc.thePlayer.posX + 0.5, mc.thePlayer.posY - 0.5, mc.thePlayer.posZ + 0.5)).getBlock() instanceof BlockAir) || !(mc.theWorld.getBlockState(new BlockPos(mc.thePlayer.posX - 0.5, mc.thePlayer.posY - 0.5, mc.thePlayer.posZ + 0.5)).getBlock() instanceof BlockAir) || !(mc.theWorld.getBlockState(new BlockPos(mc.thePlayer.posX + 0.5, mc.thePlayer.posY - 0.5, mc.thePlayer.posZ - 0.5)).getBlock() instanceof BlockAir) || !(mc.theWorld.getBlockState(new BlockPos(mc.thePlayer.posX - 0.5, mc.thePlayer.posY - 0.5, mc.thePlayer.posZ - 0.5)).getBlock() instanceof BlockAir); } + public static LinkedList predict(int tick) { + predicting = true; + LinkedList positions = new LinkedList<>(); + EntityPlayerSP sp = new EntityPlayerSP( + mc, + mc.theWorld, + mc.getNetHandler(), + new StatFileWriter() + ); + sp.setPositionAndRotation(mc.thePlayer.posX, mc.thePlayer.posY, mc.thePlayer.posZ, mc.thePlayer.rotationYaw, mc.thePlayer.rotationPitch); + sp.onGround = mc.thePlayer.onGround; + sp.setSprinting(mc.thePlayer.isSprinting()); + sp.setSneaking(mc.thePlayer.isSneaking()); + sp.motionX = mc.thePlayer.motionX; + sp.motionY = mc.thePlayer.motionY; + sp.motionZ = mc.thePlayer.motionZ; + sp.movementInput = new MovementInputFromOptions(mc.gameSettings); + for (int i = 0; i < tick; i++) { + sp.movementInput.moveStrafe = mc.thePlayer.movementInput.moveStrafe; + sp.movementInput.moveForward = mc.thePlayer.movementInput.moveForward; + sp.movementInput.jump = mc.thePlayer.movementInput.jump; + sp.movementInput.sneak = mc.thePlayer.movementInput.sneak; + sp.moveForward = mc.thePlayer.moveForward; + sp.moveStrafing = mc.thePlayer.moveStrafing; + sp.setJumping(mc.thePlayer.movementInput.jump); + sp.onUpdate(); + positions.add(new Vec3(sp.posX, sp.posY, sp.posZ)); + } + predicting = false; + return positions; + } + /** * Accelerate. * diff --git a/src/main/java/net/aspw/client/utils/render/RenderUtils.java b/src/main/java/net/aspw/client/utils/render/RenderUtils.java index 09c4e0da..1d6ca579 100644 --- a/src/main/java/net/aspw/client/utils/render/RenderUtils.java +++ b/src/main/java/net/aspw/client/utils/render/RenderUtils.java @@ -20,18 +20,15 @@ import net.minecraft.item.ItemBow; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemSword; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.BlockPos; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.Timer; +import net.minecraft.util.*; +import org.lwjgl.opengl.GL11; import java.awt.*; import java.util.HashMap; +import java.util.LinkedList; import java.util.Map; import static java.lang.Math.*; -import static net.minecraft.client.renderer.GlStateManager.disableBlend; -import static net.minecraft.client.renderer.GlStateManager.enableTexture2D; import static org.lwjgl.opengl.GL11.*; /** @@ -89,61 +86,58 @@ public final class RenderUtils extends MinecraftInstance { glEndList(); } - /** - * Draw textured modal rect. - * - * @param x the x - * @param y the y - * @param textureX the texture x - * @param textureY the texture y - * @param width the width - * @param height the height - * @param zLevel the z level - */ - public static void drawTexturedModalRect(final int x, final int y, final int textureX, final int textureY, final int width, final int height, final float zLevel) { - final float f = 0.00390625F; - final float f1 = 0.00390625F; - final Tessellator tessellator = Tessellator.getInstance(); - final WorldRenderer worldrenderer = tessellator.getWorldRenderer(); - worldrenderer.begin(7, DefaultVertexFormats.POSITION_TEX); - worldrenderer.pos(x, y + height, zLevel).tex((float) (textureX) * f, (float) (textureY + height) * f1).endVertex(); - worldrenderer.pos(x + width, y + height, zLevel).tex((float) (textureX + width) * f, (float) (textureY + height) * f1).endVertex(); - worldrenderer.pos(x + width, y, zLevel).tex((float) (textureX + width) * f, (float) (textureY) * f1).endVertex(); - worldrenderer.pos(x, y, zLevel).tex((float) (textureX) * f, (float) (textureY) * f1).endVertex(); - tessellator.draw(); - } - - public static void drawRects(double left, double top, double right, double bottom, final int color) { - if (left < right) { - final double i = left; - left = right; - right = i; + public static void renderLine(final LinkedList positions) { + synchronized (positions) { + GL11.glPushMatrix(); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + GL11.glEnable(GL11.GL_LINE_SMOOTH); + GL11.glEnable(GL11.GL_BLEND); + GL11.glDisable(GL11.GL_DEPTH_TEST); + mc.entityRenderer.disableLightmap(); + GL11.glBegin(GL11.GL_LINE_STRIP); + RenderUtils.glColor(new Color(255, 255, 255, 160)); + double renderPosX = mc.getRenderManager().viewerPosX; + double renderPosY = mc.getRenderManager().viewerPosY; + double renderPosZ = mc.getRenderManager().viewerPosZ; + for (Vec3 pos : positions) { + GL11.glVertex3d(pos.xCoord - renderPosX, pos.yCoord - renderPosY, pos.zCoord - renderPosZ); + } + GL11.glColor4d(1.0, 1.0, 1.0, 1.0); + GL11.glEnd(); + GL11.glEnable(GL11.GL_DEPTH_TEST); + GL11.glDisable(GL11.GL_LINE_SMOOTH); + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glPopMatrix(); } + } - if (top < bottom) { - final double j = top; - top = bottom; - bottom = j; + public static void renderPathFinderLine(final LinkedList positions) { + synchronized (positions) { + GL11.glPushMatrix(); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + GL11.glEnable(GL11.GL_LINE_SMOOTH); + GL11.glEnable(GL11.GL_BLEND); + GL11.glDisable(GL11.GL_DEPTH_TEST); + mc.entityRenderer.disableLightmap(); + GL11.glBegin(GL11.GL_LINE_STRIP); + RenderUtils.glColor(new Color(255, 255, 255, 160)); + double renderPosX = mc.getRenderManager().viewerPosX; + double renderPosY = mc.getRenderManager().viewerPosY; + double renderPosZ = mc.getRenderManager().viewerPosZ; + for (net.aspw.client.utils.pathfinder.Vec3 pos : positions) { + GL11.glVertex3d(pos.getX() - renderPosX, pos.getY() - renderPosY, pos.getZ() - renderPosZ); + } + GL11.glColor4d(1.0, 1.0, 1.0, 1.0); + GL11.glEnd(); + GL11.glEnable(GL11.GL_DEPTH_TEST); + GL11.glDisable(GL11.GL_LINE_SMOOTH); + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glPopMatrix(); } - - final float f3 = (float) (color >> 24 & 255) / 255.0F; - final float f = (float) (color >> 16 & 255) / 255.0F; - final float f1 = (float) (color >> 8 & 255) / 255.0F; - final float f2 = (float) (color & 255) / 255.0F; - final Tessellator tessellator = Tessellator.getInstance(); - final WorldRenderer worldrenderer = tessellator.getWorldRenderer(); - GlStateManager.enableBlend(); - GlStateManager.disableTexture2D(); - GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0); - GlStateManager.color(f, f1, f2, f3); - worldrenderer.begin(7, DefaultVertexFormats.POSITION); - worldrenderer.pos(left, bottom, 0.0D).endVertex(); - worldrenderer.pos(right, bottom, 0.0D).endVertex(); - worldrenderer.pos(right, top, 0.0D).endVertex(); - worldrenderer.pos(left, top, 0.0D).endVertex(); - tessellator.draw(); - enableTexture2D(); - disableBlend(); } public static void drawRect(final Rectangle rect, final int color) { diff --git a/src/main/java/net/aspw/client/visual/client/altmanager/menus/GuiMicrosoftLogin.kt b/src/main/java/net/aspw/client/visual/client/altmanager/menus/GuiMicrosoftLogin.kt index f8f68e0b..529143fa 100644 --- a/src/main/java/net/aspw/client/visual/client/altmanager/menus/GuiMicrosoftLogin.kt +++ b/src/main/java/net/aspw/client/visual/client/altmanager/menus/GuiMicrosoftLogin.kt @@ -17,39 +17,46 @@ class GuiMicrosoftLogin(private val prevGui: GuiScreen) : GuiScreen() { private lateinit var server: OAuthServer override fun initGui() { - server = MicrosoftAccount.buildFromOpenBrowser(object : MicrosoftAccount.OAuthHandler { - override fun openUrl(url: String) { - stage = "Logging in..." - ClientUtils.getLogger().info("Opening URL: $url") + try { + server = MicrosoftAccount.buildFromOpenBrowser(object : MicrosoftAccount.OAuthHandler { + override fun openUrl(url: String) { + stage = "Logging in..." + ClientUtils.getLogger().info("Opening URL: $url") - MiscUtils.showURL(url) - } - - override fun authError(error: String) { - stage = "Error: $error" - } + MiscUtils.showURL(url) + } - override fun authResult(account: MicrosoftAccount) { - if (Launch.fileManager.accountsConfig.accountExists(account)) { - stage = "§cThe account has already been added." - return + override fun authError(error: String) { + stage = "Error: $error" } - Launch.fileManager.accountsConfig.addAccount(account) - Launch.fileManager.saveConfig(Launch.fileManager.accountsConfig) - if (Launch.moduleManager.getModule(Interface::class.java)?.flagSoundValue!!.get()) { - Launch.tipSoundManager.popSound.asyncPlay(Launch.moduleManager.popSoundPower) + + override fun authResult(account: MicrosoftAccount) { + if (Launch.fileManager.accountsConfig.accountExists(account)) { + stage = "§cThe account has already been added." + return + } + Launch.fileManager.accountsConfig.addAccount(account) + Launch.fileManager.saveConfig(Launch.fileManager.accountsConfig) + if (Launch.moduleManager.getModule(Interface::class.java)?.flagSoundValue!!.get()) { + Launch.tipSoundManager.popSound.asyncPlay(Launch.moduleManager.popSoundPower) + } + stage = "§aThe account has been added." + mc.displayGuiScreen(prevGui) } - stage = "§aThe account has been added." - mc.displayGuiScreen(prevGui) - } - }) + }) + } catch (e: Exception) { + stage = "Failed [$e]" + } buttonList.add(GuiButton(0, width / 2 - 100, height / 4 + 120 + 12, "Cancel")) } override fun actionPerformed(button: GuiButton) { if (button.id == 0) { - server.stop(true) + try { + server.stop(true) + } catch (ignored: Exception) { + } mc.displayGuiScreen(prevGui) } } diff --git a/src/main/resources/client.forge.mixins.json b/src/main/resources/client.forge.mixins.json index dc2977d8..a2edf67a 100644 --- a/src/main/resources/client.forge.mixins.json +++ b/src/main/resources/client.forge.mixins.json @@ -11,6 +11,8 @@ "block.MixinBlockLiquid", "block.MixinBlockModelRenderer", "block.MixinBlockSoulSand", + "block.MixinWorld", + "block.MixinWorldClient", "client.MixinGameSettings", "client.MixinMinecraft", "entity.MixinAbstractClientPlayer",