mirror of
https://github.com/Miasmusa/Shadow.git
synced 2025-04-21 17:00:52 -04:00
yes yes i agree with your statement
This commit is contained in:
parent
45713942a9
commit
36ae199bb2
65 changed files with 2063 additions and 127 deletions
bin
createRelease.shsrc/main
java/me/x150/sipprivate
feature
gui/clickgui
module
helper
mixin
resources
Binary file not shown.
|
@ -9,6 +9,11 @@ while [[ true ]]; do
|
|||
echo $line >> ./src/main/resources/changelogLatest.txt
|
||||
done
|
||||
|
||||
ver=`cat ./src/main/resources/version.txt`
|
||||
verNew=$((ver+1))
|
||||
echo "Version: $ver -> $verNew"
|
||||
echo -n "$verNew" > ./src/main/resources/version.txt
|
||||
|
||||
echo "Running build"
|
||||
export JAVA_HOME="$HOME/.jdks/openjdk-17.0.1/"
|
||||
./gradlew build
|
||||
|
|
|
@ -7,6 +7,7 @@ import me.x150.sipprivate.feature.gui.clickgui.element.Element;
|
|||
import me.x150.sipprivate.feature.gui.clickgui.element.impl.CategoryDisplay;
|
||||
import me.x150.sipprivate.feature.gui.clickgui.theme.Theme;
|
||||
import me.x150.sipprivate.feature.gui.clickgui.theme.impl.SipoverV1;
|
||||
import me.x150.sipprivate.feature.module.ModuleRegistry;
|
||||
import me.x150.sipprivate.feature.module.ModuleType;
|
||||
import me.x150.sipprivate.helper.event.EventType;
|
||||
import me.x150.sipprivate.helper.event.Events;
|
||||
|
@ -20,9 +21,9 @@ import net.minecraft.text.Text;
|
|||
import net.minecraft.util.math.MathHelper;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class ClickGUI extends Screen implements FastTickable {
|
||||
public static Theme theme = new SipoverV1();
|
||||
|
@ -94,7 +95,7 @@ public class ClickGUI extends Screen implements FastTickable {
|
|||
double x = 5;
|
||||
double y = 5;
|
||||
double tallestInTheRoom = 0;
|
||||
for (ModuleType value : ModuleType.values()) {
|
||||
for (ModuleType value : Arrays.stream(ModuleType.values()).sorted(Comparator.comparingLong(value -> -ModuleRegistry.getModules().stream().filter(module -> module.getModuleType() == value).count())).collect(Collectors.toList())) {
|
||||
CategoryDisplay cd = new CategoryDisplay(x, y, value);
|
||||
tallestInTheRoom = Math.max(tallestInTheRoom, cd.getHeight());
|
||||
x += cd.getWidth() + 5;
|
||||
|
|
|
@ -66,17 +66,15 @@ public class ModuleRegistry {
|
|||
modules.add(new Velocity());
|
||||
modules.add(new AntiAntiXray());
|
||||
modules.add(new PingSpoof());
|
||||
modules.add(new Nuker());
|
||||
modules.add(new AutoAttack());
|
||||
modules.add(new Deadmau5());
|
||||
modules.add(new SpinAutism());
|
||||
modules.add(new Spinner());
|
||||
modules.add(new AllowFormatCodes());
|
||||
modules.add(new InfChatLength());
|
||||
modules.add(new NoTitles());
|
||||
modules.add(new PortalGUI());
|
||||
modules.add(new Timer());
|
||||
modules.add(new XCarry());
|
||||
modules.add(new InstantMine());
|
||||
modules.add(new AirJump());
|
||||
modules.add(new AutoElytra());
|
||||
modules.add(new Blink());
|
||||
|
@ -93,6 +91,21 @@ public class ModuleRegistry {
|
|||
modules.add(new NoLevitation());
|
||||
modules.add(new NoPush());
|
||||
modules.add(new Step());
|
||||
modules.add(new Freecam());
|
||||
modules.add(new FreeLook());
|
||||
modules.add(new ItemByteSize());
|
||||
modules.add(new Zoom());
|
||||
modules.add(new AutoTool());
|
||||
modules.add(new BlockTagViewer());
|
||||
modules.add(new ClickNuke());
|
||||
modules.add(new FastUse());
|
||||
modules.add(new Flattener());
|
||||
modules.add(new GodBridge());
|
||||
modules.add(new InstantBreak());
|
||||
modules.add(new MassUse());
|
||||
modules.add(new NoBreakDelay());
|
||||
modules.add(new Nuker());
|
||||
modules.add(new Scaffold());
|
||||
}
|
||||
|
||||
public static List<Module> getModules() {
|
||||
|
|
|
@ -75,7 +75,7 @@ public class AimAssist extends Module {
|
|||
Entity le;
|
||||
|
||||
public AimAssist() {
|
||||
super("AimAssist", "Assists in pvp", ModuleType.COMBAT);
|
||||
super("AimAssist", "Automatically aims at people around you", ModuleType.COMBAT);
|
||||
attackPlayers.showIf(() -> !aimAtCombatPartner.getValue());
|
||||
attackHostile.showIf(() -> !aimAtCombatPartner.getValue());
|
||||
attackNeutral.showIf(() -> !aimAtCombatPartner.getValue());
|
||||
|
|
|
@ -11,12 +11,12 @@ import net.minecraft.util.hit.EntityHitResult;
|
|||
public class AutoAttack extends Module {
|
||||
|
||||
public AutoAttack() {
|
||||
super("AutoAttack", "kek", ModuleType.COMBAT);
|
||||
super("AutoAttack", "Automatically attacks the entity you're looking at", ModuleType.COMBAT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
if (CoffeeClientMain.client.crosshairTarget == null || !(CoffeeClientMain.client.crosshairTarget instanceof EntityHitResult) || CoffeeClientMain.client.player.getAttackCooldownProgress(0) < 1)
|
||||
if (!(CoffeeClientMain.client.crosshairTarget instanceof EntityHitResult) || CoffeeClientMain.client.player.getAttackCooldownProgress(0) < 1)
|
||||
return;
|
||||
CoffeeClientMain.client.interactionManager.attackEntity(CoffeeClientMain.client.player, ((EntityHitResult) CoffeeClientMain.client.crosshairTarget).getEntity());
|
||||
CoffeeClientMain.client.player.swingHand(Hand.MAIN_HAND);
|
||||
|
|
|
@ -27,7 +27,7 @@ public class Criticals extends Module {
|
|||
.get());
|
||||
|
||||
public Criticals() {
|
||||
super("Criticals", "dont enable this on hypixel", ModuleType.COMBAT);
|
||||
super("Criticals", "Makes you deal a perfect 10/10 crit every time", ModuleType.COMBAT);
|
||||
Events.registerEventHandler(EventType.PACKET_SEND, event1 -> {
|
||||
PacketEvent event = (PacketEvent) event1;
|
||||
if (CoffeeClientMain.client.player == null || CoffeeClientMain.client.getNetworkHandler() == null) {
|
||||
|
|
|
@ -126,7 +126,7 @@ public class Killaura extends Module {
|
|||
List<Entity> attacks = new ArrayList<>();
|
||||
|
||||
public Killaura() {
|
||||
super("Killaura", "anime", ModuleType.COMBAT);
|
||||
super("Killaura", "Automatically attacks entities around you", ModuleType.COMBAT);
|
||||
range.showIf(() -> !capRangeAtMax.getValue());
|
||||
delay.showIf(() -> !automaticDelay.getValue());
|
||||
multiLimit.showIf(() -> mode.getValue() == SelectMode.Multi && !attackOnlyCombatPartner.getValue());
|
||||
|
|
|
@ -86,7 +86,7 @@ public class AntiAntiXray extends Module {
|
|||
BlockPos latestGoal = null;
|
||||
|
||||
public AntiAntiXray() {
|
||||
super("AntiAntiXray", "fuck you antixray i hope you choke on garlic", ModuleType.EXPLOIT);
|
||||
super("AntiAntiXray", "Bypasses most anti xray plugins", ModuleType.EXPLOIT);
|
||||
//this.config.createPropGroup("Post", mineBaritone);
|
||||
}
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@ package me.x150.sipprivate.feature.module.impl.exploit;
|
|||
import me.x150.sipprivate.CoffeeClientMain;
|
||||
import me.x150.sipprivate.feature.config.DoubleSetting;
|
||||
import me.x150.sipprivate.feature.config.EnumSetting;
|
||||
import me.x150.sipprivate.feature.gui.notifications.Notification;
|
||||
import me.x150.sipprivate.feature.module.Module;
|
||||
import me.x150.sipprivate.feature.module.ModuleType;
|
||||
import me.x150.sipprivate.helper.Rotations;
|
||||
|
@ -13,6 +14,7 @@ import me.x150.sipprivate.helper.event.events.MouseEvent;
|
|||
import me.x150.sipprivate.helper.render.Renderer;
|
||||
import me.x150.sipprivate.helper.util.Utils;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import net.minecraft.entity.projectile.ProjectileUtil;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.Items;
|
||||
import net.minecraft.nbt.NbtCompound;
|
||||
|
@ -23,6 +25,7 @@ import net.minecraft.network.packet.c2s.play.CreativeInventoryActionC2SPacket;
|
|||
import net.minecraft.network.packet.c2s.play.PlayerInteractBlockC2SPacket;
|
||||
import net.minecraft.util.Hand;
|
||||
import net.minecraft.util.hit.BlockHitResult;
|
||||
import net.minecraft.util.hit.EntityHitResult;
|
||||
import net.minecraft.util.math.*;
|
||||
import net.minecraft.world.RaycastContext;
|
||||
|
||||
|
@ -57,7 +60,20 @@ public class CarpetBomb extends Module {
|
|||
});
|
||||
}
|
||||
|
||||
net.minecraft.entity.Entity eTarget = null;
|
||||
|
||||
void spawn() {
|
||||
if (mode.getValue() == Mode.Entity) {
|
||||
Vec3d goal = CoffeeClientMain.client.player.getRotationVec(1f).multiply(200);
|
||||
Box b = CoffeeClientMain.client.player.getBoundingBox().stretch(goal).expand(1, 1, 1);
|
||||
EntityHitResult ehr = ProjectileUtil.raycast(CoffeeClientMain.client.player, CoffeeClientMain.client.player.getCameraPosVec(0), CoffeeClientMain.client.player.getCameraPosVec(0)
|
||||
.add(goal), b, net.minecraft.entity.Entity::isAttackable, 200 * 200);
|
||||
if (ehr == null) {
|
||||
Notification.create(6000, "", true, "You aren't looking at an entity");
|
||||
return;
|
||||
}
|
||||
eTarget = ehr.getEntity();
|
||||
}
|
||||
for (int ox = -10; ox < 11; ox++) {
|
||||
for (int oz = -10; oz < 11; oz++) {
|
||||
Vec3d off = new Vec3d(ox, oz, 0);
|
||||
|
@ -79,6 +95,7 @@ public class CarpetBomb extends Module {
|
|||
float k = MathHelper.sin(f);
|
||||
yield new Vec3d(i * j, -k, h * j);
|
||||
}
|
||||
case Entity -> new Vec3d(0, 0, 0);
|
||||
};
|
||||
Entity e = new Entity(a, rot.normalize().multiply(speed.getValue()));
|
||||
positions.add(e);
|
||||
|
@ -92,16 +109,33 @@ public class CarpetBomb extends Module {
|
|||
return;
|
||||
}
|
||||
spawnTimer.reset();
|
||||
List<Entity> entities = new ArrayList<>(positions);
|
||||
if (entities.isEmpty()) {
|
||||
List<Entity> positionsCopy = new ArrayList<>(positions);
|
||||
if (positionsCopy.isEmpty()) {
|
||||
positions.clear();
|
||||
return;
|
||||
}
|
||||
Collections.shuffle(entities);
|
||||
Entity current = entities.get(0);
|
||||
entities.remove(0);
|
||||
Collections.shuffle(positionsCopy);
|
||||
Entity current = positionsCopy.get(0);
|
||||
positionsCopy.remove(0);
|
||||
Vec3d spawnPos = current.position;
|
||||
Vec3d vel = current.velocity;
|
||||
|
||||
if (mode.getValue() == Mode.Entity) {
|
||||
if (eTarget == null) {
|
||||
positions = positionsCopy;
|
||||
return;
|
||||
}
|
||||
Vec3d t = eTarget.getPos().add(0, eTarget.getHeight() / 2d, 0);
|
||||
Vec2f real = Rotations.getPitchYawFromOtherEntity(spawnPos, t);
|
||||
float f = real.x * 0.017453292F;
|
||||
float g = -real.y * 0.017453292F;
|
||||
float h = MathHelper.cos(g);
|
||||
float i = MathHelper.sin(g);
|
||||
float j = MathHelper.cos(f);
|
||||
float k = MathHelper.sin(f);
|
||||
vel = new Vec3d(i * j, -k, h * j).normalize().multiply(speed.getValue());
|
||||
}
|
||||
|
||||
ItemStack spawnEgg = new ItemStack(Items.BAT_SPAWN_EGG);
|
||||
NbtCompound entityTag = spawnEgg.getOrCreateSubNbt("EntityTag");
|
||||
entityTag.put("id", NbtString.of("minecraft:fireball"));
|
||||
|
@ -123,7 +157,7 @@ public class CarpetBomb extends Module {
|
|||
CoffeeClientMain.client.getNetworkHandler().sendPacket(set);
|
||||
CoffeeClientMain.client.getNetworkHandler().sendPacket(put);
|
||||
CoffeeClientMain.client.getNetworkHandler().sendPacket(clr);
|
||||
positions = entities;
|
||||
positions = positionsCopy;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -152,7 +186,6 @@ public class CarpetBomb extends Module {
|
|||
@Override
|
||||
public void onWorldRender(MatrixStack matrices) {
|
||||
if (isDebuggerEnabled()) {
|
||||
|
||||
for (Entity position : new ArrayList<>(this.positions)) {
|
||||
Vec3d p = position.position;
|
||||
Vec3d r = position.velocity.normalize();
|
||||
|
@ -160,6 +193,22 @@ public class CarpetBomb extends Module {
|
|||
Renderer.R3D.renderLine(p, p.add(r.multiply(5)), Color.RED, matrices);
|
||||
}
|
||||
}
|
||||
|
||||
if (mode.getValue() == Mode.Entity && eTarget != null && !positions.isEmpty()) {
|
||||
Vec3d t = Renderer.R2D.getScreenSpaceCoordinate(Utils.getInterpolatedEntityPosition(eTarget).add(0, eTarget.getHeight() / 2d, 0), matrices);
|
||||
if (Renderer.R2D.isOnScreen(t)) {
|
||||
Utils.TickManager.runOnNextRender(() -> {
|
||||
MatrixStack translated = Renderer.R3D.getEmptyMatrixStack();
|
||||
translated.push();
|
||||
translated.translate(t.x, t.y, 0);
|
||||
translated.multiply(new Quaternion(0f, 0f, (System.currentTimeMillis() % 2000) / 2000f * 360f, true));
|
||||
Renderer.R2D.renderQuad(translated, Color.RED, -.5, -10, .5, 10);
|
||||
Renderer.R2D.renderQuad(translated, Color.RED, -10, -.5, 10, .5);
|
||||
translated.pop();
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -168,7 +217,7 @@ public class CarpetBomb extends Module {
|
|||
}
|
||||
|
||||
public enum Mode {
|
||||
Relative, Focussed
|
||||
Relative, Focussed, Entity
|
||||
}
|
||||
|
||||
record Entity(Vec3d position, Vec3d velocity) {
|
||||
|
|
|
@ -38,7 +38,7 @@ public class PingSpoof extends Module {
|
|||
.get());
|
||||
|
||||
public PingSpoof() {
|
||||
super("PingSpoof", "spoofs pings", ModuleType.EXPLOIT);
|
||||
super("PingSpoof", "Tells the server you have extreme network lag", ModuleType.EXPLOIT);
|
||||
Events.registerEventHandler(EventType.PACKET_SEND, event1 -> {
|
||||
if (!this.isEnabled()) {
|
||||
return;
|
||||
|
|
|
@ -12,7 +12,7 @@ import net.minecraft.client.util.math.MatrixStack;
|
|||
public class Deadmau5 extends Module {
|
||||
|
||||
public Deadmau5() {
|
||||
super("Deadmau5", "deadmau5 ears for everyone", ModuleType.FUN);
|
||||
super("Deadmau5", "Shows the Deadmau5 skin ears for every player", ModuleType.FUN);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -17,7 +17,7 @@ import net.minecraft.util.Hand;
|
|||
|
||||
import java.util.Objects;
|
||||
|
||||
public class SpinAutism extends Module {
|
||||
public class Spinner extends Module {
|
||||
|
||||
final double r = 0;
|
||||
// final SliderValue speed = (SliderValue) this.config.create("Timeout", 5, 0, 100, 0).description("How much to wait between rotations");
|
||||
|
@ -30,8 +30,8 @@ public class SpinAutism extends Module {
|
|||
.get());
|
||||
int timeout = 0;
|
||||
|
||||
public SpinAutism() {
|
||||
super("SpinAutism", "Spins around like a maniac and throws whatever you have", ModuleType.FUN);
|
||||
public Spinner() {
|
||||
super("Spinner", "Spins around like a maniac and throws whatever you have", ModuleType.FUN);
|
||||
}
|
||||
|
||||
@Override
|
|
@ -23,7 +23,7 @@ public class Timer extends Module {
|
|||
.get());
|
||||
|
||||
public Timer() {
|
||||
super("Timer", "changes client side tps", ModuleType.MISC);
|
||||
super("Timer", "Changes the speed of the game client side", ModuleType.MISC);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -11,11 +11,11 @@ import net.minecraft.network.packet.c2s.play.CloseHandledScreenC2SPacket;
|
|||
public class XCarry extends Module {
|
||||
|
||||
public XCarry() {
|
||||
super("XCarry", "lets you store stuff in your crafting grid", ModuleType.MISC);
|
||||
super("XCarry", "Allows you to store items in your crafting grid", ModuleType.MISC);
|
||||
Events.registerEventHandler(EventType.PACKET_SEND, event -> {
|
||||
if (!this.isEnabled()) return;
|
||||
PacketEvent pe = (PacketEvent) event;
|
||||
if (pe.getPacket() instanceof CloseHandledScreenC2SPacket packet) {
|
||||
if (pe.getPacket() instanceof CloseHandledScreenC2SPacket) {
|
||||
pe.setCancelled(true);
|
||||
}
|
||||
});
|
||||
|
|
|
@ -13,7 +13,7 @@ import net.minecraft.client.util.math.MatrixStack;
|
|||
public class AirJump extends Module {
|
||||
|
||||
public AirJump() {
|
||||
super("AirJump", "Jumps in le air", ModuleType.MOVEMENT);
|
||||
super("AirJump", "Allows you to jump mid air", ModuleType.MOVEMENT);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -27,7 +27,7 @@ public class Blink extends Module {
|
|||
.get());
|
||||
|
||||
public Blink() {
|
||||
super("Blink", "confuses chinese anticheats", ModuleType.MOVEMENT);
|
||||
super("Blink", "Delay or cancel outgoing packets", ModuleType.MOVEMENT);
|
||||
Events.registerEventHandler(EventType.PACKET_SEND, event1 -> {
|
||||
if (!this.isEnabled()) {
|
||||
return;
|
||||
|
|
|
@ -30,7 +30,7 @@ public class Boost extends Module {
|
|||
.get());
|
||||
|
||||
public Boost() {
|
||||
super("Boost", "rocket", ModuleType.MOVEMENT);
|
||||
super("Boost", "Boosts you into the air", ModuleType.MOVEMENT);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -24,7 +24,7 @@ public class EntityFly extends Module {
|
|||
Entity lastRide = null;
|
||||
|
||||
public EntityFly() {
|
||||
super("EntityFly", "boatfly but yes", ModuleType.MOVEMENT);
|
||||
super("EntityFly", "Allows you to fly with any entity", ModuleType.MOVEMENT);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -73,7 +73,11 @@ public class EntityFly extends Module {
|
|||
nz += ts * mx * -s;
|
||||
Vec3d nv3 = new Vec3d(nx, ny, nz);
|
||||
entityPos = entityPos.add(nv3.multiply(0.4));
|
||||
vehicle.updatePosition(entityPos.x, entityPos.y, entityPos.z);
|
||||
boolean isOnGround = CoffeeClientMain.client.world.getBlockState(vehicle.getBlockPos().down()).getMaterial().blocksMovement();
|
||||
double off = Math.random() / 5;
|
||||
if (isOnGround) off /= 2;
|
||||
else off -= 0.1;
|
||||
vehicle.updatePosition(entityPos.x, entityPos.y + off, entityPos.z); // vanilla bypass
|
||||
vehicle.setVelocity(0, 0, 0);
|
||||
vehicle.setYaw(client.player.getYaw());
|
||||
VehicleMoveC2SPacket p = new VehicleMoveC2SPacket(vehicle);
|
||||
|
|
|
@ -10,7 +10,7 @@ public class Hyperspeed extends Module {
|
|||
public DoubleSetting speed = this.config.create(new DoubleSetting.Builder(3).name("Speed").description("The speed multiplier to apply").min(1).max(10).precision(3).get());
|
||||
|
||||
public Hyperspeed() {
|
||||
super("Hyperspeed", "Makes you go weee extemely fast", ModuleType.MOVEMENT);
|
||||
super("Hyperspeed", "Gives you an extreme speed boost", ModuleType.MOVEMENT);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -12,7 +12,7 @@ import net.minecraft.client.util.math.MatrixStack;
|
|||
public class IgnoreWorldBorder extends Module {
|
||||
|
||||
public IgnoreWorldBorder() {
|
||||
super("IgnoreWorldBorder", "fuck you worldborder", ModuleType.MOVEMENT);
|
||||
super("IgnoreWorldBorder", "Lets you move through the worldborder", ModuleType.MOVEMENT);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -12,7 +12,7 @@ import net.minecraft.client.util.math.MatrixStack;
|
|||
public class InventoryWalk extends Module {
|
||||
|
||||
public InventoryWalk() {
|
||||
super("InventoryWalk", "walks while inventory is open", ModuleType.MOVEMENT);
|
||||
super("InventoryWalk", "Allows you to walk with an open inventory", ModuleType.MOVEMENT);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -32,7 +32,7 @@ public class Jesus extends Module {
|
|||
.get());
|
||||
|
||||
public Jesus() {
|
||||
super("Jesus", "water is no enemy anymore", ModuleType.MOVEMENT);
|
||||
super("Jesus", "Allows you to walk on water", ModuleType.MOVEMENT);
|
||||
// mode = this.config.create("Mode", "solid", "jump", "velocity", "solid", "legit");
|
||||
// mode.description("The mode of the module");
|
||||
velStrength.showIf(() -> mode.getValue() == Mode.Velocity);
|
||||
|
|
|
@ -54,7 +54,7 @@ public class LongJump extends Module {
|
|||
boolean jumped = false;
|
||||
|
||||
public LongJump() {
|
||||
super("LongJump", "Jumps a long distance", ModuleType.MOVEMENT);
|
||||
super("LongJump", "Jumps for a longer distance", ModuleType.MOVEMENT);
|
||||
glideVelocity.showIf(glide::getValue);
|
||||
applyStrength.showIf(keepApplying::getValue);
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@ import net.minecraft.client.util.math.MatrixStack;
|
|||
public class MoonGravity extends Module {
|
||||
|
||||
public MoonGravity() {
|
||||
super("MoonGravity", "what would you do if you'd be on the moon?", ModuleType.MOVEMENT);
|
||||
super("MoonGravity", "Imitates gravity on the moon", ModuleType.MOVEMENT);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -35,7 +35,7 @@ public class NoFall extends Module {
|
|||
.get());
|
||||
|
||||
public NoFall() {
|
||||
super("NoFall", "no fall damage", ModuleType.MOVEMENT);
|
||||
super("NoFall", "Prevents fall damage", ModuleType.MOVEMENT);
|
||||
|
||||
// mode = this.config.create("Mode", "OnGround", "OnGround", "Packet", "BreakFall");
|
||||
// mode.description("The mode of the module");
|
||||
|
|
|
@ -14,7 +14,7 @@ import net.minecraft.client.util.math.MatrixStack;
|
|||
public class NoJumpCooldown extends Module {
|
||||
|
||||
public NoJumpCooldown() {
|
||||
super("NoJumpCool", "hold it and jump beneath a 2 block space to confuse chinese anticheats", ModuleType.MOVEMENT);
|
||||
super("NoJumpCool", "Removes the jump cooldown", ModuleType.MOVEMENT);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -12,7 +12,7 @@ import net.minecraft.client.util.math.MatrixStack;
|
|||
public class NoLevitation extends Module {
|
||||
|
||||
public NoLevitation() {
|
||||
super("NoLevitation", "Dont care, keep malding", ModuleType.MOVEMENT);
|
||||
super("NoLevitation", "Prevents the levitation effect from working", ModuleType.MOVEMENT);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -12,7 +12,7 @@ import net.minecraft.client.util.math.MatrixStack;
|
|||
public class NoPush extends Module {
|
||||
|
||||
public NoPush() {
|
||||
super("NoPush", "be a rock", ModuleType.MOVEMENT);
|
||||
super("NoPush", "Prevents other entities from pushing you around", ModuleType.MOVEMENT);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -13,7 +13,7 @@ import net.minecraft.client.util.math.MatrixStack;
|
|||
public class Sprint extends Module {
|
||||
|
||||
public Sprint() {
|
||||
super("Sprint", "togglesprint for jewish people", ModuleType.MOVEMENT);
|
||||
super("Sprint", "Always sprints when you walk", ModuleType.MOVEMENT);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -23,7 +23,7 @@ public class Step extends Module {
|
|||
.get());
|
||||
|
||||
public Step() {
|
||||
super("Step", "spiders would like to learn this power", ModuleType.MOVEMENT);
|
||||
super("Step", "Allows you to step up full blocks", ModuleType.MOVEMENT);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -22,11 +22,10 @@ import java.awt.*;
|
|||
|
||||
public class Swing extends Module {
|
||||
static BlockPos swinging;
|
||||
static int t = 0;
|
||||
|
||||
|
||||
public Swing() {
|
||||
super("Swing", "swing around like an unnamed spider from comic books", ModuleType.MOVEMENT);
|
||||
super("Swing", "Swing around like spiderman", ModuleType.MOVEMENT);
|
||||
Events.registerEventHandler(EventType.MOUSE_EVENT, event -> {
|
||||
if (!this.isEnabled() || CoffeeClientMain.client.currentScreen != null) {
|
||||
return;
|
||||
|
|
|
@ -32,7 +32,7 @@ public class ESP extends Module {
|
|||
DoubleSetting range = this.config.create(new DoubleSetting.Builder(64).name("Range").description("How far to render the entities").min(32).max(128).precision(1).get());
|
||||
|
||||
public ESP() {
|
||||
super("ESP", "shows where shit is but its the walmart version", ModuleType.RENDER);
|
||||
super("ESP", "Shows where entities are", ModuleType.RENDER);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -0,0 +1,164 @@
|
|||
/*
|
||||
* This file is part of the atomic client distribution.
|
||||
* Copyright (c) 2021-2021 0x150.
|
||||
*/
|
||||
|
||||
package me.x150.sipprivate.feature.module.impl.render;
|
||||
|
||||
import me.x150.sipprivate.feature.config.BooleanSetting;
|
||||
import me.x150.sipprivate.feature.config.DoubleSetting;
|
||||
import me.x150.sipprivate.feature.config.EnumSetting;
|
||||
import me.x150.sipprivate.feature.module.Module;
|
||||
import me.x150.sipprivate.feature.module.ModuleType;
|
||||
import me.x150.sipprivate.helper.Keybind;
|
||||
import me.x150.sipprivate.helper.Rotations;
|
||||
import net.minecraft.client.option.Perspective;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class FreeLook extends Module {
|
||||
|
||||
public float newyaw, newpitch, oldyaw, oldpitch;
|
||||
// final BooleanValue hold = (BooleanValue) this.config.create("Hold", true).description("Whether or not to disable the module when the keybind is unpressed");
|
||||
// final BooleanValue enableAA = (BooleanValue) this.config.create("Enable Anti-Aim", false).description("hvh toggle rage nn noob");
|
||||
// final MultiValue aaMode = this.config.create("AA mode", "Spin", "Spin", "Jitter", "Sway");
|
||||
// final SliderValue aaSpeed = this.config.create("Anti-Aim Speed", 1f, 0.1f, 6f, 1);
|
||||
// final SliderValue jitterRange = this.config.create("Jitter Range", 90, 15, 90, 0);
|
||||
// final SliderValue swayRange = this.config.create("Sway Range", 45, 15, 60, 0);
|
||||
BooleanSetting hold = this.config.create(new BooleanSetting.Builder(true)
|
||||
.name("Hold")
|
||||
.description("Disables the module after you unpress the keybind")
|
||||
.get());
|
||||
BooleanSetting enableAA = this.config.create(new BooleanSetting.Builder(false)
|
||||
.name("Enable Anti-Aim")
|
||||
.description("Hvh toggle rage nn noob")
|
||||
.get());
|
||||
EnumSetting<AntiAimMode> aaMode = this.config.create(new EnumSetting.Builder<>(AntiAimMode.Spin)
|
||||
.name("AA Mode")
|
||||
.description("How to aim")
|
||||
.get());
|
||||
DoubleSetting aaSpeed = this.config.create(new DoubleSetting.Builder(1)
|
||||
.name("AA Speed")
|
||||
.description("How fast to aim")
|
||||
.min(0.1)
|
||||
.max(6)
|
||||
.precision(1)
|
||||
.get());
|
||||
DoubleSetting jitterRange = this.config.create(new DoubleSetting.Builder(90)
|
||||
.name("Jitter range")
|
||||
.description("How far to jitter")
|
||||
.min(15)
|
||||
.max(90)
|
||||
.precision(0)
|
||||
.get());
|
||||
DoubleSetting swayRange = this.config.create(new DoubleSetting.Builder(45)
|
||||
.name("Sway range")
|
||||
.description("How far to sway")
|
||||
.min(15)
|
||||
.max(60)
|
||||
.precision(0)
|
||||
.get());
|
||||
Perspective before = Perspective.FIRST_PERSON;
|
||||
Keybind kb;
|
||||
int jittertimer = 0;
|
||||
int swayYaw = 0;
|
||||
public FreeLook() {
|
||||
super("FreeLook", "The lunar freelook but without the restrictions", ModuleType.RENDER);
|
||||
aaMode.showIf(enableAA::getValue);
|
||||
aaSpeed.showIf(() -> aaMode.getValue() != AntiAimMode.Jitter && enableAA.getValue());
|
||||
jitterRange.showIf(() -> aaMode.getValue() == AntiAimMode.Jitter && enableAA.getValue());
|
||||
swayRange.showIf(() -> aaMode.getValue() == AntiAimMode.Sway && enableAA.getValue());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
if (kb == null) {
|
||||
return;
|
||||
}
|
||||
if (!kb.isPressed() && hold.getValue()) {
|
||||
this.setEnabled(false);
|
||||
}
|
||||
|
||||
Rotations.setClientPitch(newpitch);
|
||||
Rotations.setClientYaw(newyaw);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enable() {
|
||||
kb = new Keybind((int) (keybind.getValue() + 0));
|
||||
before = client.options.getPerspective();
|
||||
oldyaw = Objects.requireNonNull(client.player).getYaw();
|
||||
oldpitch = client.player.getPitch();
|
||||
newyaw = client.player.getYaw();
|
||||
if (enableAA.getValue()) {
|
||||
newpitch = 90;
|
||||
} else {
|
||||
newpitch = client.player.getPitch();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disable() {
|
||||
client.options.setPerspective(before);
|
||||
Objects.requireNonNull(client.player).setYaw(oldyaw);
|
||||
client.player.setPitch(oldpitch);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getContext() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWorldRender(MatrixStack matrices) {
|
||||
client.options.setPerspective(Perspective.THIRD_PERSON_BACK);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHudRender() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFastTick() {
|
||||
if (!enableAA.getValue()) {
|
||||
return;
|
||||
}
|
||||
switch (aaMode.getValue()) {
|
||||
case Spin -> newyaw = (float) MathHelper.wrapDegrees(newyaw + aaSpeed.getValue());
|
||||
case Jitter -> {
|
||||
int temp = (int) (jitterRange.getValue() + 0);
|
||||
if (jittertimer == 1) {
|
||||
temp *= -1;
|
||||
}
|
||||
if (jittertimer >= 1) {
|
||||
jittertimer = -1;
|
||||
}
|
||||
jittertimer++;
|
||||
newyaw = MathHelper.wrapDegrees(client.player.getYaw() + 180 + temp);
|
||||
}
|
||||
case Sway -> {
|
||||
int temp = swayYaw;
|
||||
if (temp >= swayRange.getValue() * 2) {
|
||||
temp = (int) (swayRange.getValue() + 0) - (swayYaw - (int) (swayRange.getValue() * 2));
|
||||
} else {
|
||||
temp = (int) (swayRange.getValue() * -1) + swayYaw;
|
||||
}
|
||||
if (swayYaw >= swayRange.getValue() * 4) {
|
||||
swayYaw = 0;
|
||||
}
|
||||
swayYaw += aaSpeed.getValue();
|
||||
newyaw = MathHelper.wrapDegrees(client.player.getYaw() + 180 + temp);
|
||||
}
|
||||
}
|
||||
Objects.requireNonNull(client.getNetworkHandler()).sendPacket(new PlayerMoveC2SPacket.LookAndOnGround(newyaw, newpitch, Objects.requireNonNull(client.player).isOnGround()));
|
||||
}
|
||||
|
||||
public enum AntiAimMode {
|
||||
Spin, Jitter, Sway
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,107 @@
|
|||
/*
|
||||
* This file is part of the atomic client distribution.
|
||||
* Copyright (c) 2021-2021 0x150.
|
||||
*/
|
||||
|
||||
package me.x150.sipprivate.feature.module.impl.render;
|
||||
|
||||
import me.x150.sipprivate.feature.config.DoubleSetting;
|
||||
import me.x150.sipprivate.feature.module.Module;
|
||||
import me.x150.sipprivate.feature.module.ModuleType;
|
||||
import me.x150.sipprivate.helper.event.EventType;
|
||||
import me.x150.sipprivate.helper.event.Events;
|
||||
import me.x150.sipprivate.helper.event.events.PacketEvent;
|
||||
import me.x150.sipprivate.helper.event.events.PlayerNoClipQueryEvent;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import net.minecraft.entity.EntityPose;
|
||||
import net.minecraft.network.packet.c2s.play.PlayerInputC2SPacket;
|
||||
import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket;
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class Freecam extends Module {
|
||||
|
||||
// final SliderValue speed = (SliderValue) this.config.create("Speed", 1, 0, 10, 1).description("The speed to fly with");
|
||||
DoubleSetting speed = this.config.create(new DoubleSetting.Builder(1)
|
||||
.name("Speed")
|
||||
.description("The speed to fly with")
|
||||
.min(0)
|
||||
.max(10)
|
||||
.precision(1)
|
||||
.get());
|
||||
Vec3d startloc;
|
||||
float pitch = 0f;
|
||||
float yaw = 0f;
|
||||
boolean flewBefore;
|
||||
|
||||
public Freecam() {
|
||||
super("Freecam", "Imitates spectator without you having permission to use it", ModuleType.RENDER);
|
||||
Events.registerEventHandler(EventType.PACKET_SEND, event1 -> {
|
||||
if (!this.isEnabled()) {
|
||||
return;
|
||||
}
|
||||
PacketEvent event = (PacketEvent) event1;
|
||||
if (event.getPacket() instanceof PlayerMoveC2SPacket) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
if (event.getPacket() instanceof PlayerInputC2SPacket) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
});
|
||||
Events.registerEventHandler(EventType.NOCLIP_QUERY, event -> {
|
||||
if (!this.isEnabled() || ((PlayerNoClipQueryEvent) event).getPlayer().isOnGround()) {
|
||||
return;
|
||||
}
|
||||
((PlayerNoClipQueryEvent) event).setNoClipState(PlayerNoClipQueryEvent.NoClipState.ACTIVE);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
Objects.requireNonNull(client.player).getAbilities().setFlySpeed((float) (this.speed.getValue() + 0f) / 20f);
|
||||
client.player.getAbilities().flying = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enable() {
|
||||
startloc = Objects.requireNonNull(client.player).getPos();
|
||||
pitch = client.player.getPitch();
|
||||
yaw = client.player.getYaw();
|
||||
client.gameRenderer.setRenderHand(false);
|
||||
flewBefore = client.player.getAbilities().flying;
|
||||
client.player.setOnGround(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disable() {
|
||||
if (startloc != null) {
|
||||
Objects.requireNonNull(client.player).updatePosition(startloc.x, startloc.y, startloc.z);
|
||||
}
|
||||
startloc = null;
|
||||
Objects.requireNonNull(client.player).setYaw(yaw);
|
||||
client.player.setPitch(pitch);
|
||||
yaw = pitch = 0f;
|
||||
client.gameRenderer.setRenderHand(true);
|
||||
client.player.getAbilities().flying = flewBefore;
|
||||
client.player.getAbilities().setFlySpeed(0.05f);
|
||||
client.player.setVelocity(0, 0, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getContext() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWorldRender(MatrixStack matrices) {
|
||||
Objects.requireNonNull(client.player).setSwimming(false);
|
||||
client.player.setPose(EntityPose.STANDING);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHudRender() {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
package me.x150.sipprivate.feature.module.impl.render;
|
||||
|
||||
import me.x150.sipprivate.feature.module.Module;
|
||||
import me.x150.sipprivate.feature.module.ModuleType;
|
||||
import me.x150.sipprivate.helper.ByteCounter;
|
||||
import me.x150.sipprivate.helper.event.EventType;
|
||||
import me.x150.sipprivate.helper.event.Events;
|
||||
import me.x150.sipprivate.helper.event.events.LoreQueryEvent;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
|
||||
import java.text.StringCharacterIterator;
|
||||
|
||||
public class ItemByteSize extends Module {
|
||||
public ItemByteSize() {
|
||||
super("ItemByteSize", "Shows the size of an item in bytes on the tooltip", ModuleType.RENDER);
|
||||
Events.registerEventHandler(EventType.LORE_QUERY, event -> {
|
||||
if (!this.isEnabled()) {
|
||||
return;
|
||||
}
|
||||
LoreQueryEvent e = (LoreQueryEvent) event;
|
||||
ByteCounter inst = ByteCounter.instance();
|
||||
inst.reset();
|
||||
boolean error = false;
|
||||
try {
|
||||
e.getSource().getOrCreateNbt().write(inst);
|
||||
} catch (Exception ignored) {
|
||||
error = true;
|
||||
}
|
||||
long count = inst.getSize();
|
||||
String fmt;
|
||||
if (error) {
|
||||
fmt = "§cError";
|
||||
} else {
|
||||
fmt = humanReadableByteCountBin(count);
|
||||
}
|
||||
e.addClientLore("Size: " + fmt);
|
||||
});
|
||||
}
|
||||
|
||||
public static String humanReadableByteCountBin(long bytes) {
|
||||
long absB = bytes == Long.MIN_VALUE ? Long.MAX_VALUE : Math.abs(bytes);
|
||||
if (absB < 1024) {
|
||||
return bytes + " B";
|
||||
}
|
||||
long value = absB;
|
||||
StringCharacterIterator ci = new StringCharacterIterator("KMGTPE");
|
||||
for (int i = 40; i >= 0 && absB > 0xfffccccccccccccL >> i; i -= 10) {
|
||||
value >>= 10;
|
||||
ci.next();
|
||||
}
|
||||
value *= Long.signum(bytes);
|
||||
return String.format("%.1f %ciB", value / 1024.0, ci.current());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enable() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disable() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getContext() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWorldRender(MatrixStack matrices) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHudRender() {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -30,7 +30,7 @@ public class Tracers extends Module {
|
|||
BooleanSetting players = this.config.create(new BooleanSetting.Builder(true).name("Show players").description("Render players").get());
|
||||
|
||||
public Tracers() {
|
||||
super("Tracers", "shows where shit is", ModuleType.RENDER);
|
||||
super("Tracers", "Shows where entities are in relation to you", ModuleType.RENDER);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -0,0 +1,99 @@
|
|||
/*
|
||||
* This file is part of the atomic client distribution.
|
||||
* Copyright (c) 2021-2021 0x150.
|
||||
*/
|
||||
|
||||
package me.x150.sipprivate.feature.module.impl.render;
|
||||
|
||||
import me.x150.sipprivate.feature.config.BooleanSetting;
|
||||
import me.x150.sipprivate.feature.config.DoubleSetting;
|
||||
import me.x150.sipprivate.feature.module.Module;
|
||||
import me.x150.sipprivate.feature.module.ModuleRegistry;
|
||||
import me.x150.sipprivate.feature.module.ModuleType;
|
||||
import me.x150.sipprivate.helper.Keybind;
|
||||
import me.x150.sipprivate.helper.render.Renderer;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class Zoom extends Module {
|
||||
|
||||
static long enabledTime = 0;
|
||||
// SliderValue finalFov;
|
||||
// final BooleanValue hold = (BooleanValue) this.config.create("Hold", true).description("Whether or not to disable the module when the keybind is unpressed");
|
||||
DoubleSetting finalFov = this.config.create(new DoubleSetting.Builder(30)
|
||||
.name("FOV")
|
||||
.description("How far to zoom in")
|
||||
.min(1)
|
||||
.max(180)
|
||||
.precision(0)
|
||||
.get());
|
||||
BooleanSetting hold = this.config.create(new BooleanSetting.Builder(true)
|
||||
.name("Hold")
|
||||
.description("Disables the module when you unpress the keybind")
|
||||
.get());
|
||||
|
||||
Keybind kb;
|
||||
double msens = 0.5d;
|
||||
|
||||
public Zoom() {
|
||||
super("Zoom", "Imitates the spyglass with more options", ModuleType.RENDER);
|
||||
// finalFov = (SliderValue) this.config.create("Fov", 30, 1, 180, 0).description("The FOV to zoom into");
|
||||
}
|
||||
|
||||
static double easeOutBounce(double x) {
|
||||
return x < 0.5 ? 4 * x * x * x : 1 - Math.pow(-2 * x + 2, 3) / 2;
|
||||
}
|
||||
|
||||
public double getZoomValue(double vanilla) {
|
||||
long enabledFor = System.currentTimeMillis() - enabledTime;
|
||||
double prog = MathHelper.clamp(enabledFor / 100d, 0, 1);
|
||||
if (!Objects.requireNonNull(ModuleRegistry.getByClass(Zoom.class)).isEnabled()) {
|
||||
prog = Math.abs(1 - prog);
|
||||
}
|
||||
prog = easeOutBounce(prog);
|
||||
return Renderer.Util.lerp(vanilla, finalFov.getValue(), prog);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
if (kb == null) {
|
||||
return;
|
||||
}
|
||||
if (!kb.isPressed() && hold.getValue()) {
|
||||
this.setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enable() {
|
||||
msens = client.options.mouseSensitivity;
|
||||
client.options.mouseSensitivity = msens * (finalFov.getValue() / client.options.fov);
|
||||
// retard the keybind thing is always an int shut the fuck up
|
||||
kb = new Keybind((int) (keybind.getValue() + 0));
|
||||
enabledTime = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disable() {
|
||||
enabledTime = System.currentTimeMillis();
|
||||
client.options.mouseSensitivity = msens;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getContext() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWorldRender(MatrixStack matrices) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHudRender() {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,84 @@
|
|||
/*
|
||||
* This file is part of the atomic client distribution.
|
||||
* Copyright (c) 2021-2021 0x150.
|
||||
*/
|
||||
|
||||
package me.x150.sipprivate.feature.module.impl.world;
|
||||
|
||||
import me.x150.sipprivate.feature.module.Module;
|
||||
import me.x150.sipprivate.feature.module.ModuleRegistry;
|
||||
import me.x150.sipprivate.feature.module.ModuleType;
|
||||
import me.x150.sipprivate.mixin.IClientPlayerInteractionManagerAccessor;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.Items;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class AutoTool extends Module {
|
||||
|
||||
public AutoTool() {
|
||||
super("AutoTool", "Automatically selects the best tool for the job", ModuleType.WORLD);
|
||||
}
|
||||
|
||||
public static void pick(BlockState state) {
|
||||
float best = 1f;
|
||||
int index = -1;
|
||||
int optAirIndex = -1;
|
||||
for (int i = 0; i < 9; i++) {
|
||||
ItemStack stack = Objects.requireNonNull(client.player).getInventory().getStack(i);
|
||||
if (stack.getItem() == Items.AIR) {
|
||||
optAirIndex = i;
|
||||
}
|
||||
float s = stack.getMiningSpeedMultiplier(state);
|
||||
if (s > best) {
|
||||
index = i;
|
||||
}
|
||||
}
|
||||
if (index != -1) {
|
||||
client.player.getInventory().selectedSlot = index;
|
||||
} else {
|
||||
if (optAirIndex != -1) {
|
||||
client.player.getInventory().selectedSlot = optAirIndex; // to prevent tools from getting damaged by accident, switch to air if we didn't find anything
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
if (Objects.requireNonNull(client.interactionManager).isBreakingBlock() && !Objects.requireNonNull(ModuleRegistry.getByClass(Nuker.class))
|
||||
.isEnabled()) {
|
||||
BlockPos breaking = ((IClientPlayerInteractionManagerAccessor) client.interactionManager).getCurrentBreakingPos();
|
||||
BlockState bs = Objects.requireNonNull(client.world).getBlockState(breaking);
|
||||
pick(bs);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enable() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disable() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getContext() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWorldRender(MatrixStack matrices) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHudRender() {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,149 @@
|
|||
/*
|
||||
* This file is part of the atomic client distribution.
|
||||
* Copyright (c) 2021-2021 0x150.
|
||||
*/
|
||||
|
||||
package me.x150.sipprivate.feature.module.impl.world;
|
||||
|
||||
import me.x150.sipprivate.feature.module.Module;
|
||||
import me.x150.sipprivate.feature.module.ModuleType;
|
||||
import me.x150.sipprivate.helper.font.FontRenderers;
|
||||
import me.x150.sipprivate.helper.render.CustomColor;
|
||||
import me.x150.sipprivate.helper.render.Renderer;
|
||||
import me.x150.sipprivate.helper.util.Transitions;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import net.minecraft.state.property.Property;
|
||||
import net.minecraft.util.hit.BlockHitResult;
|
||||
import net.minecraft.util.hit.HitResult;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
public class BlockTagViewer extends Module {
|
||||
|
||||
List<Entry> entries = new ArrayList<>();
|
||||
float mw = 0;
|
||||
|
||||
public BlockTagViewer() {
|
||||
super("BlockTagViewer", "Shows data about the viewed block", ModuleType.WORLD);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
HitResult hr = client.crosshairTarget;
|
||||
if (hr instanceof BlockHitResult bhr) {
|
||||
BlockPos bp = bhr.getBlockPos();
|
||||
BlockState state = Objects.requireNonNull(client.world).getBlockState(bp);
|
||||
List<String> c = new ArrayList<>();
|
||||
for (Property<?> property : state.getProperties()) {
|
||||
String v = property.getName() + ": " + state.get(property).toString();
|
||||
c.add(v);
|
||||
}
|
||||
|
||||
for (String s : c) {
|
||||
if (entries.stream().noneMatch(entry -> entry.v.equalsIgnoreCase(s))) {
|
||||
entries.add(new Entry(s));
|
||||
}
|
||||
}
|
||||
for (Entry entry : new ArrayList<>(entries)) {
|
||||
if (c.stream().noneMatch(entry.v::equals)) {
|
||||
entry.removed = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enable() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disable() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getContext() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWorldRender(MatrixStack matrices) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFastTick() {
|
||||
for (Entry entry : new ArrayList<>(entries)) {
|
||||
double c = 0.05;
|
||||
if (entry.removed) {
|
||||
c *= -1;
|
||||
}
|
||||
entry.animProg += c;
|
||||
entry.animProg = MathHelper.clamp(entry.animProg, 0, 1);
|
||||
if (entry.animProg == 0 && entry.removed) {
|
||||
entries.remove(entry);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
double e(double x) {
|
||||
return x < 0.5 ? 4 * x * x * x : 1 - Math.pow(-2 * x + 2, 3) / 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHudRender() {
|
||||
List<Entry> l = new ArrayList<>(entries);
|
||||
l.sort(Comparator.comparingDouble(value -> -FontRenderers.getMono().getStringWidth(value.v)));
|
||||
entries = l;
|
||||
if (l.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
float w = client.getWindow().getScaledWidth() / 2f;
|
||||
float h = client.getWindow().getScaledHeight() / 2f;
|
||||
MatrixStack s = new MatrixStack();
|
||||
s.push();
|
||||
s.translate(w, h, 0);
|
||||
float r = 0;
|
||||
for (Entry entry : l) {
|
||||
if (!entry.removed) {
|
||||
r = FontRenderers.getMono().getStringWidth(entry.v) + 4;
|
||||
break;
|
||||
}
|
||||
}
|
||||
mw = (float) Transitions.transition(mw, r, 7);
|
||||
float height = 0;
|
||||
for (Entry entry : l.toArray(new Entry[0])) {
|
||||
height += 10 * e(entry.animProg);
|
||||
}
|
||||
s.translate(0, -height, 0);
|
||||
for (Entry entry : l.toArray(new Entry[0])) {
|
||||
s.push();
|
||||
double prog = e(entry.animProg);
|
||||
double c = prog * (FontRenderers.getMono().getMarginHeight() + 1);
|
||||
s.scale(1, (float) prog, 1);
|
||||
Renderer.R2D.renderQuad(s, new CustomColor(0, 0, 0, (int) (prog * 100)), 0, 0, mw, FontRenderers.getMono().getMarginHeight() + 1);
|
||||
FontRenderers.getMono().drawString(s, entry.v, 1, 0.5f, new CustomColor(255, 255, 255, (int) (prog * 255)).getRGB());
|
||||
s.pop();
|
||||
s.translate(0, c, 0);
|
||||
}
|
||||
s.pop();
|
||||
}
|
||||
|
||||
static class Entry {
|
||||
|
||||
public final String v;
|
||||
public double animProg = 0;
|
||||
public boolean removed = false;
|
||||
|
||||
public Entry(String v) {
|
||||
this.v = v;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -44,7 +44,7 @@ public class Boom extends Module {
|
|||
long lastFired = 0L;
|
||||
|
||||
public Boom() {
|
||||
super("Boom", "Spawns fireballs whereever you click", ModuleType.WORLD);
|
||||
super("Boom", "Spawns fireballs wherever you click", ModuleType.WORLD);
|
||||
Events.registerEventHandler(EventType.MOUSE_EVENT, event -> {
|
||||
if (!this.isEnabled() || CoffeeClientMain.client.currentScreen != null) {
|
||||
return;
|
||||
|
|
|
@ -0,0 +1,120 @@
|
|||
/*
|
||||
* This file is part of the atomic client distribution.
|
||||
* Copyright (c) 2021-2021 0x150.
|
||||
*/
|
||||
|
||||
package me.x150.sipprivate.feature.module.impl.world;
|
||||
|
||||
import me.x150.sipprivate.CoffeeClientMain;
|
||||
import me.x150.sipprivate.feature.config.BooleanSetting;
|
||||
import me.x150.sipprivate.feature.config.DoubleSetting;
|
||||
import me.x150.sipprivate.feature.module.Module;
|
||||
import me.x150.sipprivate.feature.module.ModuleType;
|
||||
import me.x150.sipprivate.helper.event.EventType;
|
||||
import me.x150.sipprivate.helper.event.Events;
|
||||
import me.x150.sipprivate.helper.event.events.MouseEvent;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import net.minecraft.util.hit.HitResult;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class ClickNuke extends Module {
|
||||
|
||||
// final SliderValue rangeX = (SliderValue) this.config.create("Range X", 5, 1, 10, 0).description("How big the affected radius should be in the X dimension");
|
||||
// final SliderValue rangeZ = (SliderValue) this.config.create("Range Z", 5, 1, 10, 0).description("How big the affected radius should be in the Z dimension");
|
||||
// final SliderValue rangeY = (SliderValue) this.config.create("Range Y", 5, 1, 10, 0).description("How big the affected radius should be in the Y dimension");
|
||||
// final BooleanValue destroy = (BooleanValue) this.config.create("Destroy particles", false).description("Makes particles appear when a block gets destroyed");
|
||||
DoubleSetting rangeX = this.config.create(new DoubleSetting.Builder(5)
|
||||
.name("Range X")
|
||||
.description("How big of an area to fill in the X direction")
|
||||
.min(1)
|
||||
.max(10)
|
||||
.precision(0)
|
||||
.get());
|
||||
DoubleSetting rangeY = this.config.create(new DoubleSetting.Builder(5)
|
||||
.name("Range Y")
|
||||
.description("How big of an area to fill in the Y direction")
|
||||
.min(1)
|
||||
.max(10)
|
||||
.precision(0)
|
||||
.get());
|
||||
DoubleSetting rangeZ = this.config.create(new DoubleSetting.Builder(5)
|
||||
.name("Range Z")
|
||||
.description("How big of an area to fill in the Z direction")
|
||||
.min(1)
|
||||
.max(10)
|
||||
.precision(0)
|
||||
.get());
|
||||
BooleanSetting destroy = this.config.create(new BooleanSetting.Builder(false)
|
||||
.name("Destroy particles")
|
||||
.description("makes the block breaking particles appear")
|
||||
.get());
|
||||
|
||||
|
||||
public ClickNuke() {
|
||||
super("ClickNuke", "Nukes whatever you click at, requires /fill permissions", ModuleType.WORLD);
|
||||
Events.registerEventHandler(EventType.MOUSE_EVENT, event -> {
|
||||
if (!this.isEnabled()) {
|
||||
return;
|
||||
}
|
||||
if (client.player == null) {
|
||||
return;
|
||||
}
|
||||
MouseEvent event1 = (MouseEvent) event;
|
||||
if (event1.getButton() == 0 && event1.getAction() == 1) {
|
||||
mousePressed();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void mousePressed() {
|
||||
if (client.currentScreen != null) {
|
||||
return;
|
||||
}
|
||||
HitResult hr = Objects.requireNonNull(client.player).raycast(200d, 0f, true);
|
||||
Vec3d pos1 = hr.getPos();
|
||||
BlockPos pos = new BlockPos(pos1);
|
||||
int startY = MathHelper.clamp(r(pos.getY() - rangeY.getValue()), CoffeeClientMain.client.world.getBottomY(), CoffeeClientMain.client.world.getTopY());
|
||||
int endY = MathHelper.clamp(r(pos.getY() + rangeY.getValue()), CoffeeClientMain.client.world.getBottomY(), CoffeeClientMain.client.world.getTopY());
|
||||
String cmd = "/fill " + r(pos.getX() - rangeX.getValue()) + " " + startY + " " + r(pos.getZ() - rangeZ.getValue()) + " " + r(pos.getX() + rangeX.getValue()) + " " + endY + " " + r(pos.getZ() + rangeZ.getValue()) + " " + "minecraft:air" + (destroy.getValue() ? " destroy" : "");
|
||||
System.out.println(cmd);
|
||||
client.player.sendChatMessage(cmd);
|
||||
}
|
||||
|
||||
int r(double v) {
|
||||
return (int) Math.round(v);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enable() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disable() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getContext() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWorldRender(MatrixStack matrices) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHudRender() {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
/*
|
||||
* This file is part of the atomic client distribution.
|
||||
* Copyright (c) 2021-2021 0x150.
|
||||
*/
|
||||
|
||||
package me.x150.sipprivate.feature.module.impl.world;
|
||||
|
||||
import me.x150.sipprivate.feature.module.Module;
|
||||
import me.x150.sipprivate.feature.module.ModuleType;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
|
||||
public class FastUse extends Module {
|
||||
|
||||
public FastUse() {
|
||||
super("FastUse", "Removes the use delay", ModuleType.WORLD);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enable() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disable() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getContext() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWorldRender(MatrixStack matrices) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHudRender() {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,173 @@
|
|||
package me.x150.sipprivate.feature.module.impl.world;
|
||||
|
||||
import me.x150.sipprivate.feature.config.BooleanSetting;
|
||||
import me.x150.sipprivate.feature.config.DoubleSetting;
|
||||
import me.x150.sipprivate.feature.module.Module;
|
||||
import me.x150.sipprivate.feature.module.ModuleRegistry;
|
||||
import me.x150.sipprivate.feature.module.ModuleType;
|
||||
import me.x150.sipprivate.helper.Rotations;
|
||||
import me.x150.sipprivate.helper.render.Renderer;
|
||||
import me.x150.sipprivate.helper.util.Utils;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import net.minecraft.item.BlockItem;
|
||||
import net.minecraft.util.Hand;
|
||||
import net.minecraft.util.hit.BlockHitResult;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.Direction;
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
public class Flattener extends Module {
|
||||
final List<RenderEntry> renders = new ArrayList<>();
|
||||
final double range = 8;
|
||||
// final BooleanValue makeSame = (BooleanValue) this.config.create("Make same", false).description("Make the floor the block you're holding, no matter what.");
|
||||
// final BooleanValue asyncPlaceBreak = (BooleanValue) this.config.create("Async place / break", true).description("Whether or not to place blocks and break them at the same time");
|
||||
// final BooleanValue breakSides = (BooleanValue) this.config.create("Break sides", true).description("Whether or not to clear the area so you can walk on it");
|
||||
// final SliderValue amountPerTick = (SliderValue) this.config.create("Amount Per Tick", 3, 1, 20, 0).description("How many actions to do / tick");
|
||||
BooleanSetting makeSame = this.config.create(new BooleanSetting.Builder(false)
|
||||
.name("Make same")
|
||||
.description("Makes the floor the same material you're holding")
|
||||
.get());
|
||||
BooleanSetting asyncPlaceBreak = this.config.create(new BooleanSetting.Builder(true)
|
||||
.name("Async place / break")
|
||||
.description("Does block breaking and placing at the same time")
|
||||
.get());
|
||||
BooleanSetting breakSides = this.config.create(new BooleanSetting.Builder(true)
|
||||
.name("Break sides")
|
||||
.description("Clears the area 3 blocks up so you can walk into it")
|
||||
.get());
|
||||
DoubleSetting amountPerTick = this.config.create(new DoubleSetting.Builder(3)
|
||||
.name("Amount per tick")
|
||||
.description("How many actions to do per tick")
|
||||
.min(1)
|
||||
.max(20)
|
||||
.precision(0)
|
||||
.get());
|
||||
Vec3d origin = null;
|
||||
int prevSlot = -1;
|
||||
boolean toBreakEmptyBefore = false;
|
||||
|
||||
public Flattener() {
|
||||
super("Flattener", "Makes everything around you flat, good for making a floor or base", ModuleType.WORLD);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
Vec3d eyep = client.player.getEyePos();
|
||||
double rangeMid = range / 2d;
|
||||
List<BlockPos> toPlace = new ArrayList<>();
|
||||
List<BlockPos> toBreak = new ArrayList<>();
|
||||
Block inHand = null;
|
||||
if (client.player.getInventory().getStack(prevSlot).getItem() instanceof BlockItem e) {
|
||||
inHand = e.getBlock();
|
||||
}
|
||||
for (double x = -rangeMid; x < rangeMid + 1; x++) {
|
||||
for (double z = -rangeMid; z < rangeMid + 1; z++) {
|
||||
Vec3d offset = eyep.add(x, 0, z);
|
||||
Vec3d actual = new Vec3d(offset.x + .5, origin.y - .5, offset.z + .5);
|
||||
if (actual.distanceTo(eyep) > client.interactionManager.getReachDistance()) {
|
||||
continue;
|
||||
}
|
||||
BlockPos c = new BlockPos(actual);
|
||||
BlockState state = client.world.getBlockState(c);
|
||||
if (state.getMaterial().isReplaceable()) {
|
||||
toPlace.add(c);
|
||||
}
|
||||
if (makeSame.getValue() && inHand != null && !state.isAir() && state.getBlock() != inHand && state.getBlock().getHardness() > 0) {
|
||||
toBreak.add(c);
|
||||
}
|
||||
if (breakSides.getValue()) {
|
||||
for (int y = 1; y < 4; y++) {
|
||||
BlockState real = client.world.getBlockState(c.add(0, y, 0));
|
||||
if (!real.isAir() && real.getBlock().getHardness() > 0 && real.getBlock() != Blocks.WATER && real.getBlock() != Blocks.LAVA) {
|
||||
toBreak.add(c.add(0, y, 0));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
toPlace.sort(Comparator.comparingDouble(value -> Vec3d.of(value).add(.5, .5, .5).distanceTo(eyep)));
|
||||
toBreak.sort(Comparator.comparingDouble(value -> Vec3d.of(value).add(.5, .5, .5).distanceTo(eyep)));
|
||||
renders.clear();
|
||||
if (!toBreak.isEmpty() && toBreakEmptyBefore) {
|
||||
prevSlot = client.player.getInventory().selectedSlot;
|
||||
toBreakEmptyBefore = false;
|
||||
}
|
||||
int done = 0;
|
||||
for (BlockPos blockPos : toBreak) {
|
||||
BlockState bs = client.world.getBlockState(blockPos);
|
||||
if (ModuleRegistry.getByClass(AutoTool.class).isEnabled()) {
|
||||
AutoTool.pick(bs);
|
||||
}
|
||||
Rotations.lookAtV3(Vec3d.of(blockPos).add(.5, .5, .5));
|
||||
client.interactionManager.updateBlockBreakingProgress(blockPos, Direction.DOWN);
|
||||
renders.add(new RenderEntry(blockPos, new Vec3d(1, 1, 1), new Color(31, 232, 148, 70)));
|
||||
done++;
|
||||
if (done > amountPerTick.getValue()) {
|
||||
if (!asyncPlaceBreak.getValue()) {
|
||||
return;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
done = 0;
|
||||
if (!toBreakEmptyBefore) {
|
||||
toBreakEmptyBefore = true;
|
||||
client.player.getInventory().selectedSlot = prevSlot;
|
||||
}
|
||||
for (BlockPos blockPos : toPlace) {
|
||||
if (client.player.getInventory().getMainHandStack().getItem() instanceof BlockItem) {
|
||||
renders.add(new RenderEntry(blockPos.up(), new Vec3d(1, -0.01, 1), Utils.getCurrentRGB()));
|
||||
Vec3d actual = Vec3d.of(blockPos).add(.5, .5, .5);
|
||||
Rotations.lookAtV3(actual);
|
||||
client.interactionManager.interactBlock(client.player, client.world, Hand.MAIN_HAND, new BlockHitResult(actual, Direction.DOWN, blockPos, false));
|
||||
}
|
||||
done++;
|
||||
if (done > amountPerTick.getValue()) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enable() {
|
||||
origin = client.player.getPos();
|
||||
prevSlot = client.player.getInventory().selectedSlot;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disable() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getContext() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWorldRender(MatrixStack matrices) {
|
||||
for (RenderEntry render : renders) {
|
||||
Renderer.R3D.renderFilled(Vec3d.of(render.pos()), render.dimensions(), render.color(), matrices);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHudRender() {
|
||||
|
||||
}
|
||||
|
||||
record RenderEntry(BlockPos pos, Vec3d dimensions, Color color) {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,115 @@
|
|||
/*
|
||||
* This file is part of the atomic client distribution.
|
||||
* Copyright (c) 2021-2021 0x150.
|
||||
*/
|
||||
|
||||
package me.x150.sipprivate.feature.module.impl.world;
|
||||
|
||||
import me.x150.sipprivate.feature.config.BooleanSetting;
|
||||
import me.x150.sipprivate.feature.gui.notifications.Notification;
|
||||
import me.x150.sipprivate.feature.gui.notifications.NotificationRenderer;
|
||||
import me.x150.sipprivate.feature.module.Module;
|
||||
import me.x150.sipprivate.feature.module.ModuleType;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import net.minecraft.util.Hand;
|
||||
import net.minecraft.util.hit.BlockHitResult;
|
||||
import net.minecraft.util.hit.HitResult;
|
||||
import net.minecraft.util.math.Direction;
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Objects;
|
||||
|
||||
public class GodBridge extends Module {
|
||||
|
||||
final float mOffset = 0.20f;
|
||||
final Direction[] allowedSides = new Direction[]{Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST};
|
||||
// final BooleanValue courseCorrect = (BooleanValue) this.config.create("Course correct", true).description("Prevent you from falling off the track by accident");
|
||||
BooleanSetting courseCorrect = this.config.create(new BooleanSetting.Builder(true)
|
||||
.name("Course correct")
|
||||
.description("Prevents you from accidentally falling off a side of the bridge")
|
||||
.get());
|
||||
Notification isReady = null;
|
||||
|
||||
public GodBridge() {
|
||||
super("GodBridge", "Automatically makes you look like a badass", ModuleType.WORLD);
|
||||
}
|
||||
|
||||
boolean isReady() {
|
||||
return Objects.requireNonNull(client.player).getPitch() > 82;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
// Notification.create(5000, "GodBridge", "Look down, as you would normally while godbridging to start");
|
||||
if (!isReady()) {
|
||||
if (isReady == null) {
|
||||
isReady = Notification.create(-1, "GodBridge", true, "Look down, as you would normally while godbridging to start");
|
||||
}
|
||||
} else {
|
||||
if (isReady != null) {
|
||||
isReady.duration = 0;
|
||||
}
|
||||
}
|
||||
if (!NotificationRenderer.topBarNotifications.contains(isReady)) {
|
||||
isReady = null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enable() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disable() {
|
||||
if (isReady != null) {
|
||||
isReady.duration = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getContext() {
|
||||
return isReady() ? "Ready" : "Not ready";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWorldRender(MatrixStack matrices) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHudRender() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFastTick() {
|
||||
if (!isReady()) {
|
||||
return;
|
||||
}
|
||||
Objects.requireNonNull(client.player).setYaw(client.player.getMovementDirection().asRotation());
|
||||
if (client.player.getPitch() > 83) {
|
||||
client.player.setPitch(82.5f);
|
||||
}
|
||||
HitResult hr = client.crosshairTarget;
|
||||
if (Objects.requireNonNull(hr).getType() == HitResult.Type.BLOCK && hr instanceof BlockHitResult result) {
|
||||
if (Arrays.stream(allowedSides).anyMatch(direction -> direction == result.getSide())) {
|
||||
client.player.swingHand(Hand.MAIN_HAND);
|
||||
Objects.requireNonNull(client.interactionManager).interactBlock(client.player, client.world, Hand.MAIN_HAND, result);
|
||||
}
|
||||
}
|
||||
if (!courseCorrect.getValue()) {
|
||||
return;
|
||||
}
|
||||
Vec3d ppos = client.player.getPos();
|
||||
Vec3d isolated = new Vec3d(ppos.x - Math.floor(ppos.x), 0, ppos.z - Math.floor(ppos.z));
|
||||
double toCheck = 0;
|
||||
switch (client.player.getMovementDirection()) {
|
||||
case NORTH, SOUTH -> toCheck = isolated.x;
|
||||
case EAST, WEST -> toCheck = isolated.z;
|
||||
}
|
||||
client.options.keySneak.setPressed(toCheck > 0.5 + mOffset || toCheck < 0.5 - mOffset);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,121 @@
|
|||
/*
|
||||
* This file is part of the atomic client distribution.
|
||||
* Copyright (c) 2021-2021 0x150.
|
||||
*/
|
||||
|
||||
package me.x150.sipprivate.feature.module.impl.world;
|
||||
|
||||
import me.x150.sipprivate.feature.config.EnumSetting;
|
||||
import me.x150.sipprivate.feature.module.Module;
|
||||
import me.x150.sipprivate.feature.module.ModuleType;
|
||||
import me.x150.sipprivate.helper.event.EventType;
|
||||
import me.x150.sipprivate.helper.event.Events;
|
||||
import me.x150.sipprivate.helper.event.events.PacketEvent;
|
||||
import me.x150.sipprivate.helper.render.Renderer;
|
||||
import me.x150.sipprivate.helper.util.Utils;
|
||||
import me.x150.sipprivate.mixin.IClientPlayerInteractionManagerAccessor;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import net.minecraft.network.packet.c2s.play.PlayerActionC2SPacket;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.Direction;
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
public class InstantBreak extends Module {
|
||||
|
||||
final List<Vec3d> positions = new ArrayList<>();
|
||||
final List<PlayerActionC2SPacket> whitelist = new ArrayList<>();
|
||||
EnumSetting<Priority> prio = this.config.create(new EnumSetting.Builder<>(Priority.Speed)
|
||||
.name("Priority")
|
||||
.description("What to do with the blocks being broken")
|
||||
.get());
|
||||
public InstantBreak() {
|
||||
super("InstantBreak", "Breaks a block a lot faster", ModuleType.WORLD);
|
||||
Events.registerEventHandler(EventType.PACKET_SEND, event -> {
|
||||
if (!this.isEnabled()) {
|
||||
return;
|
||||
}
|
||||
PacketEvent pe = (PacketEvent) event;
|
||||
if (pe.getPacket() instanceof PlayerActionC2SPacket packet) {
|
||||
if (!whitelist.contains(packet)) {
|
||||
if (packet.getAction() == PlayerActionC2SPacket.Action.START_DESTROY_BLOCK && prio.getValue() == Priority.Order) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
} else {
|
||||
whitelist.remove(packet);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
if (Objects.requireNonNull(client.interactionManager).isBreakingBlock()) {
|
||||
BlockPos last = ((IClientPlayerInteractionManagerAccessor) client.interactionManager).getCurrentBreakingPos();
|
||||
if (prio.getValue() == Priority.Order) {
|
||||
Vec3d p = new Vec3d(last.getX(), last.getY(), last.getZ());
|
||||
if (!positions.contains(p)) {
|
||||
positions.add(p);
|
||||
}
|
||||
} else {
|
||||
Objects.requireNonNull(client.getNetworkHandler()).sendPacket(new PlayerActionC2SPacket(PlayerActionC2SPacket.Action.STOP_DESTROY_BLOCK, last, Direction.DOWN));
|
||||
positions.clear();
|
||||
}
|
||||
}
|
||||
Vec3d p = client.gameRenderer.getCamera().getPos();
|
||||
if (positions.size() == 0) {
|
||||
return;
|
||||
}
|
||||
Vec3d latest = positions.get(0);
|
||||
if (latest.add(0.5, 0.5, 0.5).distanceTo(p) >= client.interactionManager.getReachDistance()) {
|
||||
positions.remove(0);
|
||||
return;
|
||||
}
|
||||
BlockPos bp = new BlockPos(latest);
|
||||
if (Objects.requireNonNull(client.world).getBlockState(bp).isAir()) {
|
||||
positions.remove(0);
|
||||
return;
|
||||
}
|
||||
PlayerActionC2SPacket pstart = new PlayerActionC2SPacket(PlayerActionC2SPacket.Action.START_DESTROY_BLOCK, bp, Direction.DOWN);
|
||||
whitelist.add(pstart);
|
||||
Objects.requireNonNull(client.getNetworkHandler()).sendPacket(pstart);
|
||||
client.getNetworkHandler().sendPacket(new PlayerActionC2SPacket(PlayerActionC2SPacket.Action.STOP_DESTROY_BLOCK, bp, Direction.DOWN));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enable() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disable() {
|
||||
positions.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getContext() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWorldRender(MatrixStack matrices) {
|
||||
for (Vec3d position : new ArrayList<>(positions)) {
|
||||
Renderer.R3D.renderOutline(position, new Vec3d(1, 1, 1), Utils.getCurrentRGB(), matrices);
|
||||
//Renderer.renderFilled(position,new Vec3d(1,1,1),new Color(0,0,0,150),matrices);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHudRender() {
|
||||
|
||||
}
|
||||
|
||||
// final MultiValue prio = (MultiValue) this.config.create("Priority", "Speed", "Order", "Speed").description("What to prioritize when breaking blocks");
|
||||
public enum Priority {
|
||||
Speed, Order
|
||||
}
|
||||
}
|
||||
|
|
@ -1,53 +0,0 @@
|
|||
package me.x150.sipprivate.feature.module.impl.world;
|
||||
|
||||
import me.x150.sipprivate.CoffeeClientMain;
|
||||
import me.x150.sipprivate.feature.module.Module;
|
||||
import me.x150.sipprivate.feature.module.ModuleType;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import net.minecraft.network.packet.c2s.play.PlayerActionC2SPacket;
|
||||
import net.minecraft.util.hit.BlockHitResult;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.Direction;
|
||||
|
||||
public class InstantMine extends Module {
|
||||
|
||||
public InstantMine() {
|
||||
super("InstantMine", "break blocks a lot faster", ModuleType.WORLD);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
if (CoffeeClientMain.client.interactionManager.isBreakingBlock()) {
|
||||
try {
|
||||
BlockPos killmeplz = ((BlockHitResult) CoffeeClientMain.client.crosshairTarget).getBlockPos();
|
||||
for (int i = 0; i < 20; i++)
|
||||
CoffeeClientMain.client.player.networkHandler.sendPacket(new PlayerActionC2SPacket(PlayerActionC2SPacket.Action.STOP_DESTROY_BLOCK, killmeplz, Direction.UP));
|
||||
} catch (ClassCastException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enable() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disable() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getContext() {
|
||||
return null; //i pretended to understand what 0x150 was saying and i still dont understand what the fuck this does - saturn
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWorldRender(MatrixStack matrices) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHudRender() {
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,86 @@
|
|||
package me.x150.sipprivate.feature.module.impl.world;
|
||||
|
||||
|
||||
import me.x150.sipprivate.feature.config.DoubleSetting;
|
||||
import me.x150.sipprivate.feature.module.Module;
|
||||
import me.x150.sipprivate.feature.module.ModuleType;
|
||||
import me.x150.sipprivate.helper.event.EventType;
|
||||
import me.x150.sipprivate.helper.event.Events;
|
||||
import me.x150.sipprivate.helper.event.events.PacketEvent;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import net.minecraft.network.Packet;
|
||||
import net.minecraft.network.packet.c2s.play.PlayerInteractBlockC2SPacket;
|
||||
import net.minecraft.network.packet.c2s.play.PlayerInteractItemC2SPacket;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class MassUse extends Module {
|
||||
List<Packet<?>> dontRepeat = new ArrayList<>();
|
||||
// SliderValue uses = (SliderValue) this.config.create("Uses", 3, 1, 100, 0).description("How many times to use the item");
|
||||
DoubleSetting uses = this.config.create(new DoubleSetting.Builder(3)
|
||||
.name("Uses")
|
||||
.description("How many times to use the item")
|
||||
.min(1)
|
||||
.max(100)
|
||||
.precision(0)
|
||||
.get());
|
||||
|
||||
public MassUse() {
|
||||
super("MassUse", "Uses an item or block several times", ModuleType.WORLD);
|
||||
Events.registerEventHandler(EventType.PACKET_SEND, event -> {
|
||||
if (!this.isEnabled()) {
|
||||
return;
|
||||
}
|
||||
PacketEvent pe = (PacketEvent) event;
|
||||
if (dontRepeat.contains(pe.getPacket())) {
|
||||
dontRepeat.remove(pe.getPacket());
|
||||
return;
|
||||
}
|
||||
if (pe.getPacket() instanceof PlayerInteractBlockC2SPacket p1) {
|
||||
PlayerInteractBlockC2SPacket pp = new PlayerInteractBlockC2SPacket(p1.getHand(), p1.getBlockHitResult());
|
||||
for (int i = 0; i < uses.getValue(); i++) {
|
||||
dontRepeat.add(pp);
|
||||
client.getNetworkHandler().sendPacket(pp);
|
||||
}
|
||||
} else if (pe.getPacket() instanceof PlayerInteractItemC2SPacket p1) {
|
||||
PlayerInteractItemC2SPacket pp = new PlayerInteractItemC2SPacket(p1.getHand());
|
||||
for (int i = 0; i < uses.getValue(); i++) {
|
||||
dontRepeat.add(pp);
|
||||
client.getNetworkHandler().sendPacket(pp);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enable() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disable() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getContext() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWorldRender(MatrixStack matrices) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHudRender() {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
/*
|
||||
* This file is part of the atomic client distribution.
|
||||
* Copyright (c) 2021-2021 0x150.
|
||||
*/
|
||||
|
||||
package me.x150.sipprivate.feature.module.impl.world;
|
||||
|
||||
import me.x150.sipprivate.feature.module.Module;
|
||||
import me.x150.sipprivate.feature.module.ModuleType;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
|
||||
public class NoBreakDelay extends Module {
|
||||
|
||||
public NoBreakDelay() {
|
||||
super("NoBreakDelay", "Removes the break delay", ModuleType.WORLD);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enable() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disable() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getContext() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWorldRender(MatrixStack matrices) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHudRender() {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -1,30 +1,186 @@
|
|||
/*
|
||||
* This file is part of the atomic client distribution.
|
||||
* Copyright (c) 2021-2021 0x150.
|
||||
*/
|
||||
|
||||
package me.x150.sipprivate.feature.module.impl.world;
|
||||
|
||||
import me.x150.sipprivate.CoffeeClientMain;
|
||||
import me.x150.sipprivate.feature.config.BooleanSetting;
|
||||
import me.x150.sipprivate.feature.config.DoubleSetting;
|
||||
import me.x150.sipprivate.feature.config.EnumSetting;
|
||||
import me.x150.sipprivate.feature.module.Module;
|
||||
import me.x150.sipprivate.feature.module.ModuleType;
|
||||
import me.x150.sipprivate.helper.Rotations;
|
||||
import me.x150.sipprivate.helper.render.Renderer;
|
||||
import me.x150.sipprivate.helper.util.Utils;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import net.minecraft.util.Hand;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.Direction;
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class Nuker extends Module {
|
||||
|
||||
final List<BlockPos> renders = new ArrayList<>();
|
||||
// final SliderValue range = (SliderValue) this.config.create("Range", 3, 0, 4, 1).description("The range to nuke by");
|
||||
// final SliderValue blocksPerTick = (SliderValue) this.config.create("Blocks per tick", 1, 1, 20, 0).description("The amount of blocks to destroy per tick");
|
||||
// final SliderValue delay = (SliderValue) this.config.create("Delay", 5, 0, 20, 0).description("The delay before breaking blocks");
|
||||
// final BooleanValue ignoreXray = (BooleanValue) this.config.create("Ignore xray", true).description("Whether or not to ignore xray blocks");
|
||||
// final MultiValue mode = (MultiValue) this.config.create("Mode", "Everything", "Everything", "Torches", "Fire", "Wood", "Grass").description("What to nuke");
|
||||
// final BooleanValue autoTool = (BooleanValue) this.config.create("Auto tool", true).description("Automatically picks the best tool from your inventory, for the block being broken");
|
||||
final Block[] WOOD = new Block[]{Blocks.ACACIA_LOG, Blocks.BIRCH_LOG, Blocks.DARK_OAK_LOG, Blocks.JUNGLE_LOG, Blocks.OAK_LOG, Blocks.SPRUCE_LOG, Blocks.STRIPPED_ACACIA_LOG,
|
||||
Blocks.STRIPPED_BIRCH_LOG, Blocks.STRIPPED_DARK_OAK_LOG, Blocks.STRIPPED_JUNGLE_LOG, Blocks.STRIPPED_OAK_LOG, Blocks.STRIPPED_SPRUCE_LOG};
|
||||
// final MultiValue mv = (MultiValue) this.config.create("Sort", "Out -> In", "Out -> In", "In -> Out", "Strength", "Random").description("How to sort");
|
||||
// final BooleanValue ignoreUnbreakable = (BooleanValue) this.config.create("Ignore unbreakable", true).description("Ignore survival unbreakable blocks");
|
||||
|
||||
DoubleSetting range = this.config.create(new DoubleSetting.Builder(4)
|
||||
.name("Range")
|
||||
.description("How far to break blocks")
|
||||
.min(0)
|
||||
.max(4)
|
||||
.precision(1)
|
||||
.get());
|
||||
DoubleSetting blocksPerTick = this.config.create(new DoubleSetting.Builder(1)
|
||||
.name("Blocks per tick")
|
||||
.description("How many blocks to break per tick")
|
||||
.min(1)
|
||||
.max(20)
|
||||
.precision(0)
|
||||
.get());
|
||||
DoubleSetting delay = this.config.create(new DoubleSetting.Builder(0)
|
||||
.name("Delay")
|
||||
.description("How much to wait between ticks")
|
||||
.min(0)
|
||||
.max(20)
|
||||
.precision(0)
|
||||
.get());
|
||||
BooleanSetting ignoreXray = this.config.create(new BooleanSetting.Builder(true)
|
||||
.name("Ignore XRAY")
|
||||
.description("Ignores XRAY blocks")
|
||||
.get());
|
||||
EnumSetting<Mode> mode = this.config.create(new EnumSetting.Builder<>(Mode.Everything)
|
||||
.name("Mode")
|
||||
.description("What to break")
|
||||
.get());
|
||||
BooleanSetting autoTool = this.config.create(new BooleanSetting.Builder(true)
|
||||
.name("Auto tool")
|
||||
.description("Automatically picks the best tool for the block")
|
||||
.get());
|
||||
EnumSetting<SortMode> mv = this.config.create(new EnumSetting.Builder<>(SortMode.OutIn)
|
||||
.name("Sorting")
|
||||
.description("In which order to break the blocks")
|
||||
.get());
|
||||
BooleanSetting ignoreUnbreakable = this.config.create(new BooleanSetting.Builder(true)
|
||||
.name("Ignore unbreakable")
|
||||
.description("Ignores unbreakable blocks")
|
||||
.get());
|
||||
int delayPassed = 0;
|
||||
public Nuker() {
|
||||
super("Nuker", "break blocks around you", ModuleType.WORLD);
|
||||
super("Nuker", "Breaks a lot of blocks around you fast", ModuleType.WORLD);
|
||||
}
|
||||
|
||||
boolean isBlockApplicable(Block b) {
|
||||
if (mode.getValue() == Mode.Everything) {
|
||||
return true;
|
||||
} else if (mode.getValue() == Mode.Torches) {
|
||||
return b == Blocks.TORCH || b == Blocks.WALL_TORCH || b == Blocks.SOUL_TORCH || b == Blocks.SOUL_WALL_TORCH;
|
||||
} else if (mode.getValue() == Mode.Fire) {
|
||||
return b == Blocks.FIRE || b == Blocks.SOUL_FIRE;
|
||||
} else if (mode.getValue() == Mode.Wood) {
|
||||
return Arrays.stream(WOOD).anyMatch(block -> block == b);
|
||||
} else if (mode.getValue() == Mode.Grass) {
|
||||
return b == Blocks.GRASS || b == Blocks.TALL_GRASS;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
for (int x = -7; x < 8; x++)
|
||||
for (int y = -7; y < 8; y++)
|
||||
for (int z = -7; z < 8; z++) {
|
||||
BlockPos pos = CoffeeClientMain.client.player.getBlockPos().add(new BlockPos(x, y, z));
|
||||
if (new Vec3d(pos.getX(), pos.getY(), pos.getZ()).distanceTo(CoffeeClientMain.client.player.getPos()) > CoffeeClientMain.client.interactionManager.getReachDistance() - 1 || CoffeeClientMain.client.world.getBlockState(pos).isAir() || CoffeeClientMain.client.world.getBlockState(pos).getBlock() == Blocks.WATER || CoffeeClientMain.client.world.getBlockState(pos).getBlock() == Blocks.LAVA)
|
||||
if (client.player == null || client.world == null || client.interactionManager == null || client.getNetworkHandler() == null) {
|
||||
return;
|
||||
}
|
||||
if (delayPassed < delay.getValue()) {
|
||||
delayPassed++;
|
||||
return;
|
||||
}
|
||||
delayPassed = 0;
|
||||
BlockPos ppos1 = client.player.getBlockPos();
|
||||
int blocksBroken = 0;
|
||||
renders.clear();
|
||||
List<BlockPos> toHit = new ArrayList<>();
|
||||
for (double y = range.getValue(); y > -range.getValue() - 1; y--) {
|
||||
for (double x = -range.getValue(); x < range.getValue() + 1; x++) {
|
||||
for (double z = -range.getValue(); z < range.getValue() + 1; z++) {
|
||||
BlockPos vp = new BlockPos(x, y, z);
|
||||
BlockPos np = ppos1.add(vp);
|
||||
Vec3d vp1 = Vec3d.of(np).add(.5, .5, .5);
|
||||
if (vp1.distanceTo(client.player.getEyePos()) >= client.interactionManager.getReachDistance()) {
|
||||
continue;
|
||||
CoffeeClientMain.client.interactionManager.attackBlock(pos, Direction.DOWN);
|
||||
}
|
||||
toHit.add(np);
|
||||
}
|
||||
}
|
||||
}
|
||||
toHit = toHit.stream().sorted(Comparator.comparingDouble(value1 -> {
|
||||
Vec3d value = Vec3d.of(value1).add(new Vec3d(.5, .5, .5));
|
||||
return switch (mv.getValue()) {
|
||||
case OutIn -> value.distanceTo(client.player.getPos()) * -1;
|
||||
case InOut -> value.distanceTo(client.player.getPos());
|
||||
case Strength -> client.world.getBlockState(value1).getBlock().getHardness();
|
||||
default -> 1;
|
||||
};
|
||||
})).collect(Collectors.toList());
|
||||
if (mv.getValue() == SortMode.Random) {
|
||||
Collections.shuffle(toHit);
|
||||
}
|
||||
for (BlockPos np : toHit) {
|
||||
if (blocksBroken >= blocksPerTick.getValue()) {
|
||||
break;
|
||||
}
|
||||
BlockState bs = client.world.getBlockState(np);
|
||||
boolean b = !ignoreXray.getValue() || !XRAY.blocks.contains(bs.getBlock());
|
||||
if (!bs.isAir() && bs.getBlock() != Blocks.WATER && bs.getBlock() != Blocks.LAVA && !isUnbreakable(bs.getBlock()) && b && client.world.getWorldBorder()
|
||||
.contains(np) && isBlockApplicable(bs.getBlock())) {
|
||||
renders.add(np);
|
||||
if (autoTool.getValue()) {
|
||||
AutoTool.pick(bs);
|
||||
}
|
||||
client.player.swingHand(Hand.MAIN_HAND);
|
||||
if (!client.player.getAbilities().creativeMode) {
|
||||
client.interactionManager.updateBlockBreakingProgress(np, Direction.DOWN);
|
||||
} else {
|
||||
client.interactionManager.attackBlock(np, Direction.DOWN);
|
||||
}
|
||||
Rotations.lookAtV3(new Vec3d(np.getX() + .5, np.getY() + .5, np.getZ() + .5));
|
||||
blocksBroken++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
boolean isUnbreakable(Block b) {
|
||||
if (!ignoreUnbreakable.getValue()) {
|
||||
return false;
|
||||
}
|
||||
return b.getHardness() == -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getContext() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWorldRender(MatrixStack matrices) {
|
||||
for (BlockPos render : renders) {
|
||||
Vec3d vp = new Vec3d(render.getX(), render.getY(), render.getZ());
|
||||
Renderer.R3D.renderFilled(vp, new Vec3d(1, 1, 1), Renderer.Util.modify(Utils.getCurrentRGB(), -1, -1, -1, 50), matrices);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -34,16 +190,14 @@ public class Nuker extends Module {
|
|||
|
||||
@Override
|
||||
public void disable() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getContext() {
|
||||
return null; //no fucking clue what this does - saturn
|
||||
public enum Mode {
|
||||
Everything, Torches, Fire, Wood, Grass
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWorldRender(MatrixStack matrices) {
|
||||
public enum SortMode {
|
||||
OutIn, InOut, Strength, Random
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -51,3 +205,4 @@ public class Nuker extends Module {
|
|||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,129 @@
|
|||
/*
|
||||
* This file is part of the atomic client distribution.
|
||||
* Copyright (c) 2021-2021 0x150.
|
||||
*/
|
||||
|
||||
package me.x150.sipprivate.feature.module.impl.world;
|
||||
|
||||
import me.x150.sipprivate.feature.config.DoubleSetting;
|
||||
import me.x150.sipprivate.feature.module.Module;
|
||||
import me.x150.sipprivate.feature.module.ModuleType;
|
||||
import me.x150.sipprivate.helper.Keybind;
|
||||
import me.x150.sipprivate.helper.Rotations;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import net.minecraft.item.BlockItem;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.Items;
|
||||
import net.minecraft.util.Hand;
|
||||
import net.minecraft.util.hit.BlockHitResult;
|
||||
import net.minecraft.util.math.*;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class Scaffold extends Module {
|
||||
|
||||
// final SliderValue extend = this.config.create("Extend", 3, 0, 5, 1);
|
||||
DoubleSetting extend = this.config.create(new DoubleSetting.Builder(3)
|
||||
.name("Extend")
|
||||
.description("How many blocks to extend outwards")
|
||||
.min(0)
|
||||
.max(5)
|
||||
.precision(1)
|
||||
.get());
|
||||
|
||||
public Scaffold() {
|
||||
super("Scaffold", "Places blocks below you as you walk", ModuleType.WORLD);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enable() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disable() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getContext() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWorldRender(MatrixStack matrices) {
|
||||
client.options.keySneak.setPressed(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHudRender() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFastTick() {
|
||||
Vec3d ppos = Objects.requireNonNull(client.player).getPos().add(0, -1, 0);
|
||||
BlockPos bp = new BlockPos(ppos);
|
||||
int selIndex = client.player.getInventory().selectedSlot;
|
||||
if (!(client.player.getInventory().getStack(selIndex).getItem() instanceof BlockItem)) {
|
||||
for (int i = 0; i < 9; i++) {
|
||||
ItemStack is = client.player.getInventory().getStack(i);
|
||||
if (is.getItem() == Items.AIR) {
|
||||
continue;
|
||||
}
|
||||
if (is.getItem() instanceof BlockItem) {
|
||||
selIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (client.player.getInventory().getStack(selIndex).getItem() != Items.AIR) {
|
||||
boolean sneaking = new Keybind(client.options.keySneak.getDefaultKey().getCode()).isPressed();
|
||||
if (sneaking) {
|
||||
bp = bp.down();
|
||||
}
|
||||
// fucking multithreading moment
|
||||
int finalSelIndex = selIndex;
|
||||
BlockPos finalBp = bp;
|
||||
client.execute(() -> placeBlockWithSlot(finalSelIndex, finalBp));
|
||||
if (extend.getValue() != 0) {
|
||||
Vec3d dir1 = client.player.getVelocity().multiply(3);
|
||||
Vec3d dir = new Vec3d(MathHelper.clamp(dir1.getX(), -1, 1), 0, MathHelper.clamp(dir1.getZ(), -1, 1));
|
||||
Vec3d v = ppos;
|
||||
for (double i = 0; i < extend.getValue(); i += 0.5) {
|
||||
v = v.add(dir);
|
||||
if (v.distanceTo(client.player.getPos()) >= Objects.requireNonNull(client.interactionManager).getReachDistance()) {
|
||||
break;
|
||||
}
|
||||
if (sneaking) {
|
||||
v = v.add(0, -1, 0);
|
||||
}
|
||||
BlockPos bp1 = new BlockPos(v);
|
||||
client.execute(() -> placeBlockWithSlot(finalSelIndex, bp1));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void placeBlockWithSlot(int s, BlockPos bp) {
|
||||
BlockState st = Objects.requireNonNull(client.world).getBlockState(bp);
|
||||
if (!st.getMaterial().isReplaceable()) {
|
||||
return;
|
||||
}
|
||||
Vec2f py = Rotations.getPitchYaw(new Vec3d(bp.getX() + .5, bp.getY() + .5, bp.getZ() + .5));
|
||||
Rotations.setClientPitch(py.x);
|
||||
Rotations.setClientYaw(py.y);
|
||||
int c = Objects.requireNonNull(client.player).getInventory().selectedSlot;
|
||||
client.player.getInventory().selectedSlot = s;
|
||||
BlockHitResult bhr = new BlockHitResult(new Vec3d(bp.getX(), bp.getY(), bp.getZ()), Direction.DOWN, bp, false);
|
||||
Objects.requireNonNull(client.interactionManager).interactBlock(client.player, client.world, Hand.MAIN_HAND, bhr);
|
||||
client.player.getInventory().selectedSlot = c;
|
||||
}
|
||||
}
|
106
src/main/java/me/x150/sipprivate/helper/ByteCounter.java
Normal file
106
src/main/java/me/x150/sipprivate/helper/ByteCounter.java
Normal file
|
@ -0,0 +1,106 @@
|
|||
package me.x150.sipprivate.helper;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.DataOutput;
|
||||
|
||||
public class ByteCounter implements DataOutput {
|
||||
private static final ByteCounter instance = new ByteCounter();
|
||||
private long c;
|
||||
|
||||
public static ByteCounter instance() {
|
||||
return instance;
|
||||
}
|
||||
|
||||
public long getSize() {
|
||||
return c;
|
||||
}
|
||||
|
||||
public void reset() {
|
||||
c = 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(int b) {
|
||||
c++;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(byte[] b) {
|
||||
c += b.length;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(byte @NotNull [] b, int off, int len) {
|
||||
c += len;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeBoolean(boolean v) {
|
||||
c++;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeByte(int v) {
|
||||
c++;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeShort(int v) {
|
||||
c += 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeChar(int v) {
|
||||
c += 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeInt(int v) {
|
||||
c += 4;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeLong(long v) {
|
||||
c += 8;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeFloat(float v) {
|
||||
c += 4;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeDouble(double v) {
|
||||
c += 8;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeBytes(String s) {
|
||||
c += s.length();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeChars(String s) {
|
||||
c += s.length() * 2L;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeUTF(@NotNull String s) {
|
||||
c += getUTFLength(s) + 2;
|
||||
}
|
||||
|
||||
long getUTFLength(String s) {
|
||||
long len = 0;
|
||||
for (char c : s.toCharArray()) {
|
||||
if (c >= 0x0001 && c <= 0x007F) {
|
||||
len++;
|
||||
} else if (c > 0x07FF) {
|
||||
len += 3;
|
||||
} else {
|
||||
len += 2;
|
||||
}
|
||||
}
|
||||
return len;
|
||||
}
|
||||
}
|
18
src/main/java/me/x150/sipprivate/helper/Keybind.java
Normal file
18
src/main/java/me/x150/sipprivate/helper/Keybind.java
Normal file
|
@ -0,0 +1,18 @@
|
|||
package me.x150.sipprivate.helper;
|
||||
|
||||
import me.x150.sipprivate.CoffeeClientMain;
|
||||
import net.minecraft.client.util.InputUtil;
|
||||
|
||||
public class Keybind {
|
||||
int keycode;
|
||||
|
||||
public Keybind(int keycode) {
|
||||
this.keycode = keycode;
|
||||
}
|
||||
|
||||
public boolean isPressed() {
|
||||
if (keycode < 0) return false;
|
||||
boolean isActuallyPressed = InputUtil.isKeyPressed(CoffeeClientMain.client.getWindow().getHandle(), keycode);
|
||||
return CoffeeClientMain.client.currentScreen == null && isActuallyPressed;
|
||||
}
|
||||
}
|
|
@ -34,6 +34,6 @@ public class LoreQueryEvent extends NonCancellableEvent {
|
|||
}
|
||||
|
||||
public void addClientLore(String v) {
|
||||
addLore("[§9A§r] §7" + v + "§r");
|
||||
addLore("§7" + v + "§r");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,8 +24,4 @@ public class MouseEvent extends Event {
|
|||
public int getAction() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public enum MouseEventType {
|
||||
MOUSE_CLICKED, MOUSE_RELEASED
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,6 +3,9 @@ package me.x150.sipprivate.mixin;
|
|||
import me.x150.sipprivate.feature.module.Module;
|
||||
import me.x150.sipprivate.feature.module.ModuleRegistry;
|
||||
import me.x150.sipprivate.feature.module.impl.misc.PortalGUI;
|
||||
import me.x150.sipprivate.feature.module.impl.movement.NoPush;
|
||||
import me.x150.sipprivate.feature.module.impl.movement.Phase;
|
||||
import me.x150.sipprivate.feature.module.impl.render.Freecam;
|
||||
import me.x150.sipprivate.helper.manager.ConfigManager;
|
||||
import me.x150.sipprivate.helper.util.Utils;
|
||||
import net.minecraft.client.gui.screen.Screen;
|
||||
|
@ -34,4 +37,12 @@ public class ClientPlayerEntityMixin {
|
|||
public boolean atomic_overwriteIsPauseScreen(Screen screen) {
|
||||
return Objects.requireNonNull(ModuleRegistry.getByClass(PortalGUI.class)).isEnabled() || screen.isPauseScreen();
|
||||
}
|
||||
|
||||
@Inject(method = "pushOutOfBlocks", at = @At("HEAD"), cancellable = true)
|
||||
public void atomic_preventPushOutFromBlocks(double x, double z, CallbackInfo ci) {
|
||||
if (Objects.requireNonNull(ModuleRegistry.getByClass(Freecam.class)).isEnabled() || Objects.requireNonNull(ModuleRegistry.getByClass(NoPush.class))
|
||||
.isEnabled() || Objects.requireNonNull(ModuleRegistry.getByClass(Phase.class)).isEnabled()) {
|
||||
ci.cancel();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
package me.x150.sipprivate.mixin;
|
||||
|
||||
import me.x150.sipprivate.feature.module.ModuleRegistry;
|
||||
import me.x150.sipprivate.feature.module.impl.world.NoBreakDelay;
|
||||
import net.minecraft.client.network.ClientPlayerInteractionManager;
|
||||
import org.objectweb.asm.Opcodes;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
@Mixin(ClientPlayerInteractionManager.class)
|
||||
public class ClientPlayerInteractionManagerMixin {
|
||||
@Shadow
|
||||
private int blockBreakingCooldown;
|
||||
|
||||
@Redirect(method = "updateBlockBreakingProgress",
|
||||
at = @At(value = "FIELD", target = "Lnet/minecraft/client/network/ClientPlayerInteractionManager;blockBreakingCooldown:I", opcode = Opcodes.GETFIELD, ordinal = 0))
|
||||
public int atomic_overwriteCooldown(ClientPlayerInteractionManager clientPlayerInteractionManager) {
|
||||
int cd = this.blockBreakingCooldown;
|
||||
return Objects.requireNonNull(ModuleRegistry.getByClass(NoBreakDelay.class)).isEnabled() ? 0 : cd;
|
||||
}
|
||||
}
|
|
@ -5,8 +5,10 @@
|
|||
|
||||
package me.x150.sipprivate.mixin;
|
||||
|
||||
import me.x150.sipprivate.CoffeeClientMain;
|
||||
import me.x150.sipprivate.feature.module.ModuleRegistry;
|
||||
import me.x150.sipprivate.feature.module.impl.movement.IgnoreWorldBorder;
|
||||
import me.x150.sipprivate.feature.module.impl.render.FreeLook;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.util.math.Box;
|
||||
import net.minecraft.world.border.WorldBorder;
|
||||
|
@ -23,4 +25,9 @@ public abstract class EntityMixin {
|
|||
private static boolean real(WorldBorder instance, Entity entity, Box box) {
|
||||
return !ModuleRegistry.getByClass(IgnoreWorldBorder.class).isEnabled() && instance.canCollide(entity, box);
|
||||
}
|
||||
|
||||
@Redirect(method = "updateVelocity", at = @At(value = "INVOKE", target = "net/minecraft/entity/Entity.getYaw()F"))
|
||||
float atomic_overwriteFreelookYaw(Entity instance) {
|
||||
return instance.equals(CoffeeClientMain.client.player) && ModuleRegistry.getByClass(FreeLook.class).isEnabled() ? ModuleRegistry.getByClass(FreeLook.class).newyaw : instance.getYaw();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,19 +4,29 @@ import me.x150.sipprivate.CoffeeClientMain;
|
|||
import me.x150.sipprivate.feature.gui.DoesMSAA;
|
||||
import me.x150.sipprivate.feature.module.Module;
|
||||
import me.x150.sipprivate.feature.module.ModuleRegistry;
|
||||
import me.x150.sipprivate.feature.module.impl.render.FreeLook;
|
||||
import me.x150.sipprivate.feature.module.impl.render.Zoom;
|
||||
import me.x150.sipprivate.helper.Rotations;
|
||||
import me.x150.sipprivate.helper.manager.ImGuiManager;
|
||||
import me.x150.sipprivate.helper.render.MSAAFramebuffer;
|
||||
import me.x150.sipprivate.helper.render.Renderer;
|
||||
import me.x150.sipprivate.helper.util.Utils;
|
||||
import net.minecraft.client.gui.Element;
|
||||
import net.minecraft.client.gui.screen.Screen;
|
||||
import net.minecraft.client.render.Camera;
|
||||
import net.minecraft.client.render.GameRenderer;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.util.hit.HitResult;
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
import net.minecraft.world.RaycastContext;
|
||||
import org.objectweb.asm.Opcodes;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
|
||||
@Mixin(GameRenderer.class)
|
||||
public class GameRendererMixin {
|
||||
|
@ -80,4 +90,22 @@ public class GameRendererMixin {
|
|||
ci.cancel();
|
||||
}
|
||||
}
|
||||
|
||||
@Redirect(at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/Entity;raycast(DFZ)Lnet/minecraft/util/hit/HitResult;"), method = "updateTargetedEntity")
|
||||
HitResult atomic_replaceFreelookHitResult(Entity instance, double maxDistance, float tickDelta, boolean includeFluids) {
|
||||
if (ModuleRegistry.getByClass(FreeLook.class).isEnabled()) {
|
||||
Vec3d vec3d = instance.getCameraPosVec(tickDelta);
|
||||
Vec3d vec3d2 = Utils.Math.getRotationVector(Rotations.getClientPitch(), Rotations.getClientYaw());
|
||||
Vec3d vec3d3 = vec3d.add(vec3d2.x * maxDistance, vec3d2.y * maxDistance, vec3d2.z * maxDistance);
|
||||
return instance.world.raycast(new RaycastContext(vec3d, vec3d3, RaycastContext.ShapeType.OUTLINE, includeFluids ? RaycastContext.FluidHandling.ANY : RaycastContext.FluidHandling.NONE, instance));
|
||||
} else {
|
||||
return instance.raycast(maxDistance, tickDelta, includeFluids);
|
||||
}
|
||||
}
|
||||
|
||||
@Inject(method = "getFov", at = @At("RETURN"), cancellable = true)
|
||||
public void atomic_overwriteFov(Camera camera, float tickDelta, boolean changingFov, CallbackInfoReturnable<Double> cir) {
|
||||
double zv = ModuleRegistry.getByClass(Zoom.class).getZoomValue(cir.getReturnValue());
|
||||
cir.setReturnValue(zv);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
package me.x150.sipprivate.mixin;
|
||||
|
||||
import net.minecraft.client.network.ClientPlayerInteractionManager;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||
|
||||
@Mixin(ClientPlayerInteractionManager.class)
|
||||
public interface IClientPlayerInteractionManagerAccessor {
|
||||
|
||||
@Accessor("currentBreakingPos")
|
||||
BlockPos getCurrentBreakingPos();
|
||||
}
|
|
@ -5,6 +5,7 @@ import me.x150.sipprivate.feature.module.ModuleRegistry;
|
|||
import me.x150.sipprivate.feature.module.impl.movement.Jesus;
|
||||
import me.x150.sipprivate.feature.module.impl.movement.NoLevitation;
|
||||
import me.x150.sipprivate.feature.module.impl.movement.NoPush;
|
||||
import me.x150.sipprivate.feature.module.impl.render.FreeLook;
|
||||
import me.x150.sipprivate.helper.manager.AttackManager;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.LivingEntity;
|
||||
|
@ -72,4 +73,12 @@ public class LivingEntityMixin {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Redirect(method = "jump", at = @At(value = "INVOKE", target = "net/minecraft/entity/LivingEntity.getYaw()F"))
|
||||
private float atomic_overwriteFreelookYaw(LivingEntity instance) {
|
||||
if (instance.equals(CoffeeClientMain.client.player) && ModuleRegistry.getByClass(FreeLook.class).isEnabled()) {
|
||||
return ModuleRegistry.getByClass(FreeLook.class).newyaw;
|
||||
}
|
||||
return instance.getYaw();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,17 +1,27 @@
|
|||
package me.x150.sipprivate.mixin;
|
||||
|
||||
import me.x150.sipprivate.CoffeeClientMain;
|
||||
import me.x150.sipprivate.feature.module.ModuleRegistry;
|
||||
import me.x150.sipprivate.feature.module.impl.world.FastUse;
|
||||
import me.x150.sipprivate.helper.manager.ConfigManager;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.client.RunArgs;
|
||||
import net.minecraft.client.gui.screen.Screen;
|
||||
import org.objectweb.asm.Opcodes;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
@Mixin(MinecraftClient.class)
|
||||
public class MinecraftClientMixin {
|
||||
@Shadow
|
||||
private int itemUseCooldown;
|
||||
|
||||
@Inject(method = "stop", at = @At("HEAD"))
|
||||
void real(CallbackInfo ci) {
|
||||
ConfigManager.saveState();
|
||||
|
@ -26,4 +36,13 @@ public class MinecraftClientMixin {
|
|||
void atomic_preSetScreen(Screen screen, CallbackInfo ci) {
|
||||
CoffeeClientMain.lastScreenChange = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
@Redirect(method = "handleInputEvents", at = @At(value = "FIELD", opcode = Opcodes.GETFIELD, target = "Lnet/minecraft/client/MinecraftClient;itemUseCooldown:I"))
|
||||
public int atomic_replaceItemUseCooldown(MinecraftClient minecraftClient) {
|
||||
if (Objects.requireNonNull(ModuleRegistry.getByClass(FastUse.class)).isEnabled()) {
|
||||
return 0;
|
||||
} else {
|
||||
return this.itemUseCooldown;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
Added home screen
|
||||
Removed custom buttons
|
||||
Reformat
|
||||
Fixed stupid bug with the alt screen
|
||||
Ported over a few modules
|
||||
Fixed a few bugs
|
||||
Increased performance of the hud
|
||||
Updated theme
|
||||
|
||||
|
|
|
@ -14,12 +14,14 @@
|
|||
"BlockRenderManagerMixin",
|
||||
"ClientConnectionMixin",
|
||||
"ClientPlayerEntityMixin",
|
||||
"ClientPlayerInteractionManagerMixin",
|
||||
"Deadmau5FeatureRendererMixin",
|
||||
"EntityMixin",
|
||||
"EntityRenderDispatcherMixin",
|
||||
"GameMenuMixin",
|
||||
"GameRendererMixin",
|
||||
"HandledScreenMixin",
|
||||
"IClientPlayerInteractionManagerAccessor",
|
||||
"ICustomPayloadC2SPacketAccessor",
|
||||
"IDebugHudAccessor",
|
||||
"IEntityVelocityUpdateS2CPacketMixin",
|
||||
|
|
|
@ -1 +1 @@
|
|||
0
|
||||
1
|
Loading…
Add table
Add a link
Reference in a new issue