FullNoClip + FullFlight + NoJumpDelay + KnockbackPlus (#253)

Co-authored-by: Cloudburst <18114966+C10udburst@users.noreply.github.com>
This commit is contained in:
yorik100
2023-06-14 14:17:55 +02:00
committed by GitHub
parent 9353e618cd
commit 27174e76d3
9 changed files with 482 additions and 0 deletions

View File

@@ -80,6 +80,10 @@
- SoundLocator
- Server Finder (Ported from [MeteorAdditions](https://github.com/JFronny/MeteorAdditions))
- TreeAura (Taken from an [unmerged PR](https://github.com/MeteorDevelopment/meteor-client/pull/2138))
- FullNoClip
- FullFlight (Antikick bypasses by [CCblueX](https://github.com/CCblueX) and [LiveOverflow](https://github.com/LiveOverflow))
- NoJumpDelay
- KnockbackPlus
### Modifications
- NoRender

View File

@@ -48,6 +48,10 @@ dependencies {
configurations.implementation.extendsFrom(configurations.extraLibs)
}
loom {
accessWidenerPath = file("src/main/resources/meteor-client.accesswidener")
}
processResources {
inputs.property "version", project.version

View File

@@ -78,6 +78,10 @@ public class MeteorRejectsAddon extends MeteorAddon {
modules.add(new SkeletonESP());
modules.add(new SoundLocator());
modules.add(new TreeAura());
modules.add(new FullNoClip());
modules.add(new FullFlight());
modules.add(new NoJumpDelay());
modules.add(new KnockbackPlus());
// Commands
Commands.add(new CenterCommand());

View File

@@ -0,0 +1,238 @@
package anticope.rejects.modules;
import anticope.rejects.MeteorRejectsAddon;
import com.google.common.collect.Streams;
import java.util.stream.Stream;
import meteordevelopment.meteorclient.events.entity.player.PlayerMoveEvent;
import meteordevelopment.meteorclient.events.packets.PacketEvent;
import meteordevelopment.meteorclient.mixininterface.IVec3d;
import meteordevelopment.meteorclient.mixin.PlayerMoveC2SPacketAccessor;
import meteordevelopment.meteorclient.mixin.ClientPlayerEntityAccessor;
import meteordevelopment.meteorclient.systems.modules.Module;
import meteordevelopment.meteorclient.settings.*;
import meteordevelopment.meteorclient.utils.Utils;
import meteordevelopment.meteorclient.utils.player.PlayerUtils;
import meteordevelopment.orbit.EventHandler;
import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket;
import net.minecraft.entity.Entity;
import net.minecraft.block.AbstractBlock;
import net.minecraft.util.math.Box;
import net.minecraft.util.shape.VoxelShape;
public class FullFlight extends Module {
private final SettingGroup sgGeneral = settings.getDefaultGroup();
private final SettingGroup sgAntiKick = settings.createGroup("Anti Kick");
private final Setting<Double> speed = sgGeneral.add(new DoubleSetting.Builder()
.name("speed")
.description("Your speed when flying.")
.defaultValue(0.3)
.min(0.0)
.sliderMax(10)
.build()
);
private final Setting<Boolean> verticalSpeedMatch = sgGeneral.add(new BoolSetting.Builder()
.name("vertical-speed-match")
.description("Matches your vertical speed to your horizontal speed, otherwise uses vanilla ratio.")
.defaultValue(false)
.build()
);
private final Setting<AntiKickMode> antiKickMode = sgAntiKick.add(new EnumSetting.Builder<AntiKickMode>()
.name("mode")
.description("The mode for anti kick.")
.defaultValue(AntiKickMode.PaperNew)
.build()
);
public FullFlight() {
super(MeteorRejectsAddon.CATEGORY, "fullflight", "FullFlight.");
}
private double getDir() {
double dir = 0;
if (Utils.canUpdate()) {
dir = mc.player.getYaw() + ((mc.player.forwardSpeed < 0) ? 180 : 0);
if (mc.player.sidewaysSpeed > 0) {
dir += -90F * ((mc.player.forwardSpeed < 0) ? -0.5F : ((mc.player.forwardSpeed > 0) ? 0.5F : 1F));
} else if (mc.player.sidewaysSpeed < 0) {
dir += 90F * ((mc.player.forwardSpeed < 0) ? -0.5F : ((mc.player.forwardSpeed > 0) ? 0.5F : 1F));
}
}
return dir;
}
private double calculateGround() {
for(double ground = mc.player.getY(); ground > 0D; ground -= 0.05) {
Box box = mc.player.getBoundingBox();
Box adjustedBox = box.offset(0, ground - mc.player.getY(), 0);
Stream<VoxelShape> blockCollisions = Streams.stream(mc.world.getBlockCollisions(mc.player, adjustedBox));
if(blockCollisions.findAny().isPresent()) return ground + 0.05;
}
return 0F;
}
// Copied from ServerPlayNetworkHandler#isEntityOnAir
private boolean isEntityOnAir(Entity entity) {
return entity.getWorld().getStatesInBox(entity.getBoundingBox().expand(0.0625).stretch(0.0, -0.55, 0.0)).allMatch(AbstractBlock.AbstractBlockState::isAir);
}
private int delayLeft = 20;
private double lastPacketY = Double.MAX_VALUE;
private boolean shouldFlyDown(double currentY, double lastY) {
if (currentY >= lastY) {
return true;
} else return lastY - currentY < 0.03130D;
}
private void antiKickPacket(PlayerMoveC2SPacket packet, double currentY) {
// maximum time we can be "floating" is 80 ticks, so 4 seconds max
if (this.delayLeft <= 0 && this.lastPacketY != Double.MAX_VALUE &&
shouldFlyDown(currentY, this.lastPacketY) && isEntityOnAir(mc.player)) {
// actual check is for >= -0.03125D, but we have to do a bit more than that
// due to the fact that it's a bigger or *equal* to, and not just a bigger than
((PlayerMoveC2SPacketAccessor) packet).setY(lastPacketY - 0.03130D);
lastPacketY -= 0.03130D;
delayLeft = 20;
} else {
lastPacketY = currentY;
if (!isEntityOnAir(mc.player))
delayLeft = 20;
}
if (delayLeft > 0) delayLeft--;
}
@EventHandler
private void onSendPacket(PacketEvent.Send event) {
if (mc.player.getVehicle() == null || !(event.packet instanceof PlayerMoveC2SPacket packet) || antiKickMode.get() != AntiKickMode.PaperNew) return;
double currentY = packet.getY(Double.MAX_VALUE);
if (currentY != Double.MAX_VALUE) {
antiKickPacket(packet, currentY);
} else {
// if the packet is a LookAndOnGround packet or an OnGroundOnly packet then we need to
// make it a Full packet or a PositionAndOnGround packet respectively, so it has a Y value
PlayerMoveC2SPacket fullPacket;
if (packet.changesLook()) {
fullPacket = new PlayerMoveC2SPacket.Full(
mc.player.getX(),
mc.player.getY(),
mc.player.getZ(),
packet.getYaw(0),
packet.getPitch(0),
packet.isOnGround()
);
} else {
fullPacket = new PlayerMoveC2SPacket.PositionAndOnGround(
mc.player.getX(),
mc.player.getY(),
mc.player.getZ(),
packet.isOnGround()
);
}
event.cancel();
antiKickPacket(fullPacket, mc.player.getY());
mc.getNetworkHandler().sendPacket(fullPacket);
}
}
private int floatingTicks = 0;
@EventHandler
private void onPlayerMove(PlayerMoveEvent event) {
if (antiKickMode.get() == AntiKickMode.PaperNew) {
// Resend movement packets
((ClientPlayerEntityAccessor) mc.player).setTicksSinceLastPositionPacketSent(20);
}
if (floatingTicks >= 20)
{
switch (antiKickMode.get()) {
case New -> {
Box box = mc.player.getBoundingBox();
Box adjustedBox = box.offset(0, -0.4, 0);
Stream<VoxelShape> blockCollisions = Streams.stream(mc.world.getBlockCollisions(mc.player, adjustedBox));
if(blockCollisions.findAny().isPresent()) break;
mc.getNetworkHandler().sendPacket(new PlayerMoveC2SPacket.PositionAndOnGround(mc.player.getX(), mc.player.getY() - 0.4, mc.player.getZ(), mc.player.isOnGround()));
mc.getNetworkHandler().sendPacket(new PlayerMoveC2SPacket.PositionAndOnGround(mc.player.getX(), mc.player.getY(), mc.player.getZ(), mc.player.isOnGround()));
break;
}
case Old -> {
Box box = mc.player.getBoundingBox();
Box adjustedBox = box.offset(0, -0.4, 0);
Stream<VoxelShape> blockCollisions = Streams.stream(mc.world.getBlockCollisions(mc.player, adjustedBox));
if(blockCollisions.findAny().isPresent()) break;
double ground = calculateGround();
double groundExtra = ground + 0.1D;
for(double posY = mc.player.getY(); posY > groundExtra; posY -= 4D) {
mc.getNetworkHandler().sendPacket(new PlayerMoveC2SPacket.PositionAndOnGround(mc.player.getX(), posY, mc.player.getZ(), true));
if(posY - 4D < groundExtra) break; // Prevent next step
}
mc.getNetworkHandler().sendPacket(new PlayerMoveC2SPacket.PositionAndOnGround(mc.player.getX(), groundExtra, mc.player.getZ(), true));
for(double posY = groundExtra; posY < mc.player.getY(); posY += 4D) {
mc.getNetworkHandler().sendPacket(new PlayerMoveC2SPacket.PositionAndOnGround(mc.player.getX(), posY, mc.player.getZ(), mc.player.isOnGround()));
if(posY + 4D > mc.player.getY()) break; // Prevent next step
}
mc.getNetworkHandler().sendPacket(new PlayerMoveC2SPacket.PositionAndOnGround(mc.player.getX(), mc.player.getY(), mc.player.getZ(), mc.player.isOnGround()));
break;
}
}
floatingTicks = 0;
}
if (PlayerUtils.isMoving()) {
double dir = getDir();
double xDir = Math.cos(Math.toRadians(dir + 90));
double zDir = Math.sin(Math.toRadians(dir + 90));
((IVec3d) event.movement).setXZ(xDir * speed.get(), zDir * speed.get());
}
else {
((IVec3d) event.movement).setXZ(0, 0);
}
float ySpeed = 0;
if (mc.options.jumpKey.isPressed())
ySpeed += speed.get();
if (mc.options.sneakKey.isPressed())
ySpeed -= speed.get();
((IVec3d) event.movement).setY(verticalSpeedMatch.get() ? ySpeed : ySpeed/2);
if (floatingTicks < 20)
if (ySpeed >= -0.1)
floatingTicks++;
else if (antiKickMode.get() == AntiKickMode.New)
floatingTicks = 0;
}
public enum AntiKickMode {
Old,
New,
PaperNew,
None
}
}

View File

@@ -0,0 +1,80 @@
package anticope.rejects.modules;
import anticope.rejects.MeteorRejectsAddon;
import meteordevelopment.meteorclient.events.world.CollisionShapeEvent;
import meteordevelopment.meteorclient.events.entity.player.PlayerMoveEvent;
import meteordevelopment.meteorclient.mixininterface.IVec3d;
import meteordevelopment.meteorclient.systems.modules.Module;
import meteordevelopment.meteorclient.settings.*;
import meteordevelopment.meteorclient.utils.Utils;
import meteordevelopment.meteorclient.utils.player.PlayerUtils;
import meteordevelopment.orbit.EventHandler;
import net.minecraft.util.shape.VoxelShapes;
public class FullNoClip extends Module {
private final SettingGroup sgGeneral = settings.getDefaultGroup();
private final Setting<Double> speed = sgGeneral.add(new DoubleSetting.Builder()
.name("speed")
.description("Your speed when noclipping.")
.defaultValue(0.3)
.min(0.0)
.sliderMax(10)
.build()
);
private final Setting<Boolean> verticalSpeedMatch = sgGeneral.add(new BoolSetting.Builder()
.name("vertical-speed-match")
.description("Matches your vertical speed to your horizontal speed, otherwise uses vanilla ratio.")
.defaultValue(false)
.build()
);
public FullNoClip() {
super(MeteorRejectsAddon.CATEGORY, "fullnoclip", "FullNoClip.");
}
@EventHandler
private void onCollision(CollisionShapeEvent event) {
if (mc.player.getVehicle() == null)
event.shape = VoxelShapes.empty();
}
private double getDir() {
double dir = 0;
if (Utils.canUpdate()) {
dir = mc.player.getYaw() + ((mc.player.forwardSpeed < 0) ? 180 : 0);
if (mc.player.sidewaysSpeed > 0) {
dir += -90F * ((mc.player.forwardSpeed < 0) ? -0.5F : ((mc.player.forwardSpeed > 0) ? 0.5F : 1F));
} else if (mc.player.sidewaysSpeed < 0) {
dir += 90F * ((mc.player.forwardSpeed < 0) ? -0.5F : ((mc.player.forwardSpeed > 0) ? 0.5F : 1F));
}
}
return dir;
}
@EventHandler
private void onPlayerMove(PlayerMoveEvent event) {
if (PlayerUtils.isMoving()) {
double dir = getDir();
double xDir = Math.cos(Math.toRadians(dir + 90));
double zDir = Math.sin(Math.toRadians(dir + 90));
((IVec3d) event.movement).setXZ(xDir * speed.get(), zDir * speed.get());
}
else {
((IVec3d) event.movement).setXZ(0, 0);
}
float ySpeed = 0;
if (mc.options.jumpKey.isPressed())
ySpeed += speed.get();
if (mc.options.sneakKey.isPressed())
ySpeed -= speed.get();
((IVec3d) event.movement).setY(verticalSpeedMatch.get() ? ySpeed : ySpeed/2);
}
}

View File

@@ -0,0 +1,54 @@
package anticope.rejects.modules;
import anticope.rejects.MeteorRejectsAddon;
import meteordevelopment.meteorclient.events.packets.PacketEvent;
import meteordevelopment.meteorclient.mixininterface.IPlayerInteractEntityC2SPacket;
import meteordevelopment.meteorclient.mixininterface.IVec3d;
import meteordevelopment.meteorclient.settings.BoolSetting;
import meteordevelopment.meteorclient.settings.Setting;
import meteordevelopment.meteorclient.settings.SettingGroup;
import meteordevelopment.meteorclient.systems.modules.Categories;
import meteordevelopment.meteorclient.systems.modules.Module;
import meteordevelopment.meteorclient.systems.modules.Modules;
import meteordevelopment.meteorclient.systems.modules.combat.KillAura;
import meteordevelopment.orbit.EventHandler;
import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.network.packet.c2s.play.PlayerInteractEntityC2SPacket;
import net.minecraft.network.packet.c2s.play.ClientCommandC2SPacket;
public class KnockbackPlus extends Module {
private final SettingGroup sgGeneral = settings.getDefaultGroup();
private final Setting<Boolean> ka = sgGeneral.add(new BoolSetting.Builder()
.name("only-killaura")
.description("Only perform more KB when using killaura.")
.defaultValue(false)
.build()
);
private PlayerInteractEntityC2SPacket attackPacket;
private boolean sendPackets;
private int sendTimer;
public KnockbackPlus() {
super(MeteorRejectsAddon.CATEGORY, "knockback-plus", "Performs more KB when you hit your target.");
}
@EventHandler
private void onSendPacket(PacketEvent.Send event) {
if (event.packet instanceof IPlayerInteractEntityC2SPacket packet && packet.getType() == PlayerInteractEntityC2SPacket.InteractType.ATTACK) {
Entity entity = packet.getEntity();
if (!(entity instanceof LivingEntity) || (entity != Modules.get().get(KillAura.class).getTarget() && ka.get())) return;
sendPacket();
}
}
@EventHandler
private void sendPacket() {
ClientCommandC2SPacket packet = new ClientCommandC2SPacket(mc.player, ClientCommandC2SPacket.Mode.START_SPRINTING);
mc.player.networkHandler.sendPacket(packet);
}
}

View File

@@ -0,0 +1,24 @@
package anticope.rejects.modules;
import anticope.rejects.MeteorRejectsAddon;
import meteordevelopment.meteorclient.events.world.TickEvent;
import meteordevelopment.meteorclient.mixin.LivingEntityAccessor;
import meteordevelopment.orbit.EventHandler;
import meteordevelopment.meteorclient.systems.modules.Categories;
import meteordevelopment.meteorclient.systems.modules.Module;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class NoJumpDelay extends Module {
public NoJumpDelay() {
super(MeteorRejectsAddon.CATEGORY, "no-jump-delay", "NoJumpDelay.");
}
@EventHandler
private void onTick(TickEvent.Post event) {
((LivingEntityAccessor) mc.player).setJumpCooldown(0);
}
}

View File

@@ -30,6 +30,7 @@
"meteor-rejects.mixins.json",
"meteor-rejects-meteor.mixins.json"
],
"accessWidener": "meteor-client.accesswidener",
"custom": {
"meteor-client:color": "227,0,0",
"github:sha": "${gh_hash}"

View File

@@ -0,0 +1,73 @@
accessWidener v1 named
accessible class net/minecraft/client/render/RenderLayer$OutlineMode
accessible class net/minecraft/client/particle/FireworksSparkParticle$Explosion
accessible class net/minecraft/network/packet/c2s/play/PlayerInteractEntityC2SPacket$InteractType
accessible class net/minecraft/network/packet/c2s/play/PlayerInteractEntityC2SPacket$InteractAtHandler
accessible class net/minecraft/network/packet/c2s/play/PlayerInteractEntityC2SPacket$InteractTypeHandler
accessible class net/minecraft/client/world/ClientChunkManager$ClientChunkMap
accessible field net/minecraft/client/network/AbstractClientPlayerEntity playerListEntry Lnet/minecraft/client/network/PlayerListEntry;
accessible field net/minecraft/client/model/ModelPart cuboids Ljava/util/List;
accessible field net/minecraft/client/model/ModelPart children Ljava/util/Map;
accessible class net/minecraft/client/model/ModelPart$Quad
accessible class net/minecraft/client/model/ModelPart$Vertex
accessible field net/minecraft/client/model/ModelPart$Cuboid sides [Lnet/minecraft/client/model/ModelPart$Quad;
accessible method net/minecraft/client/render/entity/PlayerEntityRenderer getArmPose (Lnet/minecraft/client/network/AbstractClientPlayerEntity;Lnet/minecraft/util/Hand;)Lnet/minecraft/client/render/entity/model/BipedEntityModel$ArmPose;
accessible method net/minecraft/client/render/entity/LivingEntityRenderer setupTransforms (Lnet/minecraft/entity/LivingEntity;Lnet/minecraft/client/util/math/MatrixStack;FFF)V
accessible method net/minecraft/client/render/entity/LivingEntityRenderer scale (Lnet/minecraft/entity/LivingEntity;Lnet/minecraft/client/util/math/MatrixStack;F)V
accessible method net/minecraft/client/render/entity/LivingEntityRenderer getAnimationProgress (Lnet/minecraft/entity/LivingEntity;F)F
accessible field net/minecraft/client/render/entity/model/AnimalModel headScaled Z
accessible field net/minecraft/client/render/entity/model/AnimalModel childHeadYOffset F
accessible field net/minecraft/client/render/entity/model/AnimalModel childHeadZOffset F
accessible field net/minecraft/client/render/entity/model/AnimalModel invertedChildHeadScale F
accessible field net/minecraft/client/render/entity/model/AnimalModel invertedChildBodyScale F
accessible field net/minecraft/client/render/entity/model/AnimalModel childBodyYOffset F
accessible method net/minecraft/client/render/entity/model/AnimalModel getHeadParts ()Ljava/lang/Iterable;
accessible method net/minecraft/client/render/entity/model/AnimalModel getBodyParts ()Ljava/lang/Iterable;
accessible field net/minecraft/client/render/entity/model/LlamaEntityModel head Lnet/minecraft/client/model/ModelPart;
accessible field net/minecraft/client/render/entity/model/LlamaEntityModel body Lnet/minecraft/client/model/ModelPart;
accessible field net/minecraft/client/render/entity/model/LlamaEntityModel rightHindLeg Lnet/minecraft/client/model/ModelPart;
accessible field net/minecraft/client/render/entity/model/LlamaEntityModel leftHindLeg Lnet/minecraft/client/model/ModelPart;
accessible field net/minecraft/client/render/entity/model/LlamaEntityModel rightFrontLeg Lnet/minecraft/client/model/ModelPart;
accessible field net/minecraft/client/render/entity/model/LlamaEntityModel leftFrontLeg Lnet/minecraft/client/model/ModelPart;
accessible field net/minecraft/client/render/entity/model/LlamaEntityModel rightChest Lnet/minecraft/client/model/ModelPart;
accessible field net/minecraft/client/render/entity/model/LlamaEntityModel leftChest Lnet/minecraft/client/model/ModelPart;
accessible field net/minecraft/client/render/entity/model/RabbitEntityModel leftHindLeg Lnet/minecraft/client/model/ModelPart;
accessible field net/minecraft/client/render/entity/model/RabbitEntityModel rightHindLeg Lnet/minecraft/client/model/ModelPart;
accessible field net/minecraft/client/render/entity/model/RabbitEntityModel leftHaunch Lnet/minecraft/client/model/ModelPart;
accessible field net/minecraft/client/render/entity/model/RabbitEntityModel rightHaunch Lnet/minecraft/client/model/ModelPart;
accessible field net/minecraft/client/render/entity/model/RabbitEntityModel body Lnet/minecraft/client/model/ModelPart;
accessible field net/minecraft/client/render/entity/model/RabbitEntityModel leftFrontLeg Lnet/minecraft/client/model/ModelPart;
accessible field net/minecraft/client/render/entity/model/RabbitEntityModel rightFrontLeg Lnet/minecraft/client/model/ModelPart;
accessible field net/minecraft/client/render/entity/model/RabbitEntityModel head Lnet/minecraft/client/model/ModelPart;
accessible field net/minecraft/client/render/entity/model/RabbitEntityModel rightEar Lnet/minecraft/client/model/ModelPart;
accessible field net/minecraft/client/render/entity/model/RabbitEntityModel leftEar Lnet/minecraft/client/model/ModelPart;
accessible field net/minecraft/client/render/entity/model/RabbitEntityModel tail Lnet/minecraft/client/model/ModelPart;
accessible field net/minecraft/client/render/entity/model/RabbitEntityModel nose Lnet/minecraft/client/model/ModelPart;
accessible field net/minecraft/client/render/entity/EndCrystalEntityRenderer SINE_45_DEGREES F
accessible field net/minecraft/client/render/entity/EndCrystalEntityRenderer core Lnet/minecraft/client/model/ModelPart;
accessible field net/minecraft/client/render/entity/EndCrystalEntityRenderer frame Lnet/minecraft/client/model/ModelPart;
accessible field net/minecraft/client/render/entity/EndCrystalEntityRenderer bottom Lnet/minecraft/client/model/ModelPart;
accessible field net/minecraft/client/render/entity/BoatEntityRenderer texturesAndModels Ljava/util/Map;
accessible class net/minecraft/client/render/MapRenderer$MapTexture
accessible field net/minecraft/client/render/MapRenderer$MapTexture texture Lnet/minecraft/client/texture/NativeImageBackedTexture;
accessible class net/minecraft/client/option/SimpleOption$Callbacks
accessible class net/minecraft/client/gui/screen/ingame/BeaconScreen$BeaconButtonWidget
accessible class net/minecraft/client/gui/screen/ingame/BeaconScreen$EffectButtonWidget
accessible class net/minecraft/client/resource/ResourceReloadLogger$ReloadState
accessible field net/minecraft/block/AbstractBlock collidable Z
accessible field net/minecraft/util/math/Direction HORIZONTAL [Lnet/minecraft/util/math/Direction;
accessible field net/minecraft/item/ItemGroups INVENTORY Lnet/minecraft/item/ItemGroup;