first commit

This commit is contained in:
Cloudburst
2021-03-11 10:09:33 +01:00
commit 081fa3b235
22 changed files with 2036 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
package cloudburst.rejects.modules;
import meteordevelopment.orbit.EventHandler;
import minegame159.meteorclient.events.world.TickEvent;
import minegame159.meteorclient.modules.Module;
import minegame159.meteorclient.settings.BoolSetting;
import minegame159.meteorclient.settings.Setting;
import minegame159.meteorclient.settings.SettingGroup;
import minegame159.meteorclient.utils.entity.EntityUtils;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
import cloudburst.rejects.RejectCategory;
public class AntiBot extends Module {
private final SettingGroup sgGeneral = settings.getDefaultGroup();
private final Setting<Boolean> removeInvisible = sgGeneral.add(new BoolSetting.Builder()
.name("remove-invisible")
.description("Removes bot only if they are invisible.")
.defaultValue(true)
.build()
);
public AntiBot()
{
super(RejectCategory.Rejects, "anti-bot", "Detects and removes bots.");
}
@EventHandler
public void onTick(TickEvent.Post tickEvent)
{
for (Entity entity : mc.world.getEntities())
{
if (removeInvisible.get() && !entity.isInvisible()) continue;
if (isBot(entity)) entity.remove();
}
}
private boolean isBot(Entity entity)
{
if (entity == null) return false;
if (!(entity instanceof PlayerEntity)) return false;
// Gamemode check
return EntityUtils.getGameMode(((PlayerEntity)entity)) == null; // Assume bot if invalid gamemode
}
}

View File

