diff --git a/src/minecraft/kevin/command/CommandManager.kt b/src/minecraft/kevin/command/CommandManager.kt index 8fa7db96..1bdeb3b4 100644 --- a/src/minecraft/kevin/command/CommandManager.kt +++ b/src/minecraft/kevin/command/CommandManager.kt @@ -2,6 +2,7 @@ package kevin.command import kevin.command.commands.* import kevin.main.KevinClient +import kevin.module.modules.misc.AdminDetector import kevin.module.modules.misc.AutoDisable import kevin.script.ScriptManager import kevin.utils.ChatUtils @@ -36,9 +37,11 @@ class CommandManager { commands[arrayOf("hide")] = HideCommand() - commands[arrayOf("AutoDisable")] = AutoDisable + commands[arrayOf("AutoDisableSet")] = AutoDisable commands[arrayOf("ReloadScripts","ReloadScript")] = ScriptManager + + commands[arrayOf("Admin")] = AdminDetector } fun execCommand(message: String): Boolean{ diff --git a/src/minecraft/kevin/command/commands/HelpCommand.kt b/src/minecraft/kevin/command/commands/HelpCommand.kt index 8452de38..c4efb52a 100644 --- a/src/minecraft/kevin/command/commands/HelpCommand.kt +++ b/src/minecraft/kevin/command/commands/HelpCommand.kt @@ -18,8 +18,9 @@ class HelpCommand : ICommand { ChatUtils.message("§a.config §9Load/Save config.") ChatUtils.message("§a.skin §9Change your skin.") ChatUtils.message("§a.hide §9Hide a module.") - ChatUtils.message("§a.AutoDisable §9Add/Remove a module to AutoDisable List.") + ChatUtils.message("§a.AutoDisableSet §9Add/Remove a module to AutoDisable List.") ChatUtils.message("§a.reloadScripts §9Reload Scripts.") ChatUtils.message("§a.reloadScript §9Reload Scripts.") + ChatUtils.message("§a.Admin Add admin name to detect list.") } } \ No newline at end of file diff --git a/src/minecraft/kevin/file/FileManager.java b/src/minecraft/kevin/file/FileManager.java index d60e39c0..d21d9112 100644 --- a/src/minecraft/kevin/file/FileManager.java +++ b/src/minecraft/kevin/file/FileManager.java @@ -25,6 +25,7 @@ public class FileManager extends MinecraftInstance { public final FileConfig modulesConfig = new ModulesConfig(new File(dir, "modules.json")); public final FileConfig hudConfig = new HudConfig(new File(dir, "hud.json")); public final File altsFile = new File(dir,"accounts.json"); + public final File adminNamesFile = new File(dir,"AdminNames.txt"); public void load(){ if (!dir.exists()) dir.mkdir(); diff --git a/src/minecraft/kevin/hud/HUD.kt b/src/minecraft/kevin/hud/HUD.kt index 74d8d867..3a5026dd 100644 --- a/src/minecraft/kevin/hud/HUD.kt +++ b/src/minecraft/kevin/hud/HUD.kt @@ -70,6 +70,7 @@ open class HUD : MinecraftInstance() { println("Something went wrong while drawing ${it.name} element in HUD. $ex") } + GL11.glEnable(GL11.GL_BLEND) GL11.glColor4f(1F,1F,1F,1F) GL11.glPopMatrix() } diff --git a/src/minecraft/kevin/main/KevinClient.kt b/src/minecraft/kevin/main/KevinClient.kt index 763b5158..bb3b77c2 100644 --- a/src/minecraft/kevin/main/KevinClient.kt +++ b/src/minecraft/kevin/main/KevinClient.kt @@ -21,7 +21,7 @@ import org.lwjgl.opengl.Display object KevinClient { var name = "Kevin" - var version = "b1.5" + var version = "b1.6" lateinit var moduleManager: ModuleManager lateinit var fileManager: FileManager diff --git a/src/minecraft/kevin/module/ModuleManager.kt b/src/minecraft/kevin/module/ModuleManager.kt index ce8588ac..6be7aa56 100644 --- a/src/minecraft/kevin/module/ModuleManager.kt +++ b/src/minecraft/kevin/module/ModuleManager.kt @@ -60,6 +60,7 @@ class ModuleManager : Listenable { VehicleOneHit() ) miscList = arrayListOf( + AdminDetector, AntiBot(), AutoCommand(), AutoDisable, diff --git a/src/minecraft/kevin/module/modules/combat/KillAura.kt b/src/minecraft/kevin/module/modules/combat/KillAura.kt index a3caaa91..668b1f34 100644 --- a/src/minecraft/kevin/module/modules/combat/KillAura.kt +++ b/src/minecraft/kevin/module/modules/combat/KillAura.kt @@ -65,7 +65,7 @@ class KillAura : Module("KillAura","Automatically attacks targets around you.", private val keepSprintValue = BooleanValue("KeepSprint", true) // AutoBlock - private val autoBlockValue = ListValue("AutoBlock", arrayOf("Off", "Packet", "AfterTick"), "Packet") + private val autoBlockValue = ListValue("AutoBlock", arrayOf("Off", "Packet", "AfterTick", "Keep"), "Packet") private val interactAutoBlockValue = BooleanValue("InteractAutoBlock", true) private val blockRate = IntegerValue("BlockRate", 100, 1, 100) @@ -157,6 +157,10 @@ class KillAura : Module("KillAura","Automatically attacks targets around you.", updateTarget() } + //Keep AutoBlock + private val keepAutoBlock: Boolean + get() = autoBlockValue equal "Keep" + /** * Disable kill aura module */ @@ -515,7 +519,7 @@ class KillAura : Module("KillAura","Automatically attacks targets around you.", // Stop blocking val thePlayer = mc.thePlayer!! - if (thePlayer.isBlocking || blockingStatus) + if ((thePlayer.isBlocking || blockingStatus)&&!keepAutoBlock) stopBlocking() // Call attack event @@ -554,7 +558,7 @@ class KillAura : Module("KillAura","Automatically attacks targets around you.", } // Start blocking after attack - if (autoBlockValue.get().equals("Packet", true) && (thePlayer.isBlocking || canBlock)) + if ((autoBlockValue.get().equals("Packet", true)||keepAutoBlock) && (thePlayer.isBlocking || canBlock)) startBlocking(entity, interactAutoBlockValue.get()) } diff --git a/src/minecraft/kevin/module/modules/exploit/Disabler.kt b/src/minecraft/kevin/module/modules/exploit/Disabler.kt index acbc58eb..ddcf5e25 100644 --- a/src/minecraft/kevin/module/modules/exploit/Disabler.kt +++ b/src/minecraft/kevin/module/modules/exploit/Disabler.kt @@ -23,7 +23,7 @@ import kotlin.math.roundToInt import kotlin.math.sqrt object Disabler : Module("Disabler","Disable some anti-cheat check.",category = ModuleCategory.EXPLOIT) { - private val modeValue= ListValue("Mode",arrayOf("MineplexCombat","OldHypixel","OldVerusCombat","OldVerusCombat2","OldVerusMove","Flying","Spectate","SpectateSpoof","SpectateSpoof2","VulcanGeyser","C13+InfiniteC0C","NoGroundTouch","NoGroundTouch2","MemetrixScaffold","FakeLag","RidingSpoof","Kauri","Basic"),"MinePlexCombat") + val modeValue = ListValue("Mode",arrayOf("MineplexCombat","OldHypixel","OldVerusCombat","OldVerusCombat2","OldVerusMove","Flying","Spectate","SpectateSpoof","SpectateSpoof2","VulcanGeyser","C13+InfiniteC0C","NoGroundTouch","NoGroundTouch2","MemetrixScaffold","FakeLag","RidingSpoof","Kauri","Basic"),"MinePlexCombat") private val debug = BooleanValue("Debug", false) private val memeAACValue = BooleanValue("MemetrixWithAAC5", false) private val fakeLagPosValue = BooleanValue("FakeLagPosition", true) diff --git a/src/minecraft/kevin/module/modules/misc/AdminDetector.kt b/src/minecraft/kevin/module/modules/misc/AdminDetector.kt new file mode 100644 index 00000000..aa633131 --- /dev/null +++ b/src/minecraft/kevin/module/modules/misc/AdminDetector.kt @@ -0,0 +1,110 @@ +package kevin.module.modules.misc + +import joptsimple.internal.Strings +import kevin.command.ICommand +import kevin.event.EventTarget +import kevin.event.PacketEvent +import kevin.event.UpdateEvent +import kevin.hud.element.elements.Notification +import kevin.main.KevinClient +import kevin.module.* +import kevin.utils.ChatUtils +import kevin.utils.TickTimer +import net.minecraft.network.play.client.C14PacketTabComplete +import net.minecraft.network.play.server.S3APacketTabComplete +import java.io.File + +object AdminDetector : Module("AdminDetector","Detect server admins."),ICommand { + private val adminNamesFile:File by lazy { + if (!KevinClient.fileManager.adminNamesFile.exists()) KevinClient.fileManager.adminNamesFile.createNewFile() + KevinClient.fileManager.adminNamesFile + } + override fun run(args: Array?) { + if (args.isNullOrEmpty()||args.size<2){ + usageMessage() + return + } + val name = args[1] + val names = adminNamesFile.readLines() + when{ + args[0].equals("Add",true) -> { + if (name in names) { + ChatUtils.messageWithStart("§cName is already in the list!") + return + } + adminNamesFile.appendText("$name\n") + ChatUtils.messageWithStart("§aName successfully added to the list!") + } + args[0].equals("Remove",true) -> { + if (name !in names){ + ChatUtils.messageWithStart("§cName is not in the list!") + return + } + adminNamesFile.writeText("") + names.forEach { + if (it!=name&&it.isNotEmpty()){ + adminNamesFile.appendText("$it\n") + } + } + ChatUtils.messageWithStart("§aName successfully removed from the list!") + } + else -> usageMessage() + } + } + private fun usageMessage() = ChatUtils.messageWithStart("§cUsage: .Admin ") + + private val modeValue = ListValue("Mode", arrayOf("Tab"),"Tab") + private val tabCommand = TextValue("TabCommand","/tell") + private val waitTicks = IntegerValue("WaitTick",100,0,200) + private val notificationMode = ListValue("NotificationMode", arrayOf("Chat","Notification"),"Chat") + private val noNotFindNotification = BooleanValue("NoNotFindNotification",true) + + private val timer = TickTimer() + private var waiting = false + + @EventTarget fun onUpdate(event: UpdateEvent){ + timer.update() + if (!timer.hasTimePassed(waitTicks.get()+1)) return + when(modeValue.get()){ + "Tab" -> { + mc.netHandler.addToSendQueue(C14PacketTabComplete("${tabCommand.get()} ")) + waiting = true + timer.reset() + } + } + } + @EventTarget fun onPacket(event: PacketEvent){ + val packet = event.packet + when(modeValue.get()){ + "Tab" -> { + if (!waiting) return + if (packet is S3APacketTabComplete){ + val players = packet.func_149630_c() + val admins = adminNamesFile.readLines().toMutableList() + admins.removeAll { it.isEmpty() } + val findAdmins = arrayListOf() + players.forEach { + if (it in admins) findAdmins.add(it) + } + n(findAdmins) + waiting = false + event.cancelEvent() + } + } + } + } + + private fun n(findAdmins:ArrayList){ + if (findAdmins.isEmpty()) { + if (!noNotFindNotification.get()) when(notificationMode.get()){ + "Chat" -> ChatUtils.messageWithStart("[AdminDetector] No admin find.") + "Notification" -> KevinClient.hud.addNotification(Notification("No admin find."),"Admin Detector") + } + return + } + when(notificationMode.get()){ + "Chat" -> ChatUtils.messageWithStart("[AdminDetector] Warning: find ${findAdmins.size} admin(s)![§c${Strings.join(findAdmins.toArray(arrayOfNulls(0)), "§7, §c")}]") + "Notification" -> KevinClient.hud.addNotification(Notification("Warning: find ${findAdmins.size} admin(s)![§c${Strings.join(findAdmins.toArray(arrayOfNulls(0)), "§7, §c")}]"),"Admin Detector") + } + } +} \ No newline at end of file diff --git a/src/minecraft/kevin/module/modules/misc/AutoCommand.kt b/src/minecraft/kevin/module/modules/misc/AutoCommand.kt index 88aaded9..0775d833 100644 --- a/src/minecraft/kevin/module/modules/misc/AutoCommand.kt +++ b/src/minecraft/kevin/module/modules/misc/AutoCommand.kt @@ -3,16 +3,24 @@ package kevin.module.modules.misc import kevin.event.EventTarget import kevin.event.PacketEvent import kevin.event.UpdateEvent +import kevin.hud.element.elements.Notification +import kevin.main.KevinClient //import kevin.event.UpdateState import kevin.module.* +import kevin.utils.ChatUtils import kevin.utils.MSTimer import net.minecraft.network.play.server.S02PacketChat class AutoCommand : Module("AutoCommand","Send commands automatically.",category = ModuleCategory.MISC) { private val autoLoginValue = BooleanValue("AutoLogin",true) private val autoRegisterValue = BooleanValue("AutoRegister",true) + private val autoJoin = BooleanValue("AutoJoin",true) + private val autoJoinDetectMessage = TextValue("AutoJoinDetectMessage","top") + private val autoJoinDelay = IntegerValue("AutoJoinDelay",5000,50,10000) + private val autoJoinMessage = TextValue("AutoJoinMessage","/join") + private val autoJoinNotificationMode = ListValue("AutoJoinNotificationMode", arrayOf("Notification","Chat","None"),"Notification") private val registerAndLoginPassword = TextValue("RegisterAndLoginPassword","Password") private val autoLoginAndRegisterDelay = IntegerValue("AutoLoginAndRegisterDelay",2500,100,5000) private val autoLoginMode = ListValue("AutoLoginMode", arrayOf("/l","/login","Custom"),"/login") @@ -22,8 +30,10 @@ class AutoCommand : Module("AutoCommand","Send commands automatically.",category private val autoRegisterDetectMessage = TextValue("AutoRegisterDetectMessage","register") private val timer = MSTimer() + private val autoJoinTimer = MSTimer() private var register = false private var login = false + private var join = false override fun onDisable() { register = false @@ -31,13 +41,8 @@ class AutoCommand : Module("AutoCommand","Send commands automatically.",category super.onDisable() } - override val tag: String? - get() = when{ - autoLoginValue.get()&&autoRegisterValue.get() ->"Auto Login Register" - autoRegisterValue.get() -> "Auto Register" - autoLoginValue.get() -> "Auto Login" - else -> null - } + override val tag: String + get() = "Auto ${if(autoJoin.get()) "Join" else ""} ${if(autoLoginValue.get()) "Login" else ""} ${if(autoRegisterValue.get()) "Register" else ""}" @EventTarget fun onPacket(event: PacketEvent){ @@ -46,6 +51,14 @@ class AutoCommand : Module("AutoCommand","Send commands automatically.",category val text = packet.chatComponent.formattedText if (text.contains(autoRegisterDetectMessage.get(),true)&&autoRegisterValue.get()) {register=true;timer.reset();return} if (text.contains(autoLoginDetectMessage.get(),true)&&autoLoginValue.get()) {login=true;timer.reset()} + if (text.contains(autoJoinDetectMessage.get(),true)&&autoJoin.get()) { + join=true + autoJoinTimer.reset() + when(autoJoinNotificationMode.get()){ + "Notification" -> KevinClient.hud.addNotification(Notification("Send command after ${autoJoinDelay.get()} MS."),"AutoJoin") + "Chat" -> ChatUtils.messageWithStart("[AutoJoin] Send command after ${autoJoinDelay.get()} MS.") + } + } } @EventTarget @@ -53,6 +66,15 @@ class AutoCommand : Module("AutoCommand","Send commands automatically.",category //if (event.eventState == UpdateState.OnUpdate) return + if (autoJoinTimer.hasTimePassed(autoJoinDelay.get().toLong())&&join) { + mc.thePlayer.sendChatMessage(autoJoinMessage.get()) + join = false + when(autoJoinNotificationMode.get()){ + "Notification" -> KevinClient.hud.addNotification(Notification("Auto Join..."),"AutoJoin") + "Chat" -> ChatUtils.messageWithStart("[AutoJoin] Auto Join...") + } + } + if (!timer.hasTimePassed(autoLoginAndRegisterDelay.get().toLong())) return if (register){ mc.thePlayer.sendChatMessage("${autoRegisterCommand.get()} ${registerAndLoginPassword.get()} ${registerAndLoginPassword.get()}") diff --git a/src/minecraft/kevin/module/modules/movement/Fly.kt b/src/minecraft/kevin/module/modules/movement/Fly.kt index 97bd0f2f..a7062932 100644 --- a/src/minecraft/kevin/module/modules/movement/Fly.kt +++ b/src/minecraft/kevin/module/modules/movement/Fly.kt @@ -4,7 +4,10 @@ import kevin.event.* import kevin.hud.element.elements.Notification import kevin.main.KevinClient import kevin.module.* +import kevin.module.modules.exploit.Disabler import kevin.utils.* +import net.minecraft.client.settings.GameSettings +import net.minecraft.init.Blocks import net.minecraft.network.Packet import net.minecraft.network.play.client.C00PacketKeepAlive import net.minecraft.network.play.client.C03PacketPlayer @@ -17,13 +20,30 @@ import org.lwjgl.opengl.GL11 import java.awt.Color import java.util.concurrent.CopyOnWriteArrayList import kotlin.math.cos +import kotlin.math.round import kotlin.math.sin class Fly : Module("Fly","Allow you fly", Keyboard.KEY_F,ModuleCategory.MOVEMENT) { private val speed = FloatValue("Speed",2F,0.5F,5F) - val mode = ListValue("Mode", arrayOf("Vanilla","Creative","AAC5","NCP","Teleport"),"Vanilla") + val mode = ListValue("Mode", arrayOf("Vanilla","Creative","AAC5","NCP","Teleport","VerusAuto"),"Vanilla") + + private val verusMoveMode = ListValue("VerusMoveMode", arrayOf("Walk","Jump"),"Walk") + private val verusMoveJump: Boolean + get() = verusMoveMode equal "Jump" + private val verusBoost = ListValue("VerusBoost", arrayOf("None","Clip","Packet"),"Packet") + private val verusBoostTicks = IntegerValue("VerusBoostTicks",10,1,15) + private val verusBoostOnlyFirst = BooleanValue("VerusBoostOnlyFirst",true) + private val verusJump = BooleanValue("VerusJump",true) + private val verusDown = BooleanValue("VerusDown",true) + private val verusDownNoSneak = BooleanValue("VerusDownNoSneak",true) + + private var verusState = 0 + private val verusTimer = TickTimer() + private var playerY = .0 + private var y = 0 + private val resetMotion = BooleanValue("ResetMotion",false) private val keepAlive = BooleanValue("KeepAlive",false) @@ -112,6 +132,19 @@ class Fly : Module("Fly","Allow you fly", Keyboard.KEY_F,ModuleCategory.MOVEMENT mc.thePlayer!!.motionZ = .0 } } + "VerusAuto" -> if ( + verusMoveJump&& + !verusVanilla&& + verusState!=1&& + event.eventState==EventState.PRE&& + !mc.gameSettings.keyBindJump.isKeyDown&& + mc.thePlayer.jumpTicks==0&& + !mc.thePlayer.isInWater&& + !mc.thePlayer.isInLava&& + !mc.thePlayer.isInWeb&& + !mc.thePlayer.isOnLadder&& + mc.thePlayer.posY == round(mc.thePlayer.posY) + ) mc.thePlayer.jump() } } @@ -140,11 +173,39 @@ class Fly : Module("Fly","Allow you fly", Keyboard.KEY_F,ModuleCategory.MOVEMENT if (mc.thePlayer.onGround) mc.thePlayer.setPosition(mc.thePlayer.posX, mc.thePlayer.posY + 0.2, mc.thePlayer.posZ) ncpTimer.reset() } + "VerusAuto" -> { + y = round(mc.thePlayer.posY).toInt() + if (!(verusBoost equal "None")&&mc.thePlayer.onGround&&!verusVanilla&&mc.theWorld.getCollidingBoundingBoxes(mc.thePlayer,mc.thePlayer.entityBoundingBox.offset(.0, 3.5, .0).expand(.0, .0, .0)).isEmpty()) { + playerY = mc.thePlayer.posY + when(verusBoost.get()){ + "Clip" -> { + mc.thePlayer.setPositionAndUpdate( + mc.thePlayer.posX, + mc.thePlayer.posY + 3.5, + mc.thePlayer.posZ + ) + mc.thePlayer.motionX = .0 + mc.thePlayer.motionZ = .0 + } + "Packet" -> { + mc.netHandler.addToSendQueue(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY + 3.5, mc.thePlayer.posZ, false)) + mc.netHandler.addToSendQueue(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY, mc.thePlayer.posZ, false)) + mc.netHandler.addToSendQueue(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY, mc.thePlayer.posZ, true)) + //mc.thePlayer.setPosition(mc.thePlayer.posX, mc.thePlayer.posY + 0.42, mc.thePlayer.posZ) + } + } + verusState = 1 + mc.thePlayer.speedInAir = 0F + mc.thePlayer.hurtTime = 0 + mc.thePlayer.onGround = false + } + } } } override fun onDisable() { mc.thePlayer.capabilities.isFlying = isFlying&&(mc.playerController.isSpectator||mc.playerController.isInCreativeMode) + verusState = 0 when(mode.get()){ "Creative" -> mc.thePlayer.capabilities.allowFlying = mc.playerController.isInCreativeMode || mc.playerController.isSpectatorMode "Vanilla" -> { @@ -166,6 +227,9 @@ class Fly : Module("Fly","Allow you fly", Keyboard.KEY_F,ModuleCategory.MOVEMENT "Teleport" -> { mc.timer.timerSpeed = 1F } + "VerusAuto" -> { + mc.thePlayer.speedInAir = .02F + } } } @@ -239,12 +303,84 @@ class Fly : Module("Fly","Allow you fly", Keyboard.KEY_F,ModuleCategory.MOVEMENT if (mode equal "AAC5") toggle(false) } + private val verusVanilla: Boolean + get() = (Disabler.modeValue.get().contains("verusmove",true)&&Disabler.getToggle()) || (verusState == 2&&!verusTimer.hasTimePassed(verusBoostTicks.get()+1)) + + @EventTarget fun onBB(event: BlockBBEvent){ + if (mode equal "VerusAuto"&& + !verusVanilla&& + verusState!=1&& + event.block==Blocks.air&& + if (verusMoveJump) (event.y < y&&event.y < mc.thePlayer!!.posY) else event.y < mc.thePlayer!!.posY&& + mc.thePlayer.getDistance(event.x.toDouble(),event.y.toDouble(),event.z.toDouble()) < 1.5) event.boundingBox = + AxisAlignedBB( + event.x.toDouble(), + event.y.toDouble(), + event.z.toDouble(), + event.x + 1.0, + (if (verusMoveJump) (if (y.toDouble() > mc.thePlayer.posY) mc.thePlayer.posY.toInt().toDouble() else y.toDouble()) else mc.thePlayer.posY.toInt().toDouble()) - if (verusDown.get()&&GameSettings.isKeyDown(mc.gameSettings.keyBindSneak)) 1.0 else .0, + event.z + 1.0 + ) + } + + @EventTarget fun onStep(event: StepEvent){ + if (mode equal "VerusAuto"&&!verusVanilla&&verusState!=1) event.stepHeight = 0f + } + + @EventTarget fun onJump(event: JumpEvent) { + if (mode equal "VerusAuto"&&!verusVanilla&&verusState!=1&&!(verusJump.get()&&MovementUtils.isMoving)) event.cancelEvent() + } + @EventTarget fun onUpdate(event: UpdateEvent){ //if (event.eventState == UpdateState.OnUpdate) return when(mode.get()){ + "VerusAuto" -> { + if (verusState == 2) verusTimer.update() + if (verusVanilla){ + if (keepAlive.get()) mc.netHandler.addToSendQueue(C00PacketKeepAlive()) + mc.thePlayer.motionY = 0.0 + mc.thePlayer.motionX = 0.0 + mc.thePlayer.motionZ = 0.0 + mc.thePlayer.capabilities.isFlying = false + if (mc.gameSettings.keyBindJump.isKeyDown) mc.thePlayer.motionY += speed.get() + if (mc.gameSettings.keyBindSneak.isKeyDown) mc.thePlayer.motionY -= speed.get() + MovementUtils.strafe(speed.get()) + y = round(mc.thePlayer.posY).toInt() + } + + if (mc.thePlayer.motionY > 0.43) y = round(mc.thePlayer.posY).toInt() + + if (verusDown.get()&&GameSettings.isKeyDown(mc.gameSettings.keyBindSneak)) + y = round(mc.thePlayer.posY).toInt() + + if (verusJump.get()&&mc.gameSettings.keyBindJump.isKeyDown) + y = round(mc.thePlayer.posY).toInt() + + if (mc.thePlayer.onGround) y = round(mc.thePlayer.posY).toInt() + + if(mc.gameSettings.keyBindSneak.pressed&&verusDown.get()&&verusDownNoSneak.get()&&!verusVanilla) + mc.gameSettings.keyBindSneak.pressed = false + + if (verusState == 1&&mc.thePlayer.posY < playerY) { + KevinClient.hud.addNotification(Notification("Try fake ground damage boost!"),"Fly") + verusState = 3 + mc.thePlayer.speedInAir = .02F + } + if (verusState == 1&&mc.thePlayer.posY > playerY&&mc.thePlayer.onGround) { + KevinClient.hud.addNotification(Notification("Boost failed!"),"Fly") + mc.thePlayer.speedInAir = .02F + verusState = 2 + repeat(20){verusTimer.update()} + } + if (mc.thePlayer.hurtTime > 0&&((verusState == 1||verusState == 3)||(!verusBoostOnlyFirst.get()&&verusState!=0))) { + verusState = 2 + mc.thePlayer.speedInAir = .02F + verusTimer.reset() + } + } "Vanilla" -> { if (keepAlive.get()) mc.netHandler.addToSendQueue(C00PacketKeepAlive()) mc.thePlayer.motionY = 0.0 @@ -332,6 +468,9 @@ class Fly : Module("Fly","Allow you fly", Keyboard.KEY_F,ModuleCategory.MOVEMENT } } } + "VerusAuto" -> { + if (!verusVanilla&&mc.thePlayer.posY == round(mc.thePlayer.posY)) packet.onGround = true + } } } } diff --git a/src/minecraft/kevin/module/modules/world/Scaffold.kt b/src/minecraft/kevin/module/modules/world/Scaffold.kt index c0c232ef..1ece9046 100644 --- a/src/minecraft/kevin/module/modules/world/Scaffold.kt +++ b/src/minecraft/kevin/module/modules/world/Scaffold.kt @@ -714,6 +714,9 @@ class Scaffold : Module("Scaffold", "Automatically places blocks beneath your fe info, scaledResolution.scaledWidth / 2.toFloat(), scaledResolution.scaledHeight / 2 + 7.toFloat(), Color.WHITE.rgb ) + + GlStateManager.enableBlend() + GL11.glPopMatrix() } }