Skip to content

Commit

Permalink
0.8.2 AutoTitles module added + .autovaultclip added
Browse files Browse the repository at this point in the history
**0.8.2** 
- Added the AutoTitles module which can display text (such as advertisements) across the screen of all the individuals who are online on a server at the time. Requires OP status. Credits to [ogmur](https://www.youtube.com/@Ogmur) for figuring out these commands, and to etianl for writing a module for it.
- Added AutoVaultClip command which is accessable by doing .autovaultclip and choosing either up, down, or highest. The highest option will tp you to the highest possible block above you. Credits to [agreed31579](https://github.com/agreed31579) who based it off of the .autovclip command and Meteor Client's vclip command.
- Fixed a bug with BetterAutoSign where it was spamming a chain of hanging signs when trying to place one with the "Both Sides" option enabled.
- Fixed BetterAutoSign sometimes not writing the backside of hanging signs. 
- Added an error message to BetterAutoSign mentioning a bug when using SignAura and holding a hanging sign.
- Added a message to CrashCommand telling you what player you are crashing when you run it.
- Made the "/fill Around All Other Players" option in HandOfGod actually /fill all the players on a server, instead of just the ones within render distance. A new option has been added if you just want to do the players within render.
- Added a "Max Targets" option for LavaAura instead of just targeting every entity within range.
- Order priority for targeting entities with LavaAura is now ordered from closest to furthest.
- Fixed the math in LavaAura used for checking for obstructions when picking up the lava
  • Loading branch information
etianl authored Feb 4, 2024
1 parent 282edac commit 76e9c46
Show file tree
Hide file tree
Showing 11 changed files with 509 additions and 146 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ This will return the lowest block placed with AutoMountain until AutoLavacast is
- Start building, then hold SneakKey and also hold Left or RightKey as well to build stairs diagonally. Release left or right key first to continue building in the direction you were prior.
- **AutoScoreboard:** Automates the creation of a custom scoreboard. Useful for advertising on griefed servers. Requires OP status. Credits to [aaaasdfghjkllll](https://github.com/aaaasdfghjkllll)
- **AutoStaircase:** Builds stairs upward in the direction you are facing by running forward and jumping. (Credits to etianl for bringing it to life! As well as Credits to Frostburn for writing the original. <3) I just had to fix up some stuff for this one but Frostburn had the base code there. I believe this is the first publicly available automatic staircase builder in a Meteor addon, correct me if I'm wrong maybe I didn't have to learn some Java to do this.
- **AutoTitles:** Displays text (such as advertisements) across the screen of all the individuals who are online on a server at the time. Requires OP status. Credits to [ogmur](https://www.youtube.com/@Ogmur) for figuring out these commands, and to etianl for writing a module for it.
- **AutoVclipCommand** Automatically selects the nearest two block gap going either up or down to vclip into. (Credits to etianl, and credits to the original [AutoVclip](https://github.com/kittenvr/AutoVclip) for minecraft 1.19.2 which inspired me to make this one. :D)
- **BaseFinder:** Automatically detects if a Base or Build could be in a chunk by checking every block in each chunk to see if there are "Un-natural" blocks within them. (Credits to etianl :D, and to Meteor-Rejects for some code from newchunks.)
- *BaseFinder Notes:*
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ yarn_mappings=1.20.4+build.3
loader_version=0.15.3

# Mod Properties
mod_version=0.8.1-1.20.4
mod_version=0.8.2-1.20.4
maven_group=pwn.noobs
archives_base_name=1trouser-streak

Expand Down
3 changes: 2 additions & 1 deletion src/main/java/pwn/noobs/trouserstreak/Trouser.java
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ public void onInitialize() {
Modules.get().add(new BlockListMineCommand());
Modules.get().add(new AutoCommand());
Modules.get().add(new AutoScoreboard());
Modules.get().add(new AutoTitles());
Commands.add(new LavaTimeCalculator());
Commands.add(new CasterTimer());
Commands.add(new NewChunkCounter());
Expand All @@ -70,4 +71,4 @@ public String getPackage() {
return "pwn.noobs.trouserstreak";
}

}
}
208 changes: 104 additions & 104 deletions src/main/java/pwn/noobs/trouserstreak/commands/AutoVaultClipCommand.java
Original file line number Diff line number Diff line change
@@ -1,104 +1,104 @@
package pwn.noobs.trouserstreak.commands;

import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import meteordevelopment.meteorclient.commands.Command;
import net.minecraft.block.Blocks;
import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.command.CommandSource;
import net.minecraft.entity.Entity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket;
import net.minecraft.network.packet.c2s.play.VehicleMoveC2SPacket;

import static com.mojang.brigadier.Command.SINGLE_SUCCESS;
import static meteordevelopment.meteorclient.MeteorClient.mc;

public class AutoVaultClipCommand extends Command {
public AutoVaultClipCommand() {
super("autovaultclip", "Lets you clip through blocks vertically automatically, with vault clip bypass implemented. Works on Paper, Spigot, but not always on Vanilla.");
}
@Override
public void build(LiteralArgumentBuilder<CommandSource> builder) {
builder.executes(ctx -> {
error("Choose Up, Down or Highest");
return SINGLE_SUCCESS;
});
builder.then(literal("up").executes(ctx -> {
ClientPlayerEntity player = mc.player;
assert player != null;
for (int i = 0; i < 199; i++) {
BlockPos isopenair1 = (player.getBlockPos().add(0,i+2,0));
BlockPos isopenair2 = (player.getBlockPos().add(0,i+3,0));
if (mc.world.getBlockState(isopenair1).isReplaceable() && mc.world.getFluidState(isopenair1).isEmpty() && !mc.world.getBlockState(isopenair1).isOf(Blocks.POWDER_SNOW) && mc.world.getBlockState(isopenair2).isReplaceable() && mc.world.getFluidState(isopenair2).isEmpty() && !mc.world.getBlockState(isopenair2).isOf(Blocks.POWDER_SNOW)){
int packetsRequired = 20;
if (player.hasVehicle()) {
Entity vehicle = player.getVehicle();
for (int packetNumber = 0; packetNumber < (packetsRequired - 1); packetNumber++) {
mc.player.networkHandler.sendPacket(new VehicleMoveC2SPacket(mc.player.getVehicle()));
}
vehicle.setPosition(vehicle.getX(), isopenair1.getY(), vehicle.getZ());
}
for (int packetNumber = 0; packetNumber < (packetsRequired - 1); packetNumber++) {
mc.player.networkHandler.sendPacket(new PlayerMoveC2SPacket.OnGroundOnly(true));
}
player.setPosition(player.getX(), isopenair1.getY(), player.getZ());
return SINGLE_SUCCESS;
}
}
error("No gap found to vclip into");
return SINGLE_SUCCESS;
}));
builder.then(literal("down").executes(ctx -> {
ClientPlayerEntity player = mc.player;
assert player != null;
for (int i = 0; i > -199; i--) {
BlockPos isopenair1 = (player.getBlockPos().add(0,i,0));
BlockPos isopenair2 = (player.getBlockPos().add(0,i-1,0));
if (mc.world.getBlockState(isopenair1).isReplaceable() && mc.world.getFluidState(isopenair1).isEmpty() && !mc.world.getBlockState(isopenair1).isOf(Blocks.POWDER_SNOW) && mc.world.getBlockState(isopenair2).isReplaceable() && mc.world.getFluidState(isopenair2).isEmpty() && !mc.world.getBlockState(isopenair2).isOf(Blocks.POWDER_SNOW)){
int packetsRequired = 20;
if (player.hasVehicle()) {
Entity vehicle = player.getVehicle();
for (int packetNumber = 0; packetNumber < (packetsRequired - 1); packetNumber++) {
mc.player.networkHandler.sendPacket(new VehicleMoveC2SPacket(mc.player.getVehicle()));
}
vehicle.setPosition(vehicle.getX(), isopenair2.getY(), vehicle.getZ());
}
for (int packetNumber = 0; packetNumber < (packetsRequired - 1); packetNumber++) {
mc.player.networkHandler.sendPacket(new PlayerMoveC2SPacket.OnGroundOnly(true));
}
player.setPosition(player.getX(), isopenair2.getY(), player.getZ());
return SINGLE_SUCCESS;
}
}
error("No gap found to vclip into");
return SINGLE_SUCCESS;
}));
builder.then(literal("highest").executes(ctx -> {
ClientPlayerEntity player = mc.player;
assert player != null;

for (int i = 199; i > 0; i--) {
BlockPos isopenair1 = (player.getBlockPos().add(0,i,0));
BlockPos newopenair2 = isopenair1.up(1);
if (!mc.world.getBlockState(isopenair1).isReplaceable() && !mc.world.getBlockState(isopenair1).isOf(Blocks.POWDER_SNOW) && mc.world.getFluidState(isopenair1).isEmpty()) {
int packetsRequired = 20;
if (player.hasVehicle()) {
Entity vehicle = player.getVehicle();
for (int packetNumber = 0; packetNumber < (packetsRequired - 1); packetNumber++) {
mc.player.networkHandler.sendPacket(new VehicleMoveC2SPacket(mc.player.getVehicle()));
}

vehicle.setPosition(vehicle.getX(), newopenair2.getY(), vehicle.getZ());
}
for (int packetNumber = 0; packetNumber < (packetsRequired - 1); packetNumber++) {
mc.player.networkHandler.sendPacket(new PlayerMoveC2SPacket.OnGroundOnly(true));
}
player.setPosition(player.getX(), newopenair2.getY(), player.getZ());
return SINGLE_SUCCESS;
}
}
error("No blocks above you found!");
return SINGLE_SUCCESS;
}));
}
}
package pwn.noobs.trouserstreak.commands;

import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import meteordevelopment.meteorclient.commands.Command;
import net.minecraft.block.Blocks;
import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.command.CommandSource;
import net.minecraft.entity.Entity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket;
import net.minecraft.network.packet.c2s.play.VehicleMoveC2SPacket;

import static com.mojang.brigadier.Command.SINGLE_SUCCESS;
import static meteordevelopment.meteorclient.MeteorClient.mc;

public class AutoVaultClipCommand extends Command {
public AutoVaultClipCommand() {
super("autovaultclip", "Lets you clip through blocks vertically automatically, with vault clip bypass implemented. Works on Paper, Spigot, but not always on Vanilla.");
}
@Override
public void build(LiteralArgumentBuilder<CommandSource> builder) {
builder.executes(ctx -> {
error("Choose Up, Down or Highest");
return SINGLE_SUCCESS;
});
builder.then(literal("up").executes(ctx -> {
ClientPlayerEntity player = mc.player;
assert player != null;
for (int i = 0; i < 199; i++) {
BlockPos isopenair1 = (player.getBlockPos().add(0,i+2,0));
BlockPos isopenair2 = (player.getBlockPos().add(0,i+3,0));
if (mc.world.getBlockState(isopenair1).isReplaceable() && mc.world.getFluidState(isopenair1).isEmpty() && !mc.world.getBlockState(isopenair1).isOf(Blocks.POWDER_SNOW) && mc.world.getBlockState(isopenair2).isReplaceable() && mc.world.getFluidState(isopenair2).isEmpty() && !mc.world.getBlockState(isopenair2).isOf(Blocks.POWDER_SNOW)){
int packetsRequired = 20;
if (player.hasVehicle()) {
Entity vehicle = player.getVehicle();
for (int packetNumber = 0; packetNumber < (packetsRequired - 1); packetNumber++) {
mc.player.networkHandler.sendPacket(new VehicleMoveC2SPacket(mc.player.getVehicle()));
}
vehicle.setPosition(vehicle.getX(), isopenair1.getY(), vehicle.getZ());
}
for (int packetNumber = 0; packetNumber < (packetsRequired - 1); packetNumber++) {
mc.player.networkHandler.sendPacket(new PlayerMoveC2SPacket.OnGroundOnly(true));
}
player.setPosition(player.getX(), isopenair1.getY(), player.getZ());
return SINGLE_SUCCESS;
}
}
error("No gap found to vclip into");
return SINGLE_SUCCESS;
}));
builder.then(literal("down").executes(ctx -> {
ClientPlayerEntity player = mc.player;
assert player != null;
for (int i = 0; i > -199; i--) {
BlockPos isopenair1 = (player.getBlockPos().add(0,i,0));
BlockPos isopenair2 = (player.getBlockPos().add(0,i-1,0));
if (mc.world.getBlockState(isopenair1).isReplaceable() && mc.world.getFluidState(isopenair1).isEmpty() && !mc.world.getBlockState(isopenair1).isOf(Blocks.POWDER_SNOW) && mc.world.getBlockState(isopenair2).isReplaceable() && mc.world.getFluidState(isopenair2).isEmpty() && !mc.world.getBlockState(isopenair2).isOf(Blocks.POWDER_SNOW)){
int packetsRequired = 20;
if (player.hasVehicle()) {
Entity vehicle = player.getVehicle();
for (int packetNumber = 0; packetNumber < (packetsRequired - 1); packetNumber++) {
mc.player.networkHandler.sendPacket(new VehicleMoveC2SPacket(mc.player.getVehicle()));
}
vehicle.setPosition(vehicle.getX(), isopenair2.getY(), vehicle.getZ());
}
for (int packetNumber = 0; packetNumber < (packetsRequired - 1); packetNumber++) {
mc.player.networkHandler.sendPacket(new PlayerMoveC2SPacket.OnGroundOnly(true));
}
player.setPosition(player.getX(), isopenair2.getY(), player.getZ());
return SINGLE_SUCCESS;
}
}
error("No gap found to vclip into");
return SINGLE_SUCCESS;
}));
builder.then(literal("highest").executes(ctx -> {
ClientPlayerEntity player = mc.player;
assert player != null;

for (int i = 199; i > 0; i--) {
BlockPos isopenair1 = (player.getBlockPos().add(0,i,0));
BlockPos newopenair2 = isopenair1.up(1);
if (!mc.world.getBlockState(isopenair1).isReplaceable() && !mc.world.getBlockState(isopenair1).isOf(Blocks.POWDER_SNOW) && mc.world.getFluidState(isopenair1).isEmpty()) {
int packetsRequired = 20;
if (player.hasVehicle()) {
Entity vehicle = player.getVehicle();
for (int packetNumber = 0; packetNumber < (packetsRequired - 1); packetNumber++) {
mc.player.networkHandler.sendPacket(new VehicleMoveC2SPacket(mc.player.getVehicle()));
}

vehicle.setPosition(vehicle.getX(), newopenair2.getY(), vehicle.getZ());
}
for (int packetNumber = 0; packetNumber < (packetsRequired - 1); packetNumber++) {
mc.player.networkHandler.sendPacket(new PlayerMoveC2SPacket.OnGroundOnly(true));
}
player.setPosition(player.getX(), newopenair2.getY(), player.getZ());
return SINGLE_SUCCESS;
}
}
error("No blocks above you found!");
return SINGLE_SUCCESS;
}));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -58,4 +58,4 @@ public void build(LiteralArgumentBuilder<CommandSource> builder) {
return SINGLE_SUCCESS;
}));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import meteordevelopment.meteorclient.commands.arguments.PlayerListEntryArgumentType;
import meteordevelopment.meteorclient.utils.player.ChatUtils;
import net.minecraft.command.CommandSource;
import net.minecraft.text.Text;

import static com.mojang.brigadier.Command.SINGLE_SUCCESS;
import static meteordevelopment.meteorclient.MeteorClient.mc;
Expand All @@ -20,6 +21,7 @@ public void build(LiteralArgumentBuilder<CommandSource> builder) {
builder.then(argument("player", PlayerListEntryArgumentType.create()).executes(context -> {
GameProfile profile = PlayerListEntryArgumentType.get(context).getProfile();
if(mc.player.hasPermissionLevel(2)) ChatUtils.sendPlayerMsg("/execute at " + profile.getName() + " run particle ash ~ ~ ~ 1 1 1 1 2147483647 force " + profile.getName());
ChatUtils.sendMsg(Text.of("Crashing player: "+profile.getName()));
return SINGLE_SUCCESS;
}));
}
Expand Down
Loading

0 comments on commit 76e9c46

Please sign in to comment.