@@ -0,0 +1,224 @@
/*
* This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client/).
* Copyright (c) 2021 Meteor Development.
*/
package cloudburst.rejects.modules;
//Created by squidoodly 12/07/2020
import meteordevelopment.orbit.EventHandler;
import minegame159.meteorclient.events.packets.PacketEvent;
import minegame159.meteorclient.events.world.TickEvent;
import minegame159.meteorclient.modules.Module;
import minegame159.meteorclient.modules.Modules;
import minegame159.meteorclient.modules.player.MountBypass;
import minegame159.meteorclient.settings.BoolSetting;
import minegame159.meteorclient.settings.IntSetting;
import minegame159.meteorclient.settings.Setting;
import minegame159.meteorclient.settings.SettingGroup;
import minegame159.meteorclient.utils.player.ChatUtils;
import minegame159.meteorclient.utils.player.InvUtils;
import net.minecraft.block.ShulkerBoxBlock;
import net.minecraft.client.gui.screen.ingame.HorseScreen;
import net.minecraft.entity.Entity;
import net.minecraft.entity.passive.AbstractDonkeyEntity;
import net.minecraft.entity.passive.LlamaEntity;
import net.minecraft.item.BlockItem;
import net.minecraft.item.Items;
import net.minecraft.network.packet.c2s.play.ClientCommandC2SPacket;
import net.minecraft.network.packet.c2s.play.PlayerInteractEntityC2SPacket;
import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket;
import net.minecraft.screen.slot.SlotActionType;
import net.minecraft.util.Hand;
import org.lwjgl.glfw.GLFW;
import java.util.ArrayList;
import java.util.List;
import cloudburst.rejects.RejectCategory;
public class AutoMountBypassDupe extends Module {
private final SettingGroup sgGeneral = settings.getDefaultGroup();
private final Setting<Boolean> shulkersOnly = sgGeneral.add(new BoolSetting.Builder()
.name("shulker-only")
.description("Only moves shulker boxes into the inventory")
.defaultValue(true)
.build());
private final Setting<Boolean> faceDown = sgGeneral.add(new BoolSetting.Builder()
.name("rotate-down")
.description("Faces down when dropping items.")
.defaultValue(true)
.build()
);
private final Setting<Integer> delay = sgGeneral.add(new IntSetting.Builder()
.name("delay")
.description("The delay in ticks between actions.")
.defaultValue(4)
.min(0)
.build()
);
private final List<Integer> slotsToMove = new ArrayList<>();
private final List<Integer> slotsToThrow = new ArrayList<>();
private boolean noCancel = false;
private AbstractDonkeyEntity entity;
private boolean sneak = false;
private int timer;
public AutoMountBypassDupe() {
super(RejectCategory.Rejects, "auto-mount-bypass-dupe", "Does the mount bypass dupe for you. Disable with esc.");
}
@Override
public void onActivate() {
timer = 0;
}
@EventHandler
private void onSendPacket(PacketEvent.Send event) {
if (noCancel) return;
Modules.get().get(MountBypass.class).onSendPacket(event);
}
@EventHandler
private void onTick(TickEvent.Post event) {
if (GLFW.glfwGetKey(mc.getWindow().getHandle(), GLFW.GLFW_KEY_ESCAPE) == GLFW.GLFW_PRESS) {
toggle();
mc.player.closeHandledScreen();
return;
}
if (timer <= 0) {
timer = delay.get();
} else {
timer--;
return;
}
int slots = getInvSize(mc.player.getVehicle());
for (Entity e : mc.world.getEntities()) {
if (e.distanceTo(mc.player) < 5 && e instanceof AbstractDonkeyEntity && ((AbstractDonkeyEntity) e).isTame()) {
entity = (AbstractDonkeyEntity) e;
}
}
if (entity == null) return;
if (sneak) {
mc.player.networkHandler.sendPacket(new ClientCommandC2SPacket(mc.player, ClientCommandC2SPacket.Mode.RELEASE_SHIFT_KEY));
mc.player.setSneaking(false);
sneak = false;
return;
}
if (slots == -1) {
if (entity.hasChest() || mc.player.getMainHandStack().getItem() == Items.CHEST){
mc.player.networkHandler.sendPacket(new PlayerInteractEntityC2SPacket(entity, Hand.MAIN_HAND, mc.player.isSneaking()));
} else {
int slot = InvUtils.findItemWithCount(Items.CHEST).slot;
if (slot != -1 && slot < 9) {
mc.player.inventory.selectedSlot = slot;
} else {
ChatUtils.moduleError(this, "Cannot find chest in your hotbar... disabling.");
this.toggle();
}
}
} else if (slots == 0) {
if (isDupeTime()) {
if (!slotsToThrow.isEmpty()) {
if (faceDown.get()) {
mc.player.networkHandler.sendPacket(new PlayerMoveC2SPacket.LookOnly(mc.player.yaw, 90, mc.player.isOnGround()));
}
for (int i : slotsToThrow) {
InvUtils.clickSlot(i, 1, SlotActionType.THROW);
}
slotsToThrow.clear();
} else {
for (int i = 2; i < getDupeSize() + 1; i++) {
slotsToThrow.add(i);
}
}
} else {
mc.player.closeHandledScreen();
mc.player.networkHandler.sendPacket(new ClientCommandC2SPacket(mc.player, ClientCommandC2SPacket.Mode.PRESS_SHIFT_KEY));
mc.player.setSneaking(true);
sneak = true;
}
} else if (!(mc.currentScreen instanceof HorseScreen)) {
mc.player.openRidingInventory();
} else if (slots > 0 ) {
if (slotsToMove.isEmpty()) {
boolean empty = true;
for (int i = 2; i <= slots; i++) {
if (!(mc.player.currentScreenHandler.getStacks().get(i).isEmpty())) {
empty = false;
break;
}
}
if (empty) {
for (int i = slots + 2; i < mc.player.currentScreenHandler.getStacks().size(); i++) {
if (!(mc.player.currentScreenHandler.getStacks().get(i).isEmpty())) {
if (mc.player.currentScreenHandler.getSlot(i).getStack().getItem() == Items.CHEST) continue;
if (!(mc.player.currentScreenHandler.getSlot(i).getStack().getItem() instanceof BlockItem && ((BlockItem) mc.player.currentScreenHandler.getSlot(i).getStack().getItem()).getBlock() instanceof ShulkerBoxBlock) && shulkersOnly.get()) continue;
slotsToMove.add(i);
if (slotsToMove.size() >= slots) break;
}
}
} else {
noCancel = true;
mc.player.networkHandler.sendPacket(new PlayerInteractEntityC2SPacket(entity, Hand.MAIN_HAND, entity.getPos().add(entity.getWidth() / 2, entity.getHeight() / 2, entity.getWidth() / 2), mc.player.isSneaking()));
noCancel = false;
return;
}
}
if (!slotsToMove.isEmpty()) {
for (int i : slotsToMove) InvUtils.clickSlot(i, 0, SlotActionType.QUICK_MOVE);
slotsToMove.clear();
}
}
}
private int getInvSize(Entity e){
if (!(e instanceof AbstractDonkeyEntity)) return -1;
if (!((AbstractDonkeyEntity)e).hasChest()) return 0;
if (e instanceof LlamaEntity) {
return 3 * ((LlamaEntity) e).getStrength();
}
return 15;
}
private boolean isDupeTime() {
if (mc.player.getVehicle() != entity || entity.hasChest() || mc.player.currentScreenHandler.getStacks().size() == 46) {
return false;
}
if (mc.player.currentScreenHandler.getStacks().size() > 38) {
for (int i = 2; i < getDupeSize() + 1; i++) {
if (mc.player.currentScreenHandler.getSlot(i).hasStack()) {
return true;
}
}
}
return false;
}
private int getDupeSize() {
if (mc.player.getVehicle() != entity || entity.hasChest() || mc.player.currentScreenHandler.getStacks().size() == 46) {
return 0;
}
return mc.player.currentScreenHandler.getStacks().size() - 38;
}
}

