Skip to content
This repository has been archived by the owner on Jan 22, 2025. It is now read-only.

Commit

Permalink
Release 1.4.1
Browse files Browse the repository at this point in the history
- [※] Improve RayCast for KillAura.
- [※] Improve NoFall & AntiVoid.
    - improve scaffold pause check.
- [※] Improve NyaProxy.
    - however it won't work anymore..
  • Loading branch information
xia-mc committed Jun 15, 2024
1 parent d38fc05 commit d536083
Show file tree
Hide file tree
Showing 12 changed files with 123 additions and 48 deletions.
30 changes: 27 additions & 3 deletions src/main/java/keystrokesmod/module/impl/client/NyaProxy.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@
import keystrokesmod.event.PreConnectEvent;
import keystrokesmod.mixins.impl.client.GuiConnectingAccessor;
import keystrokesmod.module.Module;
import keystrokesmod.module.setting.impl.ButtonSetting;
import keystrokesmod.module.setting.impl.DescriptionSetting;
import keystrokesmod.module.setting.impl.SliderSetting;
import keystrokesmod.utility.GuiConnectingMsg;
import keystrokesmod.utility.Utils;
import net.minecraft.client.gui.GuiDisconnected;
import net.minecraft.client.network.NetHandlerLoginClient;
import net.minecraft.network.EnumConnectionState;
Expand All @@ -21,17 +23,21 @@

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;

