From 6f2e790bfab61a0c6e93d2fc5e030e86b6d159f9 Mon Sep 17 00:00:00 2001 From: kopamed Date: Tue, 7 Jun 2022 19:22:25 +0200 Subject: [PATCH] Split up right and left clicker --- build/libs/[1.8.9] BetterKeystrokes V-1.2.jar | Bin 2899109 -> 2904195 bytes .../client/config/ConfigManager.java | 2 + .../client/module/ModuleManager.java | 3 +- .../module/modules/combat/AimAssist.java | 3 +- .../module/modules/combat/AutoClicker.java | 615 ------------------ .../client/module/modules/combat/HitBox.java | 7 +- .../module/modules/combat/LeftClicker.java | 364 +++++++++++ .../client/module/modules/combat/Reach.java | 11 +- .../module/modules/combat/RightClicker.java | 383 +++++++++++ .../module/modules/player/AutoTool.java | 9 +- .../client/tweaker/ASMEventHandler.java | 8 +- .../keystrokesmod/client/utils/Utils.java | 8 +- src/main/resources/assets/keystrokes/version | 2 +- 13 files changed, 775 insertions(+), 640 deletions(-) delete mode 100644 src/main/java/keystrokesmod/client/module/modules/combat/AutoClicker.java create mode 100644 src/main/java/keystrokesmod/client/module/modules/combat/LeftClicker.java create mode 100644 src/main/java/keystrokesmod/client/module/modules/combat/RightClicker.java diff --git a/build/libs/[1.8.9] BetterKeystrokes V-1.2.jar b/build/libs/[1.8.9] BetterKeystrokes V-1.2.jar index f01fbc0de3bc5b4e42b7d5a0d314e6678e0160b1..d0e81406daecfb118baea53976f51044f433f2e5 100644 GIT binary patch delta 54364 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 delta 49526 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 z z$sxWhI8%6Egh9IjMo38Ca_S#hhLz8nRtupu zi@9N^NgOFXDj=~3#?v}Jw8NHLjnp+0y7wkCbSZY+tj?xa3A!J%Nu6&cY-xl|XBfV$ zBz72PBw-d}eid|@U2|uU+$!7xGqasRz=jh|RzY(cIZR_Y(wV*0kfFIFI#rFYz?L{q ztC`iKMjkWlFT*rkwQPnCYDN&HT!wXXz#Toh3~MdT1Buk&j+kaQ@~**cC?VavXu&m@ zG8${3OEi&^G79<1D}@YdaT{r3R#B}6x6}oJ5x-fDn5Y{035p&OcH6P8thSSlOY7t)asSkWnzXmZC&k%S6)^v`z z8lc!KA}mLU-p8F+D8lByC78^LI94$I+nt3D%gD0L4Ul{4OQ7jXc8}wME#}+>kMmn1Mp}Wi8nQiu;$Nw z1g4jh`0!2Wy-#k5u)5h7LRVffLxFwKcuy)k>tRIje;|dT z-y*Ed%7=Prv#~)D6#rLb7P*(TZ@^_KFF!GnB8s0BVU4oW4Pd%;R0Q2Aaw+>q)(slSK+7JmQV@9nNA8>VadUX1 z+COAXIrQY8#ElI4MOj@VK9>AK1!JQ6f-JFyVW9=4ZKLjfcI5JIfF0}a} zbkR;;bnzkXi=E^ru5xI;q8KaPC2bI6o0u5-t1hNa7Bw3XHcJ)xJ%V1c1PaEsi4?vNn(qOG zuo8P0L7MMP5@X$uX?+Tr-il`8%x92de%#dGT*y8Rs*iaiCg~Z>NtZ0G-3zE*(}!ZHzE@0# zL?;O(-X?~!--xm91dIT}W<5fJFJTh)=|I#D7&?(Jp>9^aB87?1VoGTEC2ZfUI|;H0 zJKRlNsYqyOswwL`AmPY2Vu<~_7;7~ZeFX_ezeT#QpqZN9qu5ulXm$>uXRp9-%|S6# zHZI26udjLyu}eRSp*a&`tdUtopv#}dGUkgLlD>;~0;&HZh73AkaNZmdLx(!?m6Y01 zG4!DmUqz|?E{1Hna32cgrx-fOCvHSW`_Ki^Bz}vb9073y@UUD&YnF``uC|Y(Z$%lk$9p99SwP(?N1GGe7iVC5i zH@G?bF!JrjB_RPpl%*oh8dCj)=}OTlQ!do~7S*oA2P@akv#JyoY_#>sGY!J-&t#_e2&M9FUVjo$qmD%Ka&6bHA)S${T_H zc5Vj>>xbU+YX_?D$9*s^J+$Qm_-6hAQeD9mR#V>h$)lTN^0KHOC}qw&rZfw=4nT`$ zWm5^A1e#q&6+xCG;BEN;c>8IJA1I@$5T;b5Gzi;KPfMgf2uoQJ^D2YvT@~b*DPggn z35|5d7DZ0GnBMhMPAHl>ZhYM z8yfipW$R@_3qC{Hs_vqZ&tP=zGZ=B*BLr_uVh?f~!dDYv09Ca+6a9+QV%cL|j{tXLt z!axQYjNo%9;+8DQ*F~KpBT`L{**26DL+a@M2<}Ar41Xwmg(ccP9z}nJmHbdVy7m>f zrz|?Gi5{HRR6wu3LcKG0V9a9ye;RTdg&}2^rimWqYf6&6jH$01g+@4-hSGk)^#67g zYT^Y`09U?&pml`M$e`G7FiRiEB8ARx(50NSNx|wnY<*wkk;3usFiR_*BZazJO})%t zu*#bJfQhyNc6dZeK!s7n514IbFOlT#5167CUL^!7qL0DUzO0TE?my8KLC43SggOn= zgf-rEf5I5?YnsNwh-)hcYfPpSx?T53-MydC)(Q8g1tGMg3tV8X^V@%cq5mU7w+<_7 zCv8H1!!b|xH+b0HGfix;+22W_gIkNWt^DyDVn3RXMkb+Lv_DWoig11?GsW+>DOX4 zjyy(}!zdjjF8!p%S`5<(T+m74#~6JH7XF456uwUtc`Jo3$373$v(welz%M8g+=CNE z{S>+^c6*RC*5H7c{a*+{2F2@&Gm$CvYI9Ax&IqsD+2V2!Okc}H{THr)~ zET#;f5r#|Q08bbS3qT9!!O5EtVg%@Rn35^-6M_%%-FDDs?L7qqA%d3~iR}f!U4QtA zAz@P@NMDM5vm%9@rP{2)vPcLbM6V^VAGX_{Ok8V+wlcXH6BC98{=1IE4#IRN%mX%i zgahL{wFSuut6dn9C}Uv(5$Jh=!6;3Xu7=)(!R@)@BA{+$5_J?B4=FRpIG-rsec^?I=A3Foz0TMZvcP{*Ahv4|8jzHX^D>pb>| z&>5Ya*4bk2r=|sN#8auwI+vW60>jLUq;5cpZjX&rkV1CzRDanm4K}=&NnCkHo3;P{ zPT<=&k*Eyx$OX5Ft2+AJF%_#-2Gl{VWGsGJsJ*98NFly|YCIImf{pX@Y0QEC4op>| zyd3B@z9w~^a^Tt6TT-|!2OaD6ASvwoJJl1{%0mR`#bd-qu-!#l=j3mNTx(mkl zn-r=9bl^58l}=+XL!$EF_ZKQO(>D&}rc0N}l%?|{9|gKC=E=_l=%xbQ0=x82;6+M` z^o3Y~@U)s2xv1)}P7$Sw;7FF#4BbbKp_Bc%O9}e1q5_Gf zm7!x*DUpJg5je~2k>$#eavV89J zu$=+Zgf%=ZG{Nvx5Q%#={O3_h6t_O8k_nLfkARW7yX&vh@^9nHgB2=$Q zS3)1trfOgz4UFRwN#j@=bPKCPq|ig7dtkY#(}EVzm2QQgD;TwUK zPm)-V4i%J^PYQFYr)=u!U~{s7z)EPGPG5$V6%#@bCUcXxs-hlU`eNej3W72ke61se zy!Bw=vc5}_D|+A(-;-&zB(l?o)#61DK@?Hk=v2Rapbt5jy(e+^PaW0*YH0v?-A5+Q zxJlzeA`?>$bdFHT4Na+79Z|p#=$&CQoh=mF)Z;w@4@{CcRgA_O4UY+|#g5Wufir-G z&?|8o+!-~3R-8j2ai`>z^*JN3e#J%NUL(3SR>)5Z&Wbcvm)JfFY`TRA9E!p56|Tw% zY0y|*)7u!-%Oy!Xu0_*lZc;mpVc_P-lWB>Y&{trOl}KUOgf5Jb2~^pNIn%@qTW(GY zza44J-|vW^U9%zKi!6L~HhmSQxPY_)K?K>%0dG&+k;Kl6rZeO5;xGQtT24#e!>iKYc?Pre_U>I54tL49ODft8W@2^wol^^Cwdsbpet z^XS}Y$!Qv^J1v|Cx=%-@b&J_`&_yD8TOn;~zi9;~{>MlY!2C$Ecq+$4LU-u+w2l** zU7)dM*{_67F=vMEZrM~-uAC3LAGxG1=hBp?%>-VSPvYNIG}iqu(*=Mp!J|~7QdiZ{ zShHI`f$x`+xN8BdT}R;oDq-Vn4MOluQmC_rML--LjS`yqy)+J_w-6>3r`8$dXV+AP z)GvfYvmQ+ASkp4i2JosjCeD0IV=ZGT1U(GTSeZ$W&^XZp8(4*}z{AvOVz~&KGOKHv zu-2LTiy*4gI}-COhJCK`04cQmnHp@{!@#ZAfcY<4y@MMRE$;?G=E_7+slMBCn33Y~zOB|EPqdU%!UK>+T vL{t|LG%N_)wOBIqs*lQC;IZFFLi3YFTwLjzLVK~j7 0.0D) { - double a = jitterLeft.getInput() * 0.45D; - EntityPlayerSP entityPlayer; - if (this.rand.nextBoolean()) { - entityPlayer = mc.thePlayer; - entityPlayer.rotationYaw = (float)((double)entityPlayer.rotationYaw + (double)this.rand.nextFloat() * a); - } else { - entityPlayer = mc.thePlayer; - entityPlayer.rotationYaw = (float)((double)entityPlayer.rotationYaw - (double)this.rand.nextFloat() * a); - } - - if (this.rand.nextBoolean()) { - entityPlayer = mc.thePlayer; - entityPlayer.rotationPitch = (float)((double)entityPlayer.rotationPitch + (double)this.rand.nextFloat() * a * 0.45D); - } else { - entityPlayer = mc.thePlayer; - entityPlayer.rotationPitch = (float)((double)entityPlayer.rotationPitch - (double)this.rand.nextFloat() * a * 0.45D); - } - } - - double speedLeft = 1.0 / ThreadLocalRandom.current().nextDouble(leftCPS.getInputMin() - 0.2, leftCPS.getInputMax()); - if (System.currentTimeMillis() - lastClick > speedLeft * 1000) { - lastClick = System.currentTimeMillis(); - if (leftHold < lastClick){ - leftHold = lastClick; - } - int key = mc.gameSettings.keyBindAttack.getKeyCode(); - KeyBinding.setKeyBindState(key, true); - KeyBinding.onTick(key); - Utils.Client.setMouseButtonState(0, true); - } else if (System.currentTimeMillis() - leftHold > leftHoldLength * 1000) { - KeyBinding.setKeyBindState(mc.gameSettings.keyBindAttack.getKeyCode(), false); - Utils.Client.setMouseButtonState(0, false); - } - } - //we cheat in a block game ft. right click - if(!Mouse.isButtonDown(1) && !rightDown){ - KeyBinding.setKeyBindState(mc.gameSettings.keyBindUseItem.getKeyCode(), false); - Utils.Client.setMouseButtonState(1, false); - } - - if (Mouse.isButtonDown(1) && rightClick.isToggled() || rightDown) { - if (!this.rightClickAllowed()) - return; - - - if (jitterRight.getInput() > 0.0D) { - double jitterMultiplier = jitterRight.getInput() * 0.45D; - EntityPlayerSP entityPlayer; - if (this.rand.nextBoolean()) { - entityPlayer = mc.thePlayer; - entityPlayer.rotationYaw = (float)((double)entityPlayer.rotationYaw + (double)this.rand.nextFloat() * jitterMultiplier); - } else { - entityPlayer = mc.thePlayer; - entityPlayer.rotationYaw = (float)((double)entityPlayer.rotationYaw - (double)this.rand.nextFloat() * jitterMultiplier); - } - - if (this.rand.nextBoolean()) { - entityPlayer = mc.thePlayer; - entityPlayer.rotationPitch = (float)((double)entityPlayer.rotationPitch + (double)this.rand.nextFloat() * jitterMultiplier * 0.45D); - } else { - entityPlayer = mc.thePlayer; - entityPlayer.rotationPitch = (float)((double)entityPlayer.rotationPitch - (double)this.rand.nextFloat() * jitterMultiplier * 0.45D); - } - } - - if (System.currentTimeMillis() - lastClick > speedRight * 1000) { - lastClick = System.currentTimeMillis(); - if (rightHold < lastClick){ - rightHold = lastClick; - } - int key = mc.gameSettings.keyBindUseItem.getKeyCode(); - KeyBinding.setKeyBindState(key, true); - Utils.Client.setMouseButtonState(1, true); - KeyBinding.onTick(key); - rightDown = false; - } else if (System.currentTimeMillis() - rightHold > rightHoldLength * 1000) { - rightDown = true; - KeyBinding.setKeyBindState(mc.gameSettings.keyBindUseItem.getKeyCode(), false); - Utils.Client.setMouseButtonState(1, false); - - } - } else if (!Mouse.isButtonDown(1)){ - this.rightClickWaiting = false; - this.allowedClick = false; - } - }else if (inventoryFill.isToggled() && (mc.currentScreen instanceof GuiInventory || mc.currentScreen instanceof GuiChest)) { - if (!Mouse.isButtonDown(0) || !Keyboard.isKeyDown(54) && !Keyboard.isKeyDown(42)) { - this.leftDownTime = 0L; - this.leftUpTime = 0L; - } else if (this.leftDownTime != 0L && this.leftUpTime != 0L) { - if (System.currentTimeMillis() > this.leftUpTime) { - this.genLeftTimings(); - this.inInvClick(mc.currentScreen); - } - } else { - this.genLeftTimings(); - } - } else{ - if(!Mouse.isButtonDown(0)) { - - } - } - - } - - private void ravenClick() { - if (mc.currentScreen == null && mc.inGameHasFocus) { - - //Mouse.poll(); - if(!Mouse.isButtonDown(0) && !leftDown) { - KeyBinding.setKeyBindState(mc.gameSettings.keyBindAttack.getKeyCode(), false); - Utils.Client.setMouseButtonState(0, false); - } - if (leftClick.isToggled() && Mouse.isButtonDown(0) || leftDown) { - if (weaponOnly.isToggled() && !Utils.Player.isPlayerHoldingWeapon()) { - return; - } - this.leftClickExecute(mc.gameSettings.keyBindAttack.getKeyCode()); - } - else if (rightClick.isToggled() && Mouse.isButtonDown(1)) { - this.rightClickExecute(mc.gameSettings.keyBindUseItem.getKeyCode()); - } else if (!Mouse.isButtonDown(1)){ - this.rightClickWaiting = false; - this.allowedClick = false; - this.righti = 0L; - this.rightj = 0L; - this.leftDownTime = 0L; - this.leftUpTime = 0L; - } - } else if (inventoryFill.isToggled() && (mc.currentScreen instanceof GuiInventory || mc.currentScreen instanceof GuiChest)) { - if (!Mouse.isButtonDown(0) || !Keyboard.isKeyDown(54) && !Keyboard.isKeyDown(42)) { - this.leftDownTime = 0L; - this.leftUpTime = 0L; - } else if (this.leftDownTime != 0L && this.leftUpTime != 0L) { - if (System.currentTimeMillis() > this.leftUpTime) { - this.genLeftTimings(); - this.inInvClick(mc.currentScreen); - } - } else { - this.genLeftTimings(); - } - } - } - - - public boolean rightClickAllowed() { - ItemStack item = mc.thePlayer.getHeldItem(); - if (item != null) { - if (allowEat.isToggled()) { - if ((item.getItem() instanceof ItemFood)) { - return false; - } - } - - if (allowBow.isToggled()) { - if (item.getItem() instanceof ItemBow) { - return false; - } - } - - if (onlyBlocks.isToggled()) { - if (!(item.getItem() instanceof ItemBlock)) { - if (item.getItem() instanceof IThrowableItem) { - if (!((IThrowableItem)item.getItem()).isThrowable(item)) return false; - } else { - return false; - } - } - } - - if (noBlockSword.isToggled()) { - if (item.getItem() instanceof ItemSword) - return false; - } - } - - if(preferFastPlace.isToggled()) { - Module fastplace = Raven.moduleManager.getModuleByClazz(FastPlace.class); - if (fastplace != null && fastplace.isEnabled()) - return false; - } - - if(rightClickDelay.getInput() != 0){ - if(!rightClickWaiting && !allowedClick) { - this.rightClickWaitStartTime = System.currentTimeMillis(); - this.rightClickWaiting = true; - return false; - } else if(this.rightClickWaiting && !allowedClick) { - double passedTime = System.currentTimeMillis() - this.rightClickWaitStartTime; - if (passedTime >= rightClickDelay.getInput()) { - this.allowedClick = true; - this.rightClickWaiting = false; - return true; - } else { - return false; - } - } - } - - - return true; - } - - public void leftClickExecute(int key) { - - if(breakBlock()) return; - - if (jitterLeft.getInput() > 0.0D) { - double a = jitterLeft.getInput() * 0.45D; - EntityPlayerSP entityPlayer; - if (this.rand.nextBoolean()) { - entityPlayer = mc.thePlayer; - entityPlayer.rotationYaw = (float)((double)entityPlayer.rotationYaw + (double)this.rand.nextFloat() * a); - } else { - entityPlayer = mc.thePlayer; - entityPlayer.rotationYaw = (float)((double)entityPlayer.rotationYaw - (double)this.rand.nextFloat() * a); - } - - if (this.rand.nextBoolean()) { - entityPlayer = mc.thePlayer; - entityPlayer.rotationPitch = (float)((double)entityPlayer.rotationPitch + (double)this.rand.nextFloat() * a * 0.45D); - } else { - entityPlayer = mc.thePlayer; - entityPlayer.rotationPitch = (float)((double)entityPlayer.rotationPitch - (double)this.rand.nextFloat() * a * 0.45D); - } - } - - if (this.leftUpTime > 0L && this.leftDownTime > 0L) { - if (System.currentTimeMillis() > this.leftUpTime && leftDown) { - KeyBinding.setKeyBindState(key, true); - KeyBinding.onTick(key); - this.genLeftTimings(); - Utils.Client.setMouseButtonState(0, true); - leftDown = false; - } else if (System.currentTimeMillis() > this.leftDownTime) { - KeyBinding.setKeyBindState(key, false); - leftDown = true; - Utils.Client.setMouseButtonState(0, false); - } - } else { - this.genLeftTimings(); - } - - } - - public void rightClickExecute(int key) { - if (!this.rightClickAllowed()) - return; - - if (jitterRight.getInput() > 0.0D) { - double jitterMultiplier = jitterRight.getInput() * 0.45D; - EntityPlayerSP entityPlayer; - if (this.rand.nextBoolean()) { - entityPlayer = mc.thePlayer; - entityPlayer.rotationYaw = (float)((double)entityPlayer.rotationYaw + (double)this.rand.nextFloat() * jitterMultiplier); - } else { - entityPlayer = mc.thePlayer; - entityPlayer.rotationYaw = (float)((double)entityPlayer.rotationYaw - (double)this.rand.nextFloat() * jitterMultiplier); - } - - if (this.rand.nextBoolean()) { - entityPlayer = mc.thePlayer; - entityPlayer.rotationPitch = (float)((double)entityPlayer.rotationPitch + (double)this.rand.nextFloat() * jitterMultiplier * 0.45D); - } else { - entityPlayer = mc.thePlayer; - entityPlayer.rotationPitch = (float)((double)entityPlayer.rotationPitch - (double)this.rand.nextFloat() * jitterMultiplier * 0.45D); - } - } - - if (this.rightj > 0L && this.righti > 0L) { - if (System.currentTimeMillis() > this.rightj) { - KeyBinding.setKeyBindState(key, true); - KeyBinding.onTick(key); - Utils.Client.setMouseButtonState(1, false); - Utils.Client.setMouseButtonState(1, true); - this.genRightTimings(); - } else if (System.currentTimeMillis() > this.righti) { - KeyBinding.setKeyBindState(key, false); - //Utils.Client.setMouseButtonState(1, false); - } - } else { - this.genRightTimings(); - } - - } - - public void genLeftTimings() { - double clickSpeed = Utils.Client.ranModuleVal(leftCPS, this.rand) + 0.4D * this.rand.nextDouble(); - long delay = (int)Math.round(1000.0D / clickSpeed); - if (System.currentTimeMillis() > this.leftk) { - if (!this.leftn && this.rand.nextInt(100) >= 85) { - this.leftn = true; - this.leftm = 1.1D + this.rand.nextDouble() * 0.15D; - } else { - this.leftn = false; - } - - this.leftk = System.currentTimeMillis() + 500L + (long)this.rand.nextInt(1500); - } - - if (this.leftn) { - delay = (long)((double)delay * this.leftm); - } - - if (System.currentTimeMillis() > this.leftl) { - if (this.rand.nextInt(100) >= 80) { - delay += 50L + (long)this.rand.nextInt(100); - } - - this.leftl = System.currentTimeMillis() + 500L + (long)this.rand.nextInt(1500); - } - - this.leftUpTime = System.currentTimeMillis() + delay; - this.leftDownTime = System.currentTimeMillis() + delay / 2L - (long)this.rand.nextInt(10); - } - - public void genRightTimings() { - double clickSpeed = Utils.Client.ranModuleVal(rightCPS, this.rand) + 0.4D * this.rand.nextDouble(); - long delay = (int)Math.round(1000.0D / clickSpeed); - if (System.currentTimeMillis() > this.rightk) { - if (!this.rightn && this.rand.nextInt(100) >= 85) { - this.rightn = true; - this.rightm = 1.1D + this.rand.nextDouble() * 0.15D; - } else { - this.rightn = false; - } - - this.rightk = System.currentTimeMillis() + 500L + (long)this.rand.nextInt(1500); - } - - if (this.rightn) { - delay = (long)((double)delay * this.rightm); - } - - if (System.currentTimeMillis() > this.rightl) { - if (this.rand.nextInt(100) >= 80) { - delay += 50L + (long)this.rand.nextInt(100); - } - - this.rightl = System.currentTimeMillis() + 500L + (long)this.rand.nextInt(1500); - } - - this.rightj = System.currentTimeMillis() + delay; - this.righti = System.currentTimeMillis() + delay / 2L - (long)this.rand.nextInt(10); - } - - private void inInvClick(GuiScreen guiScreen) { - int mouseInGUIPosX = Mouse.getX() * guiScreen.width / mc.displayWidth; - int mouseInGUIPosY = guiScreen.height - Mouse.getY() * guiScreen.height / mc.displayHeight - 1; - - try { - this.playerMouseInput.invoke(guiScreen, mouseInGUIPosX, mouseInGUIPosY, 0); - } catch (IllegalAccessException | InvocationTargetException var5) { - } - - } - - public boolean breakBlock() { - if (breakBlocks.isToggled() && mc.objectMouseOver != null) { - BlockPos p = mc.objectMouseOver.getBlockPos(); - if (p != null) { - Block bl = mc.theWorld.getBlockState(p).getBlock(); - if (bl != Blocks.air && !(bl instanceof BlockLiquid)) { - if(breakBlocksDelay.getInputMax() == 0){ - if(!breakHeld) { - int e = mc.gameSettings.keyBindAttack.getKeyCode(); - KeyBinding.setKeyBindState(e, true); - KeyBinding.onTick(e); - breakHeld = true; - } - return true; - } - if(!breakTimeDone && !watingForBreakTimeout) { - watingForBreakTimeout = true; - guiUpdate(); - breakBlockFinishWaitTime = ThreadLocalRandom.current().nextDouble(breakBlocksDelay.getInputMin(), breakBlocksDelay.getInputMax()+1) + System.currentTimeMillis(); - return false; - } else if(!breakTimeDone && watingForBreakTimeout) { - if (System.currentTimeMillis() > breakBlockFinishWaitTime) { - breakTimeDone = true; - watingForBreakTimeout = false; - } - } - - if(breakTimeDone && !watingForBreakTimeout) { - if(!breakHeld) { - int e = mc.gameSettings.keyBindAttack.getKeyCode(); - KeyBinding.setKeyBindState(e, true); - KeyBinding.onTick(e); - breakHeld = true; - } - return true; - } - } - if(breakHeld) { - breakHeld = false; - breakTimeDone = false; - watingForBreakTimeout = false; - } - } - } - return false; - } - - public enum ClickStyle { - Raven, - SKid - } - - public enum ClickEvent { - Tick, - Render - } -} \ No newline at end of file diff --git a/src/main/java/keystrokesmod/client/module/modules/combat/HitBox.java b/src/main/java/keystrokesmod/client/module/modules/combat/HitBox.java index 46dd67cf..f525288a 100644 --- a/src/main/java/keystrokesmod/client/module/modules/combat/HitBox.java +++ b/src/main/java/keystrokesmod/client/module/modules/combat/HitBox.java @@ -2,7 +2,6 @@ import keystrokesmod.client.main.Raven; import keystrokesmod.client.module.Module; -import keystrokesmod.client.module.ModuleManager; import keystrokesmod.client.module.setting.impl.SliderSetting; import keystrokesmod.client.module.setting.impl.TickSetting; import keystrokesmod.client.module.modules.world.AntiBot; @@ -53,10 +52,10 @@ public void ef(TickEvent.RenderTickEvent ev) { // autoclick event if(!Utils.Player.isPlayerInGame()) return; - Module autoClicker = Raven.moduleManager.getModuleByClazz(AutoClicker.class); - if(autoClicker != null && !autoClicker.isEnabled() || !AutoClicker.leftClick.isToggled()) return; + Module autoClicker = Raven.moduleManager.getModuleByClazz(LeftClicker.class); + if(autoClicker != null && !autoClicker.isEnabled()) return; - if (autoClicker != null && autoClicker.isEnabled() && AutoClicker.leftClick.isToggled() && Mouse.isButtonDown(0)){ + if (autoClicker != null && autoClicker.isEnabled() && Mouse.isButtonDown(0)){ if (mv != null) { mc.objectMouseOver = mv; } diff --git a/src/main/java/keystrokesmod/client/module/modules/combat/LeftClicker.java b/src/main/java/keystrokesmod/client/module/modules/combat/LeftClicker.java new file mode 100644 index 00000000..642daee1 --- /dev/null +++ b/src/main/java/keystrokesmod/client/module/modules/combat/LeftClicker.java @@ -0,0 +1,364 @@ +package keystrokesmod.client.module.modules.combat; + +import keystrokesmod.client.module.Module; +import keystrokesmod.client.module.setting.impl.*; +import keystrokesmod.client.utils.Utils; +import net.minecraft.block.Block; +import net.minecraft.block.BlockLiquid; +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.EntityPlayerSP; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.gui.inventory.GuiChest; +import net.minecraft.client.gui.inventory.GuiInventory; +import net.minecraft.client.settings.KeyBinding; +import net.minecraft.init.Blocks; +import net.minecraft.util.BlockPos; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.common.gameevent.TickEvent; +import net.minecraftforge.fml.relauncher.ReflectionHelper; +import org.lwjgl.input.Keyboard; +import org.lwjgl.input.Mouse; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.Random; +import java.util.concurrent.ThreadLocalRandom; + +public class LeftClicker extends Module { + public static DescriptionSetting bestWithDelayRemover; + public static SliderSetting jitterLeft; + public static TickSetting weaponOnly; + public static TickSetting breakBlocks; + public static DoubleSliderSetting leftCPS; + public static TickSetting inventoryFill; + + public static ComboSetting clickStyle, clickTimings; + + + private long lastClick; + private long leftHold; + private boolean allowedClick; + public static boolean autoClickerEnabled; + private boolean leftDown; + private long leftDownTime; + private long leftUpTime; + private long leftk; + private long leftl; + private double leftm; + private boolean leftn; + private boolean breakHeld; + + private Random rand = null; + private Method playerMouseInput; + + public LeftClicker(){ + super("Left Clicker", ModuleCategory.combat); + + this.registerSetting(bestWithDelayRemover = new DescriptionSetting("Best with delay remover.")); + this.registerSetting(leftCPS = new DoubleSliderSetting("Left CPS", 9, 13, 1, 60, 0.5)); + this.registerSetting(jitterLeft = new SliderSetting("Jitter left", 0.0D, 0.0D, 3.0D, 0.1D)); + this.registerSetting(inventoryFill = new TickSetting("Inventory fill", false)); + this.registerSetting(weaponOnly = new TickSetting("Weapon only", false)); + this.registerSetting(breakBlocks = new TickSetting("Break blocks", false)); + + this.registerSetting(clickTimings = new ComboSetting("Click event", RightClicker.ClickEvent.Render)); + this.registerSetting(clickStyle = new ComboSetting("Click Style", RightClicker.ClickStyle.Raven)); + + try { + this.playerMouseInput = ReflectionHelper.findMethod( + GuiScreen.class, + null, + new String[]{ + "func_73864_a", + "mouseClicked" + }, + Integer.TYPE, + Integer.TYPE, + Integer.TYPE + ); + } catch (Exception ex) { + ex.printStackTrace(); + } + + if (this.playerMouseInput != null) { + this.playerMouseInput.setAccessible(true); + } + + autoClickerEnabled = false; + } + + @Override + public void onEnable() { + if (this.playerMouseInput == null) { + this.disable(); + } + + + this.allowedClick = false; + this.rand = new Random(); + autoClickerEnabled = true; + } + + @Override + public void onDisable() { + this.leftDownTime = 0L; + this.leftUpTime = 0L; + autoClickerEnabled = false; + } + + @SubscribeEvent + public void onRenderTick(TickEvent.RenderTickEvent ev) { + if(!Utils.Client.currentScreenMinecraft() && + !(Minecraft.getMinecraft().currentScreen instanceof GuiInventory) // to make it work in survival inventory + && !(Minecraft.getMinecraft().currentScreen instanceof GuiChest) // to make it work in chests + ) + return; + + if(clickTimings.getMode() != RightClicker.ClickEvent.Render) + return; + + if(clickStyle.getMode() == RightClicker.ClickStyle.Raven){ + ravenClick(); + } + else if (clickStyle.getMode() == RightClicker.ClickStyle.SKid){ + skidClick(ev, null); + } + } + + @SubscribeEvent + public void onTick(TickEvent.PlayerTickEvent ev) { + if(!Utils.Client.currentScreenMinecraft() && !(Minecraft.getMinecraft().currentScreen instanceof GuiInventory) + && !(Minecraft.getMinecraft().currentScreen instanceof GuiChest) // to make it work in chests + ) + return; + + if(clickTimings.getMode() != RightClicker.ClickEvent.Tick) + return; + + if(clickStyle.getMode() == RightClicker.ClickStyle.Raven){ + ravenClick(); + } + else if (clickStyle.getMode() == RightClicker.ClickStyle.SKid){ + skidClick(null, ev); + } + } + + private void skidClick(TickEvent.RenderTickEvent er, TickEvent.PlayerTickEvent e) { + if (!Utils.Player.isPlayerInGame()) + return; + + double speedLeft1 = 1.0 / io.netty.util.internal.ThreadLocalRandom.current().nextDouble(leftCPS.getInputMin() - 0.2D, leftCPS.getInputMax()); + double leftHoldLength = speedLeft1 / io.netty.util.internal.ThreadLocalRandom.current().nextDouble(leftCPS.getInputMin() - 0.02D, leftCPS.getInputMax()); + //If none of the buttons are allowed to click, what is the point in generating clicktimes anyway? + //if (!leftActive && !rightActive) { + // return; + //} + Mouse.poll(); + if(mc.currentScreen != null || !mc.inGameHasFocus) { + doInventoryClick(); + return; + } + + + + + + // Uhh left click only, mate + if (Mouse.isButtonDown(0)) { + if(breakBlock()) return; + if (weaponOnly.isToggled() && !Utils.Player.isPlayerHoldingWeapon()) { + return; + } + if (jitterLeft.getInput() > 0.0D) { + double a = jitterLeft.getInput() * 0.45D; + EntityPlayerSP entityPlayer; + if (this.rand.nextBoolean()) { + entityPlayer = mc.thePlayer; + entityPlayer.rotationYaw = (float)((double)entityPlayer.rotationYaw + (double)this.rand.nextFloat() * a); + } else { + entityPlayer = mc.thePlayer; + entityPlayer.rotationYaw = (float)((double)entityPlayer.rotationYaw - (double)this.rand.nextFloat() * a); + } + + if (this.rand.nextBoolean()) { + entityPlayer = mc.thePlayer; + entityPlayer.rotationPitch = (float)((double)entityPlayer.rotationPitch + (double)this.rand.nextFloat() * a * 0.45D); + } else { + entityPlayer = mc.thePlayer; + entityPlayer.rotationPitch = (float)((double)entityPlayer.rotationPitch - (double)this.rand.nextFloat() * a * 0.45D); + } + } + + double speedLeft = 1.0 / ThreadLocalRandom.current().nextDouble(leftCPS.getInputMin() - 0.2, leftCPS.getInputMax()); + if (System.currentTimeMillis() - lastClick > speedLeft * 1000) { + lastClick = System.currentTimeMillis(); + if (leftHold < lastClick){ + leftHold = lastClick; + } + int key = mc.gameSettings.keyBindAttack.getKeyCode(); + KeyBinding.setKeyBindState(key, true); + KeyBinding.onTick(key); + Utils.Client.setMouseButtonState(0, true); + } else if (System.currentTimeMillis() - leftHold > leftHoldLength * 1000) { + KeyBinding.setKeyBindState(mc.gameSettings.keyBindAttack.getKeyCode(), false); + Utils.Client.setMouseButtonState(0, false); + } + } + } + + private void ravenClick() { + + if(mc.currentScreen != null || !mc.inGameHasFocus) { + doInventoryClick(); + return; + } + + + + Mouse.poll(); + if(!Mouse.isButtonDown(0) && !leftDown) { + KeyBinding.setKeyBindState(mc.gameSettings.keyBindAttack.getKeyCode(), false); + Utils.Client.setMouseButtonState(0, false); + } + if (Mouse.isButtonDown(0) || leftDown) { + if (weaponOnly.isToggled() && !Utils.Player.isPlayerHoldingWeapon()) { + return; + } + this.leftClickExecute(mc.gameSettings.keyBindAttack.getKeyCode()); + } + } + + public void leftClickExecute(int key) { + + if(breakBlock()) return; + + if (jitterLeft.getInput() > 0.0D) { + double a = jitterLeft.getInput() * 0.45D; + EntityPlayerSP entityPlayer; + if (this.rand.nextBoolean()) { + entityPlayer = mc.thePlayer; + entityPlayer.rotationYaw = (float)((double)entityPlayer.rotationYaw + (double)this.rand.nextFloat() * a); + } else { + entityPlayer = mc.thePlayer; + entityPlayer.rotationYaw = (float)((double)entityPlayer.rotationYaw - (double)this.rand.nextFloat() * a); + } + + if (this.rand.nextBoolean()) { + entityPlayer = mc.thePlayer; + entityPlayer.rotationPitch = (float)((double)entityPlayer.rotationPitch + (double)this.rand.nextFloat() * a * 0.45D); + } else { + entityPlayer = mc.thePlayer; + entityPlayer.rotationPitch = (float)((double)entityPlayer.rotationPitch - (double)this.rand.nextFloat() * a * 0.45D); + } + } + + if (this.leftUpTime > 0L && this.leftDownTime > 0L) { + if (System.currentTimeMillis() > this.leftUpTime && leftDown) { + KeyBinding.setKeyBindState(key, true); + KeyBinding.onTick(key); + this.genLeftTimings(); + Utils.Client.setMouseButtonState(0, true); + leftDown = false; + } else if (System.currentTimeMillis() > this.leftDownTime) { + KeyBinding.setKeyBindState(key, false); + leftDown = true; + Utils.Client.setMouseButtonState(0, false); + } + } else { + this.genLeftTimings(); + } + + } + + public void genLeftTimings() { + double clickSpeed = Utils.Client.ranModuleVal(leftCPS, this.rand) + 0.4D * this.rand.nextDouble(); + long delay = (int)Math.round(1000.0D / clickSpeed); + if (System.currentTimeMillis() > this.leftk) { + if (!this.leftn && this.rand.nextInt(100) >= 85) { + this.leftn = true; + this.leftm = 1.1D + this.rand.nextDouble() * 0.15D; + } else { + this.leftn = false; + } + + this.leftk = System.currentTimeMillis() + 500L + (long)this.rand.nextInt(1500); + } + + if (this.leftn) { + delay = (long)((double)delay * this.leftm); + } + + if (System.currentTimeMillis() > this.leftl) { + if (this.rand.nextInt(100) >= 80) { + delay += 50L + (long)this.rand.nextInt(100); + } + + this.leftl = System.currentTimeMillis() + 500L + (long)this.rand.nextInt(1500); + } + + this.leftUpTime = System.currentTimeMillis() + delay; + this.leftDownTime = System.currentTimeMillis() + delay / 2L - (long)this.rand.nextInt(10); + } + + private void inInvClick(GuiScreen guiScreen) { + int mouseInGUIPosX = Mouse.getX() * guiScreen.width / mc.displayWidth; + int mouseInGUIPosY = guiScreen.height - Mouse.getY() * guiScreen.height / mc.displayHeight - 1; + + try { + this.playerMouseInput.invoke(guiScreen, mouseInGUIPosX, mouseInGUIPosY, 0); + } catch (IllegalAccessException | InvocationTargetException var5) { + } + + } + + public boolean breakBlock() { + if (breakBlocks.isToggled() && mc.objectMouseOver != null) { + BlockPos p = mc.objectMouseOver.getBlockPos(); + if (p != null) { + Block bl = mc.theWorld.getBlockState(p).getBlock(); + if (bl != Blocks.air && !(bl instanceof BlockLiquid)) { + + if(!breakHeld) { + int e = mc.gameSettings.keyBindAttack.getKeyCode(); + KeyBinding.setKeyBindState(e, true); + KeyBinding.onTick(e); + breakHeld = true; + } + return true; + + + } + if(breakHeld) { + breakHeld = false; + } + } + } + return false; + } + + public void doInventoryClick(){ + if (inventoryFill.isToggled() && (mc.currentScreen instanceof GuiInventory || mc.currentScreen instanceof GuiChest)) { + if (!Mouse.isButtonDown(0) || !Keyboard.isKeyDown(54) && !Keyboard.isKeyDown(42)) { + this.leftDownTime = 0L; + this.leftUpTime = 0L; + } else if (this.leftDownTime != 0L && this.leftUpTime != 0L) { + if (System.currentTimeMillis() > this.leftUpTime) { + this.genLeftTimings(); + this.inInvClick(mc.currentScreen); + } + } else { + this.genLeftTimings(); + } + } + } + + public enum ClickStyle { + Raven, + SKid + } + + public enum ClickEvent { + Tick, + Render + } +} diff --git a/src/main/java/keystrokesmod/client/module/modules/combat/Reach.java b/src/main/java/keystrokesmod/client/module/modules/combat/Reach.java index 432222b0..15af4700 100644 --- a/src/main/java/keystrokesmod/client/module/modules/combat/Reach.java +++ b/src/main/java/keystrokesmod/client/module/modules/combat/Reach.java @@ -2,7 +2,6 @@ import keystrokesmod.client.main.Raven; import keystrokesmod.client.module.Module; -import keystrokesmod.client.module.ModuleManager; import keystrokesmod.client.module.setting.impl.DoubleSliderSetting; import keystrokesmod.client.module.setting.impl.TickSetting; import keystrokesmod.client.utils.Utils; @@ -41,8 +40,8 @@ public Reach() { public void onMouse(MouseEvent ev) { // legit event if(!Utils.Player.isPlayerInGame()) return; - Module autoClicker = Raven.moduleManager.getModuleByClazz(AutoClicker.class); - if (autoClicker != null && autoClicker.isEnabled() && AutoClicker.leftClick.isToggled() && Mouse.isButtonDown(0)) return; + Module autoClicker = Raven.moduleManager.getModuleByClazz(LeftClicker.class); + if (autoClicker != null && autoClicker.isEnabled() && Mouse.isButtonDown(0)) return; if (ev.button >= 0 && ev.buttonstate) { call(); } @@ -52,10 +51,10 @@ public void onMouse(MouseEvent ev) { public void onRenderTick(TickEvent.RenderTickEvent ev) { // autoclick event if(!Utils.Player.isPlayerInGame()) return; - Module autoClicker = Raven.moduleManager.getModuleByClazz(AutoClicker.class); - if (autoClicker == null || !autoClicker.isEnabled() || !AutoClicker.leftClick.isToggled()) return; + Module autoClicker = Raven.moduleManager.getModuleByClazz(LeftClicker.class); + if (autoClicker == null || !autoClicker.isEnabled()) return; - if (autoClicker.isEnabled() && AutoClicker.leftClick.isToggled() && Mouse.isButtonDown(0)){ + if (autoClicker.isEnabled() && Mouse.isButtonDown(0)){ call(); } } diff --git a/src/main/java/keystrokesmod/client/module/modules/combat/RightClicker.java b/src/main/java/keystrokesmod/client/module/modules/combat/RightClicker.java new file mode 100644 index 00000000..799aec07 --- /dev/null +++ b/src/main/java/keystrokesmod/client/module/modules/combat/RightClicker.java @@ -0,0 +1,383 @@ +package keystrokesmod.client.module.modules.combat; + +import keystrokesmod.client.main.Raven; +import keystrokesmod.client.module.*; +import keystrokesmod.client.module.modules.player.FastPlace; +import keystrokesmod.client.module.setting.impl.*; +import keystrokesmod.client.tweaker.interfaces.IThrowableItem; +import keystrokesmod.client.utils.Utils; +import net.minecraft.block.Block; +import net.minecraft.block.BlockLiquid; +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.EntityPlayerSP; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.gui.inventory.GuiChest; +import net.minecraft.client.gui.inventory.GuiInventory; +import net.minecraft.client.settings.KeyBinding; +import net.minecraft.init.Blocks; +import net.minecraft.item.*; +import net.minecraft.util.BlockPos; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.common.gameevent.TickEvent; +import net.minecraftforge.fml.common.gameevent.TickEvent.RenderTickEvent; +import net.minecraftforge.fml.relauncher.ReflectionHelper; +import org.lwjgl.input.Keyboard; +import org.lwjgl.input.Mouse; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.Random; +import java.util.concurrent.ThreadLocalRandom; + +public class RightClicker extends Module { + public static SliderSetting jitterRight; + public static TickSetting onlyBlocks; + public static TickSetting preferFastPlace; + public static TickSetting noBlockSword; + public static TickSetting allowEat, allowBow; + public static SliderSetting rightClickDelay; + public static DoubleSliderSetting rightCPS; + public static ComboSetting clickStyle, clickTimings; + + private Random rand = null; + private Method playerMouseInput; + private long righti; + private long rightj; + private long rightk; + private long rightl; + private double rightm; + private boolean rightn; + + private boolean watingForBreakTimeout; + private double breakBlockFinishWaitTime; + private long lastClick; + private long leftHold, rightHold; + private boolean rightClickWaiting; + private double rightClickWaitStartTime; + private boolean allowedClick; + public static boolean breakTimeDone; + private boolean leftDown; + private boolean rightDown; + + + public RightClicker() { + super("Right Clicker", ModuleCategory.combat); + + this.registerSetting(rightCPS = new DoubleSliderSetting("RightCPS", 12, 16, 1,60, 0.5)); + this.registerSetting(jitterRight = new SliderSetting("Jitter right", 0.0D, 0.0D, 3.0D, 0.1D)); + this.registerSetting(rightClickDelay = new SliderSetting("Rightclick delay (ms)", 85D, 0D, 500D, 1.0D)); + this.registerSetting(noBlockSword = new TickSetting("Don't rightclick sword", true)); + this.registerSetting(onlyBlocks = new TickSetting("Only rightclick with blocks", false)); + this.registerSetting(preferFastPlace = new TickSetting("Prefer fast place", false)); + this.registerSetting(allowEat = new TickSetting("Allow eat", true)); + this.registerSetting(allowBow = new TickSetting("Allow bow", true)); + + this.registerSetting(clickTimings = new ComboSetting("Click event", ClickEvent.Render)); + this.registerSetting(clickStyle = new ComboSetting("Click Style", ClickStyle.Raven)); + + try { + this.playerMouseInput = ReflectionHelper.findMethod( + GuiScreen.class, + null, + new String[]{ + "func_73864_a", + "mouseClicked" + }, + Integer.TYPE, + Integer.TYPE, + Integer.TYPE + ); + } catch (Exception ex) { + ex.printStackTrace(); + } + + if (this.playerMouseInput != null) { + this.playerMouseInput.setAccessible(true); + } + + this.rightClickWaiting = false; + } + + public void onEnable() { + if (this.playerMouseInput == null) { + this.disable(); + } + + this.rightClickWaiting = false; + this.allowedClick = false; + this.rand = new Random(); + } + + public void onDisable() { + this.rightClickWaiting = false; + } + + @SubscribeEvent + public void onRenderTick(RenderTickEvent ev) { + if(!Utils.Client.currentScreenMinecraft() && + !(Minecraft.getMinecraft().currentScreen instanceof GuiInventory) // to make it work in survival inventory + && !(Minecraft.getMinecraft().currentScreen instanceof GuiChest) // to make it work in chests + ) + return; + + if(clickTimings.getMode() != ClickEvent.Render) + return; + + if(clickStyle.getMode() == ClickStyle.Raven){ + ravenClick(); + } + else if (clickStyle.getMode() == ClickStyle.SKid){ + skidClick(ev, null); + } + } + + @SubscribeEvent + public void onTick(TickEvent.PlayerTickEvent ev) { + if(!Utils.Client.currentScreenMinecraft() && !(Minecraft.getMinecraft().currentScreen instanceof GuiInventory) + && !(Minecraft.getMinecraft().currentScreen instanceof GuiChest) // to make it work in chests + ) + return; + + if(clickTimings.getMode() != ClickEvent.Tick) + return; + + if(clickStyle.getMode() == ClickStyle.Raven){ + ravenClick(); + } + else if (clickStyle.getMode() == ClickStyle.SKid){ + skidClick(null, ev); + } + } + + private void skidClick(RenderTickEvent er, TickEvent.PlayerTickEvent e) { + if (!Utils.Player.isPlayerInGame()) + return; + + if (mc.currentScreen != null || !mc.inGameHasFocus) + return; + + double speedRight = 1.0 / io.netty.util.internal.ThreadLocalRandom.current().nextDouble(rightCPS.getInputMin() - 0.2D, rightCPS.getInputMax()); + double rightHoldLength = speedRight / io.netty.util.internal.ThreadLocalRandom.current().nextDouble(rightCPS.getInputMin() - 0.02D, rightCPS.getInputMax()); + + if(!Mouse.isButtonDown(1) && !rightDown){ + KeyBinding.setKeyBindState(mc.gameSettings.keyBindUseItem.getKeyCode(), false); + Utils.Client.setMouseButtonState(1, false); + } + + if (Mouse.isButtonDown(1) || rightDown) { + if (!this.rightClickAllowed()) + return; + + + if (jitterRight.getInput() > 0.0D) { + double jitterMultiplier = jitterRight.getInput() * 0.45D; + EntityPlayerSP entityPlayer; + if (this.rand.nextBoolean()) { + entityPlayer = mc.thePlayer; + entityPlayer.rotationYaw = (float)((double)entityPlayer.rotationYaw + (double)this.rand.nextFloat() * jitterMultiplier); + } else { + entityPlayer = mc.thePlayer; + entityPlayer.rotationYaw = (float)((double)entityPlayer.rotationYaw - (double)this.rand.nextFloat() * jitterMultiplier); + } + + if (this.rand.nextBoolean()) { + entityPlayer = mc.thePlayer; + entityPlayer.rotationPitch = (float)((double)entityPlayer.rotationPitch + (double)this.rand.nextFloat() * jitterMultiplier * 0.45D); + } else { + entityPlayer = mc.thePlayer; + entityPlayer.rotationPitch = (float)((double)entityPlayer.rotationPitch - (double)this.rand.nextFloat() * jitterMultiplier * 0.45D); + } + } + + if (System.currentTimeMillis() - lastClick > speedRight * 1000) { + lastClick = System.currentTimeMillis(); + if (rightHold < lastClick){ + rightHold = lastClick; + } + int key = mc.gameSettings.keyBindUseItem.getKeyCode(); + KeyBinding.setKeyBindState(key, true); + Utils.Client.setMouseButtonState(1, true); + KeyBinding.onTick(key); + rightDown = false; + } else if (System.currentTimeMillis() - rightHold > rightHoldLength * 1000) { + rightDown = true; + KeyBinding.setKeyBindState(mc.gameSettings.keyBindUseItem.getKeyCode(), false); + Utils.Client.setMouseButtonState(1, false); + + } + } else if (!Mouse.isButtonDown(1)){ + this.rightClickWaiting = false; + this.allowedClick = false; + } + } + + private void ravenClick() { + if (!Utils.Player.isPlayerInGame()) + return; + + if (mc.currentScreen != null || !mc.inGameHasFocus) + return; + + + Mouse.poll(); + if (Mouse.isButtonDown(1)) { + this.rightClickExecute(mc.gameSettings.keyBindUseItem.getKeyCode()); + } else if (!Mouse.isButtonDown(1)){ + this.rightClickWaiting = false; + this.allowedClick = false; + this.righti = 0L; + this.rightj = 0L; + } + } + + + public boolean rightClickAllowed() { + ItemStack item = mc.thePlayer.getHeldItem(); + if (item != null) { + if (allowEat.isToggled()) { + if ((item.getItem() instanceof ItemFood)) { + return false; + } + } + + if (allowBow.isToggled()) { + if (item.getItem() instanceof ItemBow) { + return false; + } + } + + if (onlyBlocks.isToggled()) { + if (!(item.getItem() instanceof ItemBlock)) { + if (item.getItem() instanceof IThrowableItem) { + if (!((IThrowableItem)item.getItem()).isThrowable(item)) return false; + } else { + return false; + } + } + } + + if (noBlockSword.isToggled()) { + if (item.getItem() instanceof ItemSword) + return false; + } + } + + if(preferFastPlace.isToggled()) { + Module fastplace = Raven.moduleManager.getModuleByClazz(FastPlace.class); + if (fastplace != null && fastplace.isEnabled()) + return false; + } + + if(rightClickDelay.getInput() != 0){ + if(!rightClickWaiting && !allowedClick) { + this.rightClickWaitStartTime = System.currentTimeMillis(); + this.rightClickWaiting = true; + return false; + } else if(this.rightClickWaiting && !allowedClick) { + double passedTime = System.currentTimeMillis() - this.rightClickWaitStartTime; + if (passedTime >= rightClickDelay.getInput()) { + this.allowedClick = true; + this.rightClickWaiting = false; + return true; + } else { + return false; + } + } + } + + + return true; + } + + public void rightClickExecute(int key) { + if (!this.rightClickAllowed()) + return; + + if (jitterRight.getInput() > 0.0D) { + double jitterMultiplier = jitterRight.getInput() * 0.45D; + EntityPlayerSP entityPlayer; + if (this.rand.nextBoolean()) { + entityPlayer = mc.thePlayer; + entityPlayer.rotationYaw = (float)((double)entityPlayer.rotationYaw + (double)this.rand.nextFloat() * jitterMultiplier); + } else { + entityPlayer = mc.thePlayer; + entityPlayer.rotationYaw = (float)((double)entityPlayer.rotationYaw - (double)this.rand.nextFloat() * jitterMultiplier); + } + + if (this.rand.nextBoolean()) { + entityPlayer = mc.thePlayer; + entityPlayer.rotationPitch = (float)((double)entityPlayer.rotationPitch + (double)this.rand.nextFloat() * jitterMultiplier * 0.45D); + } else { + entityPlayer = mc.thePlayer; + entityPlayer.rotationPitch = (float)((double)entityPlayer.rotationPitch - (double)this.rand.nextFloat() * jitterMultiplier * 0.45D); + } + } + + if (this.rightj > 0L && this.righti > 0L) { + if (System.currentTimeMillis() > this.rightj) { + KeyBinding.setKeyBindState(key, true); + KeyBinding.onTick(key); + Utils.Client.setMouseButtonState(1, false); + Utils.Client.setMouseButtonState(1, true); + this.genRightTimings(); + } else if (System.currentTimeMillis() > this.righti) { + KeyBinding.setKeyBindState(key, false); + //Utils.Client.setMouseButtonState(1, false); + } + } else { + this.genRightTimings(); + } + + } + + public void genRightTimings() { + double clickSpeed = Utils.Client.ranModuleVal(rightCPS, this.rand) + 0.4D * this.rand.nextDouble(); + long delay = (int)Math.round(1000.0D / clickSpeed); + if (System.currentTimeMillis() > this.rightk) { + if (!this.rightn && this.rand.nextInt(100) >= 85) { + this.rightn = true; + this.rightm = 1.1D + this.rand.nextDouble() * 0.15D; + } else { + this.rightn = false; + } + + this.rightk = System.currentTimeMillis() + 500L + (long)this.rand.nextInt(1500); + } + + if (this.rightn) { + delay = (long)((double)delay * this.rightm); + } + + if (System.currentTimeMillis() > this.rightl) { + if (this.rand.nextInt(100) >= 80) { + delay += 50L + (long)this.rand.nextInt(100); + } + + this.rightl = System.currentTimeMillis() + 500L + (long)this.rand.nextInt(1500); + } + + this.rightj = System.currentTimeMillis() + delay; + this.righti = System.currentTimeMillis() + delay / 2L - (long)this.rand.nextInt(10); + } + + private void inInvClick(GuiScreen guiScreen) { + int mouseInGUIPosX = Mouse.getX() * guiScreen.width / mc.displayWidth; + int mouseInGUIPosY = guiScreen.height - Mouse.getY() * guiScreen.height / mc.displayHeight - 1; + + try { + this.playerMouseInput.invoke(guiScreen, mouseInGUIPosX, mouseInGUIPosY, 0); + } catch (IllegalAccessException | InvocationTargetException var5) { + } + + } + + public enum ClickStyle { + Raven, + SKid + } + + public enum ClickEvent { + Tick, + Render + } +} \ No newline at end of file diff --git a/src/main/java/keystrokesmod/client/module/modules/player/AutoTool.java b/src/main/java/keystrokesmod/client/module/modules/player/AutoTool.java index cafb6f68..6fa7fac9 100644 --- a/src/main/java/keystrokesmod/client/module/modules/player/AutoTool.java +++ b/src/main/java/keystrokesmod/client/module/modules/player/AutoTool.java @@ -1,9 +1,11 @@ package keystrokesmod.client.module.modules.player; +import keystrokesmod.client.main.Raven; import keystrokesmod.client.module.Module; +import keystrokesmod.client.module.modules.combat.LeftClicker; import keystrokesmod.client.module.setting.impl.DoubleSliderSetting; import keystrokesmod.client.module.setting.impl.TickSetting; -import keystrokesmod.client.module.modules.combat.AutoClicker; +import keystrokesmod.client.module.modules.combat.RightClicker; import keystrokesmod.client.utils.CoolDown; import keystrokesmod.client.utils.Utils; import net.minecraft.block.Block; @@ -54,8 +56,9 @@ public void onRenderTick(TickEvent.RenderTickEvent e) { //make sure that we are allowed to breack blocks if ac is enabled - if(AutoClicker.autoClickerEnabled) { - if(!AutoClicker.breakBlocks.isToggled()) { + LeftClicker autoClicker = (LeftClicker) Raven.moduleManager.getModuleByClazz(LeftClicker.class); + if(autoClicker.isEnabled()) { + if(!LeftClicker.breakBlocks.isToggled()) { return; } } diff --git a/src/main/java/keystrokesmod/client/tweaker/ASMEventHandler.java b/src/main/java/keystrokesmod/client/tweaker/ASMEventHandler.java index 5af3a487..4a6e8862 100644 --- a/src/main/java/keystrokesmod/client/tweaker/ASMEventHandler.java +++ b/src/main/java/keystrokesmod/client/tweaker/ASMEventHandler.java @@ -2,8 +2,8 @@ import keystrokesmod.client.main.Raven; import keystrokesmod.client.module.Module; -import keystrokesmod.client.module.ModuleManager; -import keystrokesmod.client.module.modules.combat.AutoClicker; +import keystrokesmod.client.module.modules.combat.LeftClicker; +import keystrokesmod.client.module.modules.combat.RightClicker; import keystrokesmod.client.module.modules.combat.Reach; import keystrokesmod.client.module.modules.movement.KeepSprint; import keystrokesmod.client.module.modules.movement.NoSlow; @@ -107,8 +107,8 @@ public static void onAttackTargetEntityWithCurrentItem(Entity en) { * ASM Modules : AutoClicker, Reach */ public static void onTick() { - Module autoClicker = Raven.moduleManager.getModuleByClazz(AutoClicker.class); - if (autoClicker == null || !autoClicker.isEnabled() || !AutoClicker.leftClick.isToggled() || !Mouse.isButtonDown(0) || !Reach.call()) { + Module autoClicker = Raven.moduleManager.getModuleByClazz(LeftClicker.class); + if (autoClicker == null || !autoClicker.isEnabled() || !Mouse.isButtonDown(0) || !Reach.call()) { mc.entityRenderer.getMouseOver(1.0F); } } diff --git a/src/main/java/keystrokesmod/client/utils/Utils.java b/src/main/java/keystrokesmod/client/utils/Utils.java index 18f8f670..69a5c885 100644 --- a/src/main/java/keystrokesmod/client/utils/Utils.java +++ b/src/main/java/keystrokesmod/client/utils/Utils.java @@ -6,10 +6,10 @@ import com.google.gson.JsonParser; import keystrokesmod.client.main.Raven; import keystrokesmod.client.module.Module; -import keystrokesmod.client.module.ModuleManager; +import keystrokesmod.client.module.modules.combat.LeftClicker; import keystrokesmod.client.module.setting.impl.DoubleSliderSetting; import keystrokesmod.client.module.setting.impl.SliderSetting; -import keystrokesmod.client.module.modules.combat.AutoClicker; +import keystrokesmod.client.module.modules.combat.RightClicker; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.client.gui.FontRenderer; @@ -397,9 +397,9 @@ public static void resetTimer() { } public static boolean autoClickerClicking() { - Module autoClicker = Raven.moduleManager.getModuleByClazz(AutoClicker.class); + Module autoClicker = Raven.moduleManager.getModuleByClazz(LeftClicker.class); if (autoClicker != null && autoClicker.isEnabled()) { - return AutoClicker.leftClick.isToggled() && Mouse.isButtonDown(0); + return autoClicker.isEnabled() && Mouse.isButtonDown(0); } //else return mouseManager.getLeftClickCounter() > 1 && System.currentTimeMillis() - mouseManager.leftClickTimer < 300L; return false; } diff --git a/src/main/resources/assets/keystrokes/version b/src/main/resources/assets/keystrokes/version index 373dd22f..dcb2becb 100644 --- a/src/main/resources/assets/keystrokes/version +++ b/src/main/resources/assets/keystrokes/version @@ -1 +1 @@ -1-0-21 \ No newline at end of file +1-0-22 \ No newline at end of file