View File

@@ -0,0 +1,130 @@
package cloudburst.rejects.modules;
import meteordevelopment.orbit.EventHandler;
import minegame159.meteorclient.events.world.TickEvent;
import minegame159.meteorclient.modules.Module;
import minegame159.meteorclient.settings.BoolSetting;
import minegame159.meteorclient.settings.DoubleSetting;
import minegame159.meteorclient.settings.EntityTypeListSetting;
import minegame159.meteorclient.settings.IntSetting;
import minegame159.meteorclient.settings.Setting;
import minegame159.meteorclient.settings.SettingGroup;
import minegame159.meteorclient.utils.Utils;
import minegame159.meteorclient.utils.player.InvUtils;
import net.minecraft.block.Block;
import net.minecraft.block.Blocks;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.LivingEntity;
import net.minecraft.item.FlintAndSteelItem;
import net.minecraft.item.Items;
import net.minecraft.util.Hand;
import net.minecraft.util.hit.BlockHitResult;
import net.minecraft.util.math.Direction;
import net.minecraft.util.math.Vec3d;
import cloudburst.rejects.RejectCategory;
import it.unimi.dsi.fastutil.objects.Object2BooleanMap;
public class Baconator extends Module {
private final SettingGroup sgGeneral = settings.getDefaultGroup();
private final Setting<Double> distance = sgGeneral.add(new DoubleSetting.Builder().name("distance")
.description("The maximum distance the aniaml has to be to be roasted.").min(0.0).defaultValue(5.0)
.build());
private final Setting<Boolean> antiBreak = sgGeneral.add(new BoolSetting.Builder().name("anti-break")
.description("Prevents flint and steel from being broken.").defaultValue(false).build());
private final Setting<Integer> tickInterval = sgGeneral.add(new IntSetting.Builder().name("tick-interval").defaultValue(5).build());
private final Setting<Object2BooleanMap<EntityType<?>>> entities = sgGeneral
.add(new EntityTypeListSetting.Builder().name("entities").description("Entities to cook.")
.defaultValue(Utils.asObject2BooleanOpenHashMap(EntityType.PIG, EntityType.COW, EntityType.SHEEP,
EntityType.CHICKEN, EntityType.RABBIT))
.build());
private Entity entity;
private int preSlot;
private int ticks = 0;
public Baconator() {
super(RejectCategory.Rejects, "baconator", "Ignites every alive piece of food.");
}
@Override
public void onDeactivate() {
entity = null;
}
@EventHandler
private void onTick(TickEvent.Pre event) {
entity = null;
ticks++;
for (Entity entity : mc.world.getEntities()) {
if (!entities.get().getBoolean(entity.getType()) || mc.player.distanceTo(entity) > distance.get()) continue;
boolean findNewFlintAndSteel = false;
if (mc.player.inventory.getMainHandStack().getItem() instanceof FlintAndSteelItem) {
if (antiBreak.get() && mc.player.inventory.getMainHandStack()
.getDamage() >= mc.player.inventory.getMainHandStack().getMaxDamage() - 1)
findNewFlintAndSteel = true;
} else if (mc.player.inventory.offHand.get(0).getItem() instanceof FlintAndSteelItem) {
if (antiBreak.get() && mc.player.inventory.offHand.get(0)
.getDamage() >= mc.player.inventory.offHand.get(0).getMaxDamage() - 1)
findNewFlintAndSteel = true;
} else {
findNewFlintAndSteel = true;
}
boolean foundFlintAndSteel = !findNewFlintAndSteel;
if (findNewFlintAndSteel) {
int slot = InvUtils.findItemInHotbar(Items.FLINT_AND_STEEL, itemStack -> (!antiBreak.get()
|| (antiBreak.get() && itemStack.getDamage() < itemStack.getMaxDamage() - 1)));
if (slot != -1) {
mc.player.inventory.selectedSlot = slot;
foundFlintAndSteel = true;
}
}
if (foundFlintAndSteel) {
this.entity = entity;
// if (rotate.get()) Rotations.rotate(Rotations.getYaw(entity),
// Rotations.getPitch(entity), -100, this::interact);
interact();
return;
}
}
}
private void interact() {
Block block = mc.world.getBlockState(entity.getBlockPos()).getBlock();
Block bottom = mc.world.getBlockState(entity.getBlockPos().down()).getBlock();
if (block.is(Blocks.WATER) || bottom.is(Blocks.GRASS_PATH))
return;
if (block.is(Blocks.GRASS))
mc.interactionManager.attackBlock(entity.getBlockPos(), Direction.DOWN);
LivingEntity animal = (LivingEntity) entity;
if (animal.getHealth() < 1) {
mc.interactionManager.attackBlock(entity.getBlockPos(), Direction.DOWN);
mc.interactionManager.attackBlock(entity.getBlockPos().west(), Direction.DOWN);
mc.interactionManager.attackBlock(entity.getBlockPos().east(), Direction.DOWN);
mc.interactionManager.attackBlock(entity.getBlockPos().north(), Direction.DOWN);
mc.interactionManager.attackBlock(entity.getBlockPos().south(), Direction.DOWN);
} else {
if (ticks >= tickInterval.get()) {
mc.interactionManager.interactBlock(mc.player, mc.world, Hand.MAIN_HAND, new BlockHitResult(
entity.getPos().subtract(new Vec3d(0, 1, 0)), Direction.UP, entity.getBlockPos().down(), false));
ticks = 0;
}
}
mc.player.inventory.selectedSlot = preSlot;
}
}

View File

@@ -0,0 +1,12 @@
package cloudburst.rejects.modules;
import cloudburst.rejects.RejectCategory;
import minegame159.meteorclient.modules.Module;
public class RenderInvisible extends Module {
public RenderInvisible() {
super(RejectCategory.Rejects, "render-invisible", "Renders invisible entities.");
}
}