diff --git a/src/main/java/me/mrunny/RenderHiderWindow.kt b/src/main/java/me/mrunny/RenderHiderWindow.kt index db2c9e34ee6..fd6347ad1ff 100644 --- a/src/main/java/me/mrunny/RenderHiderWindow.kt +++ b/src/main/java/me/mrunny/RenderHiderWindow.kt @@ -13,11 +13,16 @@ import javax.vecmath.Vector2f data class Vec2i(val x: Int, val y: Int) class RenderHiderWindow : JFrame("Overlay") { - val mc = Minecraft.getMinecraft() + val mc: Minecraft = Minecraft.getMinecraft() init { setLocationRelativeTo(null) - setLocation(Display.getX(), Display.getY()) + if(Display.isFullscreen()) { + setLocation(0, 0) + } else { + setLocation(Display.getX(), Display.getY() + 20) + } + isAlwaysOnTop = true size = Dimension(100, 100) isUndecorated = true @@ -31,6 +36,11 @@ class RenderHiderWindow : JFrame("Overlay") { fun drawAgain() { isVisible = true size = Dimension(mc.displayWidth, mc.displayHeight - 100) + if(Display.isFullscreen()) { + setLocation(0, 0) + } else { + setLocation(Display.getX(), Display.getY() + 20) + } } fun unDraw() { diff --git a/src/main/java/net/ccbluex/liquidbounce/features/module/ModuleManager.kt b/src/main/java/net/ccbluex/liquidbounce/features/module/ModuleManager.kt index c19af342f25..07a0c2ac862 100644 --- a/src/main/java/net/ccbluex/liquidbounce/features/module/ModuleManager.kt +++ b/src/main/java/net/ccbluex/liquidbounce/features/module/ModuleManager.kt @@ -57,6 +57,7 @@ object ModuleManager : Listenable { AbortBreaking, Aimbot, // AimAssist, + NoHitDelay, AirJump, DangerousModBlocker, AirLadder, diff --git a/src/main/java/net/ccbluex/liquidbounce/features/module/modules/combat/Aimbot.kt b/src/main/java/net/ccbluex/liquidbounce/features/module/modules/combat/Aimbot.kt index e199b930172..b8e2a35c71c 100644 --- a/src/main/java/net/ccbluex/liquidbounce/features/module/modules/combat/Aimbot.kt +++ b/src/main/java/net/ccbluex/liquidbounce/features/module/modules/combat/Aimbot.kt @@ -23,6 +23,7 @@ import net.ccbluex.liquidbounce.utils.timer.MSTimer import net.ccbluex.liquidbounce.value.BoolValue import net.ccbluex.liquidbounce.value.FloatValue import net.ccbluex.liquidbounce.value.IntegerValue +import net.minecraft.init.Blocks import net.minecraft.util.MovingObjectPosition import java.util.* @@ -46,6 +47,11 @@ object Aimbot : Module("Aimbot", ModuleCategory.COMBAT) { return } + val blockPos = mc.objectMouseOver.blockPos + if(blockPos != null) { + if(mc.theWorld.getBlockState(blockPos).block == Blocks.bed) return + } + // Clicking delay if (mc.gameSettings.keyBindAttack.isKeyDown) clickTimer.reset() diff --git a/src/main/java/net/ccbluex/liquidbounce/features/module/modules/combat/NoHitDelay.kt b/src/main/java/net/ccbluex/liquidbounce/features/module/modules/combat/NoHitDelay.kt new file mode 100644 index 00000000000..cd5bfb3a7b6 --- /dev/null +++ b/src/main/java/net/ccbluex/liquidbounce/features/module/modules/combat/NoHitDelay.kt @@ -0,0 +1,6 @@ +package net.ccbluex.liquidbounce.features.module.modules.combat + +import net.ccbluex.liquidbounce.features.module.Module +import net.ccbluex.liquidbounce.features.module.ModuleCategory + +object NoHitDelay : Module("NoHitDelay", ModuleCategory.COMBAT) {} \ No newline at end of file diff --git a/src/main/java/net/ccbluex/liquidbounce/features/module/modules/misc/Spectator.kt b/src/main/java/net/ccbluex/liquidbounce/features/module/modules/misc/Spectator.kt index 8cefb0e352a..b4f0a02b53c 100644 --- a/src/main/java/net/ccbluex/liquidbounce/features/module/modules/misc/Spectator.kt +++ b/src/main/java/net/ccbluex/liquidbounce/features/module/modules/misc/Spectator.kt @@ -1,9 +1,23 @@ package net.ccbluex.liquidbounce.features.module.modules.misc import me.mrunny.SpectatorWindow +import net.ccbluex.liquidbounce.event.EventState +import net.ccbluex.liquidbounce.event.EventTarget +import net.ccbluex.liquidbounce.event.PacketEvent import net.ccbluex.liquidbounce.features.module.Module import net.ccbluex.liquidbounce.features.module.ModuleCategory +import net.ccbluex.liquidbounce.ui.client.hud.HUD +import net.ccbluex.liquidbounce.ui.client.hud.element.elements.Notification +import net.minecraft.entity.player.EntityPlayer +import net.minecraft.init.Blocks +import net.minecraft.item.Item +import net.minecraft.network.play.client.C08PacketPlayerBlockPlacement +import net.minecraft.network.play.server.S0BPacketAnimation +import net.minecraft.network.play.server.S23PacketBlockChange +import net.minecraftforge.client.model.animation.Animation +import java.awt.Color import java.time.Instant +import java.time.LocalDate import java.time.LocalDateTime import java.time.ZonedDateTime import java.util.Date @@ -18,6 +32,7 @@ object Spectator : Module("Spectator", ModuleCategory.MISC) { it.isVisible = true } } + recordedObsidianHolders.clear() } override fun onDisable() { @@ -26,8 +41,23 @@ object Spectator : Module("Spectator", ModuleCategory.MISC) { spectatorWindow = null } } + private val recordedObsidianHolders = mutableSetOf() + @EventTarget + fun onBlockUpdate(event: PacketEvent) { + if(event.eventType != EventState.RECEIVE) return + val packet = event.packet + if(packet !is S0BPacketAnimation) return + if(packet.animationType != 0) return + val entity = mc.theWorld.getEntityByID(packet.entityID) ?: return + if(entity !is EntityPlayer) return + if(entity.itemInUse.item != Item.getItemFromBlock(Blocks.obsidian)) return + if(!recordedObsidianHolders.add(packet.entityID)) return + + val teamName = entity.team?.registeredName ?: "" + HUD.addNotification(Notification("[$teamName] ${entity.name} got obsidian", false, Color.MAGENTA)) + } fun log(message: String) { - println("Spectator logged: [${LocalDateTime.now()}] $message") + spectatorWindow?.log(LocalDateTime.now(), message) } } \ No newline at end of file diff --git a/src/main/java/net/ccbluex/liquidbounce/features/module/modules/render/ClickGUI.kt b/src/main/java/net/ccbluex/liquidbounce/features/module/modules/render/ClickGUI.kt index 5489fe42318..72b437f31ef 100644 --- a/src/main/java/net/ccbluex/liquidbounce/features/module/modules/render/ClickGUI.kt +++ b/src/main/java/net/ccbluex/liquidbounce/features/module/modules/render/ClickGUI.kt @@ -24,7 +24,7 @@ import net.minecraft.network.play.server.S2EPacketCloseWindow import org.lwjgl.input.Keyboard import java.awt.Color -object ClickGUI : Module("ClickGUI", ModuleCategory.RENDER, Keyboard.KEY_RSHIFT, canBeEnabled = false) { +object ClickGUI : Module("ClickGUI", ModuleCategory.RENDER, Keyboard.KEY_RCONTROL, canBeEnabled = false) { private val style by object : ListValue("Style", arrayOf("LiquidBounce", "Null", "Slowly", "Black"), "LiquidBounce") { override fun onChanged(oldValue: String, newValue: String) = updateStyle() diff --git a/src/main/java/net/ccbluex/liquidbounce/features/module/modules/render/ESP.kt b/src/main/java/net/ccbluex/liquidbounce/features/module/modules/render/ESP.kt index 79b4dfb5274..0b8579288d3 100644 --- a/src/main/java/net/ccbluex/liquidbounce/features/module/modules/render/ESP.kt +++ b/src/main/java/net/ccbluex/liquidbounce/features/module/modules/render/ESP.kt @@ -14,6 +14,7 @@ import net.ccbluex.liquidbounce.features.module.Module import net.ccbluex.liquidbounce.features.module.ModuleCategory import net.ccbluex.liquidbounce.features.module.modules.misc.AntiBot.isBot import net.ccbluex.liquidbounce.features.module.modules.misc.RenderHider +import net.ccbluex.liquidbounce.features.module.modules.misc.Teams import net.ccbluex.liquidbounce.ui.client.hud.HUD import net.ccbluex.liquidbounce.ui.font.GameFontRenderer.Companion.getColorIndex import net.ccbluex.liquidbounce.utils.ClientUtils.LOGGER @@ -34,6 +35,8 @@ import net.minecraft.client.renderer.GlStateManager.enableTexture2D import net.minecraft.entity.Entity import net.minecraft.entity.EntityLivingBase import net.minecraft.entity.player.EntityPlayer +import net.minecraft.scoreboard.ScorePlayerTeam +import net.minecraft.util.EnumChatFormatting import org.lwjgl.opengl.GL11.* import org.lwjgl.util.vector.Matrix4f import org.lwjgl.util.vector.Vector2f @@ -73,6 +76,8 @@ object ESP : Module("ESP", ModuleCategory.RENDER) { // val buff = BufferUtils.createByteBuffer(3) var renderNameTags = true + var invisState = false + @EventTarget fun onRender3D(event: Render3DEvent) { val mode = mode @@ -128,7 +133,24 @@ object ESP : Module("ESP", ModuleCategory.RENDER) { if (minX > 0 || minY > 0 || maxX <= mc.displayWidth || maxY <= mc.displayWidth) { RenderHider.window?.let { val graphics = it.graphics ?: return@let - graphics.color = Color.WHITE + + // gets HEX colour of assigned player's team otherwise sets it to white +// val color: Color = Color.WHITE + if(entity is EntityPlayer) { + if(entity.isInvisibleToPlayer(mc.thePlayer)) { + invisState = !invisState + graphics.color = if(invisState) Color.RED else Color.WHITE + graphics.drawLine(minX, minY + 3, maxX, minY + 3) + } +// Color( +// ColorUtils.hexColors[ +// (entity.displayName.chatStyle.color ?: EnumChatFormatting.WHITE) +// .colorIndex +// ] +// ) + } + + graphics.color = color graphics.drawLine(minX, minY, minX, maxY) graphics.drawLine(maxX, maxY, maxX, minY) graphics.drawLine(minX, maxY, maxX, maxY) diff --git a/src/main/java/net/ccbluex/liquidbounce/injection/forge/mixins/client/MixinMinecraft.java b/src/main/java/net/ccbluex/liquidbounce/injection/forge/mixins/client/MixinMinecraft.java index e701b2991f9..b27738dabc9 100644 --- a/src/main/java/net/ccbluex/liquidbounce/injection/forge/mixins/client/MixinMinecraft.java +++ b/src/main/java/net/ccbluex/liquidbounce/injection/forge/mixins/client/MixinMinecraft.java @@ -10,6 +10,7 @@ import net.ccbluex.liquidbounce.api.ClientUpdate; import net.ccbluex.liquidbounce.event.*; import net.ccbluex.liquidbounce.features.module.modules.combat.AutoClicker; +import net.ccbluex.liquidbounce.features.module.modules.combat.NoHitDelay; import net.ccbluex.liquidbounce.features.module.modules.exploit.AbortBreaking; import net.ccbluex.liquidbounce.features.module.modules.exploit.MultiActions; import net.ccbluex.liquidbounce.features.module.modules.misc.RenderHider; @@ -225,7 +226,7 @@ private void shutdown(CallbackInfo callbackInfo) { private void clickMouse(CallbackInfo callbackInfo) { CPSCounter.INSTANCE.registerClick(CPSCounter.MouseButton.LEFT); - if (AutoClicker.INSTANCE.getState()) { + if (AutoClicker.INSTANCE.getState() || NoHitDelay.INSTANCE.getState()) { leftClickCounter = 0; } } diff --git a/src/main/java/net/ccbluex/liquidbounce/injection/forge/mixins/entity/MixinEntity.java b/src/main/java/net/ccbluex/liquidbounce/injection/forge/mixins/entity/MixinEntity.java index 4a20aea1ba8..12ccffaff16 100644 --- a/src/main/java/net/ccbluex/liquidbounce/injection/forge/mixins/entity/MixinEntity.java +++ b/src/main/java/net/ccbluex/liquidbounce/injection/forge/mixins/entity/MixinEntity.java @@ -5,15 +5,22 @@ */ package net.ccbluex.liquidbounce.injection.forge.mixins.entity; +import net.ccbluex.liquidbounce.LiquidBounce; import net.ccbluex.liquidbounce.event.EventManager; import net.ccbluex.liquidbounce.event.StrafeEvent; import net.ccbluex.liquidbounce.features.module.modules.combat.HitBox; import net.ccbluex.liquidbounce.features.module.modules.exploit.NoPitchLimit; +import net.ccbluex.liquidbounce.features.module.modules.misc.AntiBot; +import net.ccbluex.liquidbounce.features.module.modules.misc.Spectator; import net.ccbluex.liquidbounce.features.module.modules.movement.NoFluid; +import net.ccbluex.liquidbounce.ui.client.hud.HUD; +import net.ccbluex.liquidbounce.ui.client.hud.element.elements.Notification; +import net.ccbluex.liquidbounce.utils.EntityUtils; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.crash.CrashReportCategory; import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.BlockPos; import net.minecraft.util.Vec3; @@ -27,6 +34,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import java.awt.*; import java.util.Random; import java.util.UUID; @@ -229,4 +237,14 @@ private void isInLava(final CallbackInfoReturnable cir) { cir.setReturnValue(false); } } + + @Inject(method = "setInvisible", at = @At("RETURN")) + public void injectInvisCheck(boolean p_setInvisible_1_, CallbackInfo ci) { + if(!Spectator.INSTANCE.getState()) return; + if(!((Object) this instanceof EntityPlayer)) return; + EntityPlayer invised = (EntityPlayer) (Object) this; + if(invised == mc.thePlayer) return; + if(AntiBot.INSTANCE.isBot(invised) || !EntityUtils.INSTANCE.isSelected(invised, true)) return; + HUD.INSTANCE.addNotification(new Notification(invised.getName() + " invised: " + Math.round(invised.getDistanceToEntity(mc.thePlayer)) + "blocks from you", false, Color.CYAN)); + } } \ No newline at end of file diff --git a/src/main/java/net/ccbluex/liquidbounce/injection/forge/mixins/render/MixinRenderEntityItem.java b/src/main/java/net/ccbluex/liquidbounce/injection/forge/mixins/render/MixinRenderEntityItem.java index a62e12ba3ca..6c97050fd98 100644 --- a/src/main/java/net/ccbluex/liquidbounce/injection/forge/mixins/render/MixinRenderEntityItem.java +++ b/src/main/java/net/ccbluex/liquidbounce/injection/forge/mixins/render/MixinRenderEntityItem.java @@ -25,6 +25,7 @@ private void injectChamsPre(CallbackInfo callbackInfo) { glEnable(GL_POLYGON_OFFSET_FILL); glPolygonOffset(1f, -1000000F); } + } @Inject(method = "doRender", at = @At("RETURN")) diff --git a/src/main/java/net/ccbluex/liquidbounce/ui/client/hud/element/elements/Notifications.kt b/src/main/java/net/ccbluex/liquidbounce/ui/client/hud/element/elements/Notifications.kt index 6507d607a0c..0dfa5802bbf 100644 --- a/src/main/java/net/ccbluex/liquidbounce/ui/client/hud/element/elements/Notifications.kt +++ b/src/main/java/net/ccbluex/liquidbounce/ui/client/hud/element/elements/Notifications.kt @@ -113,7 +113,7 @@ class Notification(val message: String, private val okToShowWhenLocked: Boolean= fadeStep = width } - stay = 60F + stay = 120F } FadeState.STAY -> if (stay > 0)