Начинающий
- Статус
- Оффлайн
- Регистрация
- 22 Сен 2023
- Сообщения
- 51
- Реакции
- 0
- Выберите загрузчик игры
- Forge
- Прочие моды
На удивление я почти ничего не менял с 2024 года, но они по наше время работают, это показывает какой античит фантайма дырявый и его можно абузить при желании
Видеоматериал:
Java:
package Anova.modules.impl.movement;
import Anova.events.Event;
import Anova.events.impl.player.EventMotion;
import Anova.events.impl.player.EventUpdate;
import Anova.modules.Category;
import Anova.modules.Function;
import Anova.modules.FunctionModule;
import Anova.modules.settings.imp.BooleanOption;
import Anova.modules.settings.imp.ModeSetting;
import Anova.modules.settings.imp.SliderSetting;
import Anova.util.ClientUtil;
import Anova.util.math.RayTraceUtil;
import Anova.util.movement.MoveUtil;
import net.minecraft.block.Block;
import net.minecraft.block.SlabBlock;
import net.minecraft.block.BlockState;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.item.ArmorStandEntity;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraft.item.BlockItem;
import net.minecraft.item.ElytraItem;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.network.play.client.CEntityActionPacket;
import net.minecraft.network.play.client.CPlayerTryUseItemPacket;
import net.minecraft.util.Hand;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Vector3d;
@FunctionModule(
name = "Speed",
type = Category.Movement
)
public class SpeedFunction extends Function {
private final ModeSetting spdMode = new ModeSetting("Режими спидов", "FT Полублок", "FT Entity", "FT Полублок");
private final BooleanOption truee = new BooleanOption("Автоматически ставить", true)
.setVisible(() -> spdMode.is("FT Полублок"));
private final SliderSetting boostFactorSetting = new SliderSetting("Boost Factor", 1.0f, 3.0f, 0.1f, 1.0f)
.setVisible(() -> spdMode.is("FT Полублок2") || spdMode.is("FT Entity"));
private final SliderSetting boostDurationSetting = new SliderSetting("Boost Duration (т.)", 1, 10, 1, 1)
.setVisible(() -> spdMode.is("FT Полублок2"));
private final ModeSetting boostmodeft = new ModeSetting("Режим буста", "Anova 1.4(2025 december)", "Anova 1.4(2025 december)", "Radix(2024 may)","Anova 1.4(2025 january)")
.setVisible(() -> spdMode.is("FT Полублок"));
private enum FTPolublockState {
IDLE,
JUMPED,
BOOSTING
}
private FTPolublockState ftState = FTPolublockState.IDLE;
private int ftTickDelay = 0;
private float defaultJumpMovementFactor = 0.02f;
boolean enable;
private boolean blockPlaced = false;
private long lastPlaceTime = 0;
private boolean metafly = false;
private boolean isProcessingMeta = false;
public SpeedFunction() {
this.addsetting(spdMode, truee,boostmodeft, boostFactorSetting, boostDurationSetting);
}
@Override
public void onDisable() {
mc.gameSettings.keyBindSneak.setPressed(false);
mc.player.jumpMovementFactor = defaultJumpMovementFactor;
ftState = FTPolublockState.IDLE;
enable = false;
super.onDisable();
}
@Override
protected boolean onEnable() {
enable = true;
defaultJumpMovementFactor = mc.player.jumpMovementFactor;
ftState = FTPolublockState.IDLE;
return super.onEnable();
}
@Override
public void onEventModule(Event event) {
if (spdMode.is("FT Полублок")) {
if (event instanceof EventUpdate) {
updateFTPolublock();
}
if (event instanceof EventMotion eventMotion) {
if (truee.get()) {
placeBlocks(eventMotion);
}
}
}
if (spdMode.is("FT Entity") && event instanceof EventUpdate) {
handleFuntime();
}
}
/**
* --- Режим FT Полублок ---
*/
private void updateFTPolublock() {
if (!enable) return;
switch (ftState) {
case IDLE:
if (mc.player.isOnGround() && (mc.player.getPosY() % 1.0 == 0.5) && !mc.player.isInWater()) { //&& !mc.player.isSprinting()
mc.gameSettings.keyBindSneak.setPressed(true);
mc.player.setSprinting(false);
if(boostmodeft.is("Radix(2024 may)")) {
for (float i = 1.0F; i <= 5.0F; ++i) {
mc.player.jump();
}
} else if(boostmodeft.is("Anova 1.4(2025 december)")) {
mc.player.jump();
}else if(boostmodeft.is("Anova 1.4(2025 january)")) {
multiJumpInstant(5);
}
mc.gameSettings.keyBindSneak.setPressed(false);
ftState = FTPolublockState.JUMPED;
ftTickDelay = 1;
}
break;
case JUMPED:
if (--ftTickDelay <= 0) {
applyFTBoost();
ftState = FTPolublockState.BOOSTING;
ftTickDelay = boostDurationSetting.getValue().intValue();
}
break;
case BOOSTING:
if (--ftTickDelay <= 0) {
resetFTBoost();
ftState = FTPolublockState.IDLE;
}
break;
}
}
/**
* Применяет буст для режима FT Полублок:
*/
private void applyFTBoost() {
if (mc.player == null) return;
if (mc.player.moveForward == 0 && mc.player.moveStrafing == 0) return;
Vector3d motion = mc.player.getMotion();
double speed = Math.sqrt(motion.x * motion.x + motion.z * motion.z);
double maxSpeed = 0.45;
if (speed < 0.01 || speed >= maxSpeed) return;
double boost = boostFactorSetting.getValue().floatValue();
double add = Math.min(boost, maxSpeed - speed);
motion = new Vector3d(
motion.x + (motion.x / speed) * add,
motion.y,
motion.z + (motion.z / speed) * add
);
mc.player.setMotion(motion);
if (!mc.player.isOnGround()) {
mc.player.jumpMovementFactor = 0.03f;
}
}
private void multiJumpInstant(int times) {
if (mc.player == null) return;
if (times <= 1) { mc.player.jump(); return; }
if (!mc.player.isOnGround()) return;
mc.player.jump();
if (mc.player.isSprinting()) {
float yawRad = (float) Math.toRadians(mc.player.rotationYaw);
double addX = -MathHelper.sin(yawRad) * 0.2D;
double addZ = MathHelper.cos(yawRad) * 0.2D;
int extra = times - 1;
mc.player.setMotion(
mc.player.getMotion().x + addX * extra,
mc.player.getMotion().y,
mc.player.getMotion().z + addZ * extra
);
}
}
/**
* Сбрасывает параметры движения до стандартного значения.
*/
private void resetFTBoost() {
mc.player.jumpMovementFactor = defaultJumpMovementFactor;
}
/**
* --- Автоматическая постановка блоков ---
*/
public void placeBlocks(EventMotion motion) {
if (enable) {
if (blockPlaced && System.currentTimeMillis() - lastPlaceTime < 900) {
return;
}
if (mc.player.isOnGround() && !mc.player.isInWater() && !mc.gameSettings.keyBindJump.isKeyDown()) {
mc.player.jump();
}
if (mc.player.fallDistance > 0.15f && mc.player.fallDistance < 1) {
int lastSlot = mc.player.inventory.currentItem;
int slabSlot = -1;
for (int i = 0; i < 9; i++) {
ItemStack s = mc.player.inventory.getStackInSlot(i);
if (s.getItem() instanceof BlockItem) {
Block block = ((BlockItem) s.getItem()).getBlock();
if (block instanceof SlabBlock) {
slabSlot = i;
break;
}
}
}
if (slabSlot == -1) return;
mc.player.inventory.currentItem = slabSlot;
motion.setPitch(83.39993f);
motion.setYaw(mc.player.rotationYaw);
BlockRayTraceResult rayResult = (BlockRayTraceResult) RayTraceUtil.rayTrace(4, motion.getYaw(), motion.getPitch(), mc.player);
BlockPos targetPos = rayResult.getPos();
BlockState state = mc.world.getBlockState(targetPos);
if (mc.world.getBlockState(targetPos).isAir()) {
return;
}
mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
mc.player.swingArm(Hand.MAIN_HAND);
mc.playerController.processRightClickBlock(mc.player, mc.world, Hand.MAIN_HAND, rayResult);
mc.player.inventory.currentItem = lastSlot;
blockPlaced = true;
lastPlaceTime = System.currentTimeMillis();
}
}
}
/**
* --- Режим FT Entity ---
*/
private void handleFuntime() {
if (MoveUtil.isMoving()) {
AxisAlignedBB aabb = mc.player.getBoundingBox().grow(0.05);
int armorStands = mc.world.getEntitiesWithinAABB(ArmorStandEntity.class, aabb).size();
boolean canBoost = armorStands > 1 || mc.world.getEntitiesWithinAABB(LivingEntity.class, aabb).size() > 1;
if (canBoost && !mc.player.isOnGround()) {
mc.player.jumpMovementFactor = 0.10f;
float boost = boostFactorSetting.getValue().floatValue();
mc.player.getMotion().x *= boost;
mc.player.getMotion().z *= boost;
}
}
}
}
Видеоматериал:
Последнее редактирование: