-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Ну типо с экспенсива взял, тем кто не мог перенести от туда на рич базу, ловите
После этого заходим в утилки и делаем класс 'MoveUtility'
strafe:
package toffifree.toffi.game.module.impl.Movement;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.MobEffects;
import net.minecraft.item.ItemStack;
import toffifree.toffi.game.event.EventTarget;
import toffifree.toffi.game.event.events.impl.player.EventMove;
import toffifree.toffi.game.event.events.impl.player.EventPreMotion;
import toffifree.toffi.game.event.events.impl.player.EventUpdate;
import toffifree.toffi.game.module.Module;
import toffifree.toffi.game.ui.settings.impl.BooleanSetting;
import toffifree.toffi.game.ui.settings.impl.ListSetting;
import toffifree.toffi.game.ui.settings.impl.NumberSetting;
import toffifree.toffi.game.utils.Helper;
import toffifree.toffi.game.utils.math.TimerHelper;
import toffifree.toffi.game.utils.movement.MoveUtility;
import toffifree.toffi.game.utils.movement.MovementUtils;
import toffifree.toffi.game.utils.otherutils.EventMotion;
import toffifree.toffi.game.module.impl.ModuleCategory;
import net.minecraft.init.Items;
import net.minecraft.inventory.ClickType;
import net.minecraft.network.play.client.CPacketEntityAction;
import java.util.Random;
public class Strafe extends Module {
public ListSetting mode = new ListSetting("Обход:", "Matrix", "Matrix");
private float waterTicks = 0;
public BooleanSetting elytra = new BooleanSetting("Ускорение с элитрой", false);
public NumberSetting speed2 = new NumberSetting("Скорость", 0.8f, 0.3f, 0.9f, 0.1f, () -> elytra.getCurrentValue());
TimerHelper timerUtility = new TimerHelper();
public static double oldSpeed, contextFriction;
public static boolean needSwap, prevSprint, needSprintState;
public static int counter, noSlowTicks;
private int ticks;
public Strafe() {
super("Strafe", ModuleCategory.Movement);
addSettings(mode, elytra, speed2);
}
@EventTarget
public void e(EventMotion e) {
if (mode.currentMode.equals("Matrix")) {
if (waterTicks > 0) return;
if (MoveUtility.isMoving() && MoveUtility.getMotion() <= 0.239385188) {
if (!e.isOnGround()) {
MoveUtility.setStrafe(MoveUtility.reason(false) || mc.player.isHandActive()
? MoveUtility.getMotion() - 0.00001f : 0.245f - (new Random().nextFloat() * 0.000001f));
}
}
}
}
@EventTarget
public void f(EventUpdate f) {
if (!elytra.getCurrentValue()) return;
int elytra = getHotbarSlotOfItem();
if (Helper.mc.player.isInWater() || Helper.mc.player.isInLava() || waterTicks > 0 || elytra == -1 || Helper.mc.player.isInWeb)
return;
if (Helper.mc.player.fallDistance != 0 && Helper.mc.player.fallDistance < 0.1 && Helper.mc.player.motionY < -0.1) {
if (elytra != -2) {
Helper.mc.playerController.windowClick(0, elytra, 1, ClickType.PICKUP, Helper.mc.player);
Helper.mc.playerController.windowClick(0, 6, 1, ClickType.PICKUP, Helper.mc.player);
}
Helper.mc.getConnection().sendPacket(new CPacketEntityAction(Helper.mc.player, CPacketEntityAction.Action.START_FALL_FLYING));
Helper.mc.getConnection().sendPacket(new CPacketEntityAction(Helper.mc.player, CPacketEntityAction.Action.START_FALL_FLYING));
if (elytra != -2) {
Helper.mc.playerController.windowClick(0, 6, 1, ClickType.PICKUP, Helper.mc.player);
Helper.mc.playerController.windowClick(0, elytra, 1, ClickType.PICKUP, Helper.mc.player);
}
}
}
@EventTarget
public void h(EventPreMotion eventPreMotion) {
int elytraSlot = getHotbarSlotOfItem();
if (elytra.getCurrentValue() && elytraSlot != -1) {
if (MoveUtility.isMoving() && !Helper.mc.player.onGround && Helper.mc.player.fallDistance >= 0.1) {
MoveUtility.setMotion(speed2.getCurrentValue());
}
}
}
@Override
public void onEnable() {
oldSpeed = 0;
super.onEnable();
}
public boolean strafes() {
if (Helper.mc.player == null)
return false;
if (Helper.mc.player.isSneaking()) {
return false;
}
if (Helper.mc.player.isInLava()) {
return false;
}
if (Helper.mc.player.capabilities.isFlying) {
return false;
}
return true;
}
public static double calculateSpeed(EventMove move) {
Minecraft mc = Minecraft.getMinecraft();
boolean fromGround = mc.player.onGround;
boolean toGround = mc.player.onGround;
boolean jump = mc.player.motionZ > 0;
float speedAttributes = getAIMoveSpeed(mc.player);
float n6 = mc.player.isPotionActive(MobEffects.JUMP_BOOST) && mc.player.isHandActive() ? 0.88f : (float) (oldSpeed > 0.32 && mc.player.isHandActive() ? 0.88 : 0.91F);
float n7 = (float) (0.16277135908603668 / Math.pow(n6, 3.01));
float n8;
if (fromGround) {
n8 = speedAttributes * n7;
if (jump) {
n8 += 0.2f;
}
} else {
n8 = 0.0255f;
}
boolean noslow = false;
double max2 = oldSpeed + n8;
double max = 0.0;
if (mc.player.isHandActive() && !jump) {
double n10 = oldSpeed + n8 * 0.25;
double motionY2 = mc.player.motionY;
if (motionY2 != 0.0 && Math.abs(motionY2) < 0.08) {
n10 += 0.055;
}
if (max2 > (max = Math.max(0.043, n10))) {
noslow = true;
++noSlowTicks;
} else {
noSlowTicks = Math.max(noSlowTicks - 1, 0);
}
} else {
noSlowTicks = 0;
}
if (noSlowTicks > 3) {
max2 = max - 0.019;
} else {
max2 = Math.max(noslow ? 0 : 0.25, max2) - (counter++ % 2 == 0 ? 0.001 : 0.002);
}
contextFriction = n6;
if (!toGround && !fromGround) {
needSwap = true;
} else {
prevSprint = false;
}
if (toGround && fromGround) {
needSprintState = false;
}
return max2;
}
public static void postMove(double horizontal) {
oldSpeed = horizontal * contextFriction;
}
public static float getAIMoveSpeed(EntityPlayer contextPlayer) {
boolean prevSprinting = contextPlayer.isSprinting();
contextPlayer.setSprinting(false);
float speed = contextPlayer.getAIMoveSpeed() * 1.3f;
contextPlayer.setSprinting(prevSprinting);
return speed;
}
private int getHotbarSlotOfItem() {
for (ItemStack stack : Helper.mc.player.getArmorInventoryList()) {
if (stack.getItem() == Items.ELYTRA) {
return -2;
}
}
int slot = -1;
for (int i = 0; i < 36; i++) {
ItemStack s = Helper.mc.player.inventory.getStackInSlot(i);
if (s.getItem() == Items.ELYTRA) {
slot = i;
break;
}
}
if (slot < 9 && slot != -1) {
slot = slot + 36;
}
return slot;
}
}
MoveUtility:
package toffifree.toffi.game.utils.movement;
import net.minecraft.block.BlockAir;
import net.minecraft.block.BlockLiquid;
import net.minecraft.init.MobEffects;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import toffifree.toffi.game.event.EventTarget;
import toffifree.toffi.game.event.events.impl.player.EventPreMotion;
import toffifree.toffi.game.utils.Helper;
import toffifree.toffi.game.module.impl.Movement.Strafe;
public class MoveUtility implements Helper {
public static double getDifferenceOf(final float num1,final float num2) {
return Math.abs(num2-num1) > Math.abs(num1-num2) ? Math.abs(num1-num2) : Math.abs(num2-num1);
}
public static double getDifferenceOf(final double num1,final double num2) {
return Math.abs(num2-num1) > Math.abs(num1-num2) ? Math.abs(num1-num2) : Math.abs(num2-num1);
}
public static double getDifferenceOf(final int num1,final int num2) {
return Math.abs(num2-num1) > Math.abs(num1-num2) ? Math.abs(num1-num2) : Math.abs(num2-num1);
}
@EventTarget
public void e(EventPreMotion move, float speed) {
float yaw = mc.player.rotationYaw;
float forward = mc.player.movementInput.moveForward;
float strafe = mc.player.movementInput.moveStrafe;
if (forward != 0) {
if (strafe > 0) {
yaw += (forward > 0 ? -45 : 45);
} else if (strafe < 0) {
yaw += (forward > 0 ? 45 : -45);
}
strafe = 0;
if (forward > 0) {
forward = 1;
} else if (forward < 0) {
forward = -1;
}
}
mc.player.motionX = ((forward * speed * Math.cos(Math.toRadians(yaw + 90))
+ strafe * speed * Math.sin(Math.toRadians(yaw + 90))));
mc.player.motionZ = ((forward * speed * Math.sin(Math.toRadians(yaw + 90))
- strafe * speed * Math.cos(Math.toRadians(yaw + 90))));
}
public static void setMotion(double motion) {
double forward = mc.player.movementInput.moveForward;
double strafe = mc.player.movementInput.moveStrafe;
float yaw = mc.player.rotationYaw;
if (forward == 0 && strafe == 0) {
mc.player.motionX = 0;
mc.player.motionZ = 0;
Strafe.oldSpeed = 0;
} else {
if (forward != 0) {
if (strafe > 0) {
yaw += (float) (forward > 0 ? -45 : 45);
} else if (strafe < 0) {
yaw += (float) (forward > 0 ? 45 : -45);
}
strafe = 0;
if (forward > 0) {
forward = 1;
} else if (forward < 0) {
forward = -1;
}
}
mc.player.motionX = forward * motion * Math.cos(Math.toRadians(yaw + 90.0f))
+ strafe * motion * Math.sin(Math.toRadians(yaw + 90.0f));
mc.player.motionZ = forward * motion * Math.sin(Math.toRadians(yaw + 90.0f))
- strafe * motion * Math.cos(Math.toRadians(yaw + 90.0f));
}
}
public static boolean reason(boolean water) {
boolean critWater = water && mc.world.getBlockState(new BlockPos(mc.player.posX, mc.player.posY, mc.player.posZ)).getBlock()
instanceof BlockLiquid && mc.world.getBlockState(new BlockPos(mc.player.posX, mc.player.posY + 1,
mc.player.posZ)).getBlock() instanceof BlockAir;
return mc.player.isPotionActive(MobEffects.BLINDNESS) || mc.player.isOnLadder()
|| mc.player.isInWater() && !critWater || mc.player.isInWeb || mc.player.capabilities.isFlying;
}
public static boolean isBlockAboveHead() {
AxisAlignedBB axisAlignedBB = new AxisAlignedBB(mc.player.posX - 0.3, mc.player.posY + mc.player.getEyeHeight(),
mc.player.posZ + 0.3, mc.player.posX + 0.3, mc.player.posY + (!mc.player.onGround ? 1.5 : 2.5),
mc.player.posZ - 0.3);
return !mc.world.getCollisionBoxes(mc.player, axisAlignedBB).isEmpty();
}
public static boolean isMoving() {
return mc.player.movementInput.moveStrafe != 0.0 || mc.player.movementInput.moveForward != 0.0;
}
public static float getDirection() {
float rotationYaw = mc.player.rotationYaw;
float strafeFactor = 0f;
if (mc.player.movementInput.moveForward > 0)
strafeFactor = 1;
if (mc.player.movementInput.moveForward < 0)
strafeFactor = -1;
if (strafeFactor == 0) {
if (mc.player.movementInput.moveStrafe > 0)
rotationYaw -= 90;
if (mc.player.movementInput.moveStrafe < 0)
rotationYaw += 90;
} else {
if (mc.player.movementInput.moveStrafe > 0)
rotationYaw -= 45 * strafeFactor;
if (mc.player.movementInput.moveStrafe < 0)
rotationYaw += 45 * strafeFactor;
}
if (strafeFactor < 0)
rotationYaw -= 180;
return (float) Math.toRadians(rotationYaw);
}
public static void setStrafe(double motion) {
if (!isMoving()) return;
double radians = getDirection();
mc.player.motionX = -Math.sin(radians) * motion;
mc.player.motionZ = Math.cos(radians) * motion;
}
public static float getMotion() {
return (float) Math.sqrt(mc.player.motionX * mc.player.motionX + mc.player.motionZ * mc.player.motionZ);
}
}