public class NyaProxy extends Module {
private final SliderSetting maxRetryTimes;
private final ButtonSetting autoFlushDns;
private GuiConnectingMsg.Data guiData = new GuiConnectingMsg.Data();
private short retry = 0;

public NyaProxy() {
super("NyaProxy", category.client);
this.registerSetting(new DescriptionSetting("work with NyaProxy server."));
this.registerSetting(maxRetryTimes = new SliderSetting("Max retry times", 20, 0, 50, 1));
this.registerSetting(autoFlushDns = new ButtonSetting("Auto flush dns (Windows)", false));
}

@SubscribeEvent(priority = EventPriority.HIGHEST)
Expand All @@ -47,7 +53,7 @@ public void onConnect(@NotNull PreConnectEvent event) {
retry = 0;
guiData = new GuiConnectingMsg.Data();

guiData.add(ChatFormatting.GRAY + "[" + ChatFormatting.AQUA + "NyaProxy" + ChatFormatting.GRAY + "] " + ChatFormatting.BLUE);
guiData.set(ChatFormatting.GRAY + "[" + ChatFormatting.AQUA + "NyaProxy" + ChatFormatting.GRAY + "] " + ChatFormatting.BLUE);
switch (backend) {
case SUQIAN1:
guiData.append("宿迁节点1");
Expand All @@ -74,6 +80,10 @@ private void connectWithRetry(@NotNull PreConnectEvent event) {
return;
}

if (autoFlushDns.isToggled()) {
Runtime.getRuntime().exec("ipConfig /flushDns");
}

inetaddress = InetAddress.getByName(event.getIp());
guiConnecting.setNetworkManager(NetworkManager.func_181124_a(inetaddress, event.getPort(), mc.gameSettings.func_181148_f()));
guiConnecting.getNetworkManager().setNetHandler(new NetHandlerLoginClient(guiConnecting.getNetworkManager(), mc, guiConnecting.getPreviousGuiScreen()));
Expand All @@ -98,12 +108,19 @@ private void connectWithRetry(@NotNull PreConnectEvent event) {
s = s.replaceAll(s1, "");
}

if (retry >= maxRetryTimes.getInput()) {
String unformatted = Utils.getUnformatedString(s);
if (retry >= maxRetryTimes.getInput() || unformatted.startsWith("You are temporarily banned")) {
guiData = null;
retry = 0;
mc.displayGuiScreen(new GuiDisconnected(guiConnecting.getPreviousGuiScreen(), "connect.failed", new ChatComponentTranslation("disconnect.genericReason", s)));
} else {
guiData.add("第" + (retry + 1) + "次失败:" + var6);
guiData.set("§c§l第§r§l " + (retry + 1) + " §c§l次失败§7: " +
NYA_EXCEPTIONS.entrySet().stream()
.filter(entry -> unformatted.startsWith(entry.getKey()))
.map(Map.Entry::getValue)
.findAny()
.orElse("§r" + s)
);
event.getExtraMessage().update(guiData);

retry++;
Expand Down Expand Up @@ -138,4 +155,11 @@ public String getIp() {
return ip;
}
}

public static final Map<String, String> NYA_EXCEPTIONS = new HashMap<>();

static {
NYA_EXCEPTIONS.put("java.net.ConnectException: Connection refused: no further information: ", "服务不可用。");
NYA_EXCEPTIONS.put("ZBProxy - Connection Rejected", "未开启计费/服务正在初始化。");
}
}
30 changes: 27 additions & 3 deletions src/main/java/keystrokesmod/module/impl/combat/KillAura.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,14 @@
import net.minecraft.network.Packet;
import net.minecraft.network.play.client.*;
import net.minecraft.network.play.server.S2FPacketSetSlot;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.BlockPos;
import net.minecraft.util.MovingObjectPosition;
import net.minecraftforge.client.event.MouseEvent;
import net.minecraftforge.fml.common.eventhandler.EventPriority;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.lwjgl.input.Mouse;

Expand Down Expand Up @@ -469,7 +471,7 @@ private void setTarget(float[] rotations) {
})
.filter(entity -> targetInvisible.isToggled() || !entity.isInvisible())
.filter(entity -> hitThroughBlocks.isToggled() || !behindBlocks(rotations))
.filter(entity -> fov.getInput() == 360.0f || Utils.inFov((float) fov.getInput(), entity))
.filter(entity -> fov.getInput() == 360 || Utils.inFov((float) fov.getInput(), entity))
.map(entity -> new Pair<>(entity, mc.thePlayer.getDistanceSqToEntity(entity)))
.sorted((p1, p2) -> p2.second().compareTo(p1.second()))
.forEach(pair -> {
Expand Down Expand Up @@ -635,6 +637,10 @@ private void releasePackets() {

private boolean behindBlocks(float[] rotations) {
switch ((int) rotationMode.getInput()) {
default:
if (mc.thePlayer.getCollisionBoundingBox().intersectsWith(target.getCollisionBoundingBox())) {
return false;
}
case 2:
case 0:
if (mc.objectMouseOver != null) {
Expand All @@ -646,9 +652,11 @@ private boolean behindBlocks(float[] rotations) {
break;
case 1:
try {
Vec3 from = new Vec3(mc.thePlayer).add(new Vec3(0, mc.thePlayer.getEyeHeight(), 0));
MovingObjectPosition hitResult = RotationUtils.rayCast(
new keystrokesmod.script.classes.Vec3(target).add(new keystrokesmod.script.classes.Vec3(0, target.getEyeHeight(), 0))
.distanceTo(new keystrokesmod.script.classes.Vec3(mc.thePlayer).add(new Vec3(0, mc.thePlayer.getEyeHeight(), 0))), rotations[0], rotations[1]);
getNearestPoint(target.getCollisionBoundingBox(), from).distanceTo(from),
rotations[0], rotations[1]
);
if (hitResult != null) {
if (keystrokesmod.module.impl.other.anticheats.utils.world.BlockUtils.isFullBlock(mc.theWorld.getBlockState(hitResult.getBlockPos()))) {
return true;
Expand All @@ -659,4 +667,20 @@ private boolean behindBlocks(float[] rotations) {
}
return false;
}

@Contract("_, _ -> new")
private @NotNull Vec3 getNearestPoint(@NotNull AxisAlignedBB from, @NotNull Vec3 to) {
double pointX, pointY, pointZ;
if (to.x() >= from.maxX) {
pointX = from.maxX;
} else pointX = Math.max(to.x(), from.minX);
if (to.y() >= from.maxY) {
pointY = from.maxY;
} else pointY = Math.max(to.y(), from.minY);
if (to.z() >= from.maxZ) {
pointZ = from.maxZ;
} else pointZ = Math.max(to.z(), from.minZ);

return new Vec3(pointX, pointY, pointZ);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public void onPreUpdate(PreUpdateEvent event) {

if (longJump.isEnabled())
disabledForLongJump = true;
if (scaffold.isEnabled() || fly.isEnabled() || motionModifier.isEnabled() || disabledForLongJump) {
if ((scaffold.isEnabled() && scaffold.totalBlocks() == 0) || fly.isEnabled() || motionModifier.isEnabled() || disabledForLongJump) {
blink.disable();
return;
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/keystrokesmod/module/impl/player/NoFall.java
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,6 @@ private boolean isVoid() {
}

private boolean shouldBlink() {
return !mc.thePlayer.onGround && !BlockUtils.isBlockUnder((int) Math.floor(minFallDistance.getInput())) && BlockUtils.isBlockUnder() && !scaffold.isEnabled();
return !mc.thePlayer.onGround && !BlockUtils.isBlockUnder((int) Math.floor(minFallDistance.getInput())) && BlockUtils.isBlockUnder() && (!scaffold.isEnabled() || scaffold.totalBlocks() == 0);
}
}
2 changes: 1 addition & 1 deletion src/main/java/keystrokesmod/module/impl/render/HUD.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import java.util.List;

public class HUD extends Module {
public static final String VERSION = "1.4.0";
public static final String VERSION = "1.4.1";
public static SliderSetting theme;
// public static SliderSetting font;
// public static SliderSetting fontSize;
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/keystrokesmod/module/impl/world/AutoTool.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@
import org.lwjgl.input.Mouse;

public class AutoTool extends Module {
private SliderSetting hoverDelay;
private ButtonSetting rightDisable;
private ButtonSetting requireMouse;
private ButtonSetting swap;
private final SliderSetting hoverDelay;
private final ButtonSetting rightDisable;
private final ButtonSetting requireMouse;
private final ButtonSetting swap;
private int previousSlot = -1;
private int ticksHovered;
private BlockPos currentBlock;
Expand Down
6 changes: 4 additions & 2 deletions src/main/java/keystrokesmod/module/impl/world/Scaffold.java
Original file line number Diff line number Diff line change
Expand Up @@ -424,10 +424,10 @@ else if (n3 < 0.0) {
return mc.thePlayer.rotationYaw + n;
}

protected void place(MovingObjectPosition block, boolean extra) {
protected boolean place(MovingObjectPosition block, boolean extra) {
ItemStack heldItem = mc.thePlayer.getHeldItem();
if (heldItem == null || !(heldItem.getItem() instanceof ItemBlock)) {
return;
return false;
}
if (mc.playerController.onPlayerRightClick(mc.thePlayer, mc.theWorld, heldItem, block.getBlockPos(), block.sideHit, block.hitVec)) {
if (silentSwing.isToggled()) {
Expand All @@ -440,7 +440,9 @@ protected void place(MovingObjectPosition block, boolean extra) {
if (!extra) {
highlight.put(block.getBlockPos().offset(block.sideHit), null);
}
return true;
}
return false;
}

private int getSlot() {
Expand Down
14 changes: 7 additions & 7 deletions src/main/java/keystrokesmod/module/impl/world/Tower.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ public class Tower extends Module {
private final ButtonSetting disableWhileCollided;
private final ButtonSetting disableWhileHurt;
private final ButtonSetting sprintJumpForward;
private final ButtonSetting onlyWhileMoving;
private final ButtonSetting hypixelNoStrafe;
private final ButtonSetting hypixelLowHop;
private final SliderSetting hypixelOffGroundSpeed;
Expand All @@ -54,7 +53,6 @@ public Tower() {
this.registerSetting(disableWhileCollided = new ButtonSetting("Disable while collided", false));
this.registerSetting(disableWhileHurt = new ButtonSetting("Disable while hurt", false));
this.registerSetting(sprintJumpForward = new ButtonSetting("Sprint jump forward", true));
this.registerSetting(onlyWhileMoving = new ButtonSetting("Only while moving", false));
this.registerSetting(hypixelOffGroundSpeed = new SliderSetting("Hypixel off ground speed", 0.5, 0.0, 1.0, 0.01));
this.registerSetting(hypixelNoStrafe = new ButtonSetting("Hypixel no strafe", false));
this.registerSetting(hypixelLowHop = new ButtonSetting("Hypixel low hop", false));
Expand Down Expand Up @@ -93,11 +91,13 @@ public void onPreMotion(PreMotionEvent e) throws IllegalAccessException {
toweredBlock = null;
}
if (toweredBlock != null) {
Raven.getExecutor().schedule(() -> scaffold.place(new MovingObjectPosition(
new Vec3(toweredBlock.getX(), scaffold.placeBlock.hitVec.yCoord, scaffold.placeBlock.hitVec.zCoord),
EnumFacing.UP,
toweredBlock), true), (long) hypixelTowerDelay.getInput(), TimeUnit.MILLISECONDS);
e.setOnGround(true);
Raven.getExecutor().schedule(() -> {
if (scaffold.place(new MovingObjectPosition(
new Vec3(toweredBlock.getX() + 0.1, scaffold.placeBlock.hitVec.yCoord, scaffold.placeBlock.hitVec.zCoord),
EnumFacing.UP,
toweredBlock), true))
e.setOnGround(true);
}, (long) hypixelTowerDelay.getInput(), TimeUnit.MILLISECONDS);
mc.thePlayer.motionY = hypixelJumpMotion.getInput();
}
}
Expand Down
28 changes: 13 additions & 15 deletions src/main/java/keystrokesmod/module/impl/world/WaterBucket.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,30 +3,31 @@
import keystrokesmod.event.PreMotionEvent;
import keystrokesmod.module.Module;
import keystrokesmod.module.setting.impl.ButtonSetting;
import keystrokesmod.module.setting.impl.SliderSetting;
import keystrokesmod.utility.RotationUtils;
import keystrokesmod.utility.Utils;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.network.play.client.C08PacketPlayerBlockPlacement;
import net.minecraft.util.MovingObjectPosition;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import org.jetbrains.annotations.NotNull;

public class WaterBucket extends Module {
//private ButtonSetting pickup;
private ButtonSetting silentAim;
private ButtonSetting switchToItem;
private final SliderSetting minDistance;
private final ButtonSetting silentAim;
private final ButtonSetting switchToItem;

public WaterBucket() {
super("Water bucket", category.world, 0);
//this.registerSetting(pickup = new ButtonSetting("Pickup water", true));
this.registerSetting(minDistance = new SliderSetting("Min distance", 3, 0, 20, 0.5));
this.registerSetting(silentAim = new ButtonSetting("Silent aim", true));
this.registerSetting(switchToItem = new ButtonSetting("Switch to item", true));
}

@SubscribeEvent
public void onPreMotion(PreMotionEvent e) {
public void onPreMotion(@NotNull PreMotionEvent e) {
MovingObjectPosition rayCast = RotationUtils.rayCast(mc.playerController.getBlockReachDistance(), e.getYaw(), 90);
if (inPosition() && rayCast != null && rayCast.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK && holdWaterBucket(switchToItem.isToggled())) {
if (silentAim.isToggled()) {
Expand All @@ -40,15 +41,16 @@ public void onPreMotion(PreMotionEvent e) {
}

private boolean inPosition() {
return !mc.thePlayer.capabilities.isFlying && !mc.thePlayer.capabilities.isCreativeMode && !mc.thePlayer.onGround && mc.thePlayer.motionY < -0.6D && !mc.thePlayer.isInWater() && fallDistance() <= 2;
return !mc.thePlayer.capabilities.isFlying && !mc.thePlayer.capabilities.isCreativeMode
&& !mc.thePlayer.onGround && !mc.thePlayer.isInWater() && mc.thePlayer.fallDistance >= minDistance.getInput();
}

private boolean holdWaterBucket(boolean setSlot) {
if (this.containsItem(mc.thePlayer.getHeldItem(), Items.water_bucket)) {
if (this.containsWater(mc.thePlayer.getHeldItem())) {
return true;
} else {
for (int i = 0; i < InventoryPlayer.getHotbarSize(); ++i) {
if (this.containsItem(mc.thePlayer.inventory.mainInventory[i], Items.water_bucket) && setSlot) {
if (this.containsWater(mc.thePlayer.inventory.mainInventory[i]) && setSlot) {
mc.thePlayer.inventory.currentItem = i;
return true;
}
Expand All @@ -58,15 +60,11 @@ private boolean holdWaterBucket(boolean setSlot) {
}
}

private boolean containsItem(ItemStack itemStack, Item item) {
return itemStack != null && itemStack.getItem() == item;
private boolean containsWater(ItemStack itemStack) {
return itemStack != null && itemStack.getItem() == Items.water_bucket;
}

private void sendPlace() {
mc.getNetHandler().addToSendQueue(new C08PacketPlayerBlockPlacement(mc.thePlayer.getHeldItem()));
}

private int fallDistance() {
return (int) Utils.getFallDistance(mc.thePlayer);
}
}
5 changes: 0 additions & 5 deletions src/main/java/keystrokesmod/utility/GuiConnectingMsg.java
Original file line number Diff line number Diff line change
Expand Up @@ -73,11 +73,6 @@ public void set(final String message) {
this.stringData = new StringBuilder(message);
}

public void add(final String message) {
stringData.append("\n");
stringData.append(message);
}

public void append(final String message) {
stringData.append(message);
}
Expand Down
25 changes: 25 additions & 0 deletions src/main/java/keystrokesmod/utility/Utils.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.mojang.realmsclient.gui.ChatFormatting;
import keystrokesmod.module.Module;
import keystrokesmod.module.ModuleManager;
import keystrokesmod.module.impl.client.Settings;
Expand Down Expand Up @@ -34,6 +35,7 @@
import net.minecraftforge.fml.common.ObfuscationReflectionHelper;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.jetbrains.annotations.NotNull;
import org.lwjgl.input.Keyboard;
import org.lwjgl.input.Mouse;

Expand Down Expand Up @@ -771,4 +773,27 @@ public static double getDamage(final ItemStack itemStack) {
}
return getAmount + EnchantmentHelper.getEnchantmentLevel(Enchantment.sharpness.effectId, itemStack) * 1.25;
}

public static @NotNull String getUnformatedString(@NotNull String s) {
StringBuilder stringbuilder = new StringBuilder();

boolean doIgnore = false;
forEach:
for (char c : s.toCharArray()) {
if (doIgnore) {
doIgnore = false;
for (ChatFormatting format : ChatFormatting.values())
if (format.getChar() == c)
continue forEach;
}
if (c == '§') {
doIgnore = true;
continue;
}

stringbuilder.append(c);
}

return stringbuilder.toString();
}
}
Loading

0 comments on commit d536083

Please sign in to comment.