Skip to content

Commit

Permalink
0.9.4 StorageLooter Module Added! Many fixes too
Browse files Browse the repository at this point in the history
- Added the **StorageLooter** module which automatically steals stuff from storage containers according to itemlists and a list of values that are set for amounts of those items to take. It either automatically opens the containers within reach and steals the stuff automatically, or steals the stuff automatically when you manually open the container.
- Fixed **InstaMineNuker** crashing the game and/or kicking you from the server due to a bug.
- Added a "blacklist" and "whitelist" mode for the item list setting in **SuperInstaMine**
- Fixed the crash caused by the custom Trouser-Streak random splash text being called.
- Cleaned up the code in **NbtEditor** to make it less complicated and silly.
- Re-Added "item" mode to **NbtEditor** for Minecraft 1.20.6, I got the illegal enchants working. The 1.20.4 version still has item mode.
- Fixed where the blockpos should be calculated for TickExploit in **NewerNewChunks**.
- Also confirmed TickExploit was actually just watching BlockUpdate packets so the option has been renamed to "BlockUpdateExploit" in **NewerNewChunks**.
  • Loading branch information
etianl authored Jun 10, 2024
1 parent 03a4897 commit a5a8e2c
Show file tree
Hide file tree
Showing 10 changed files with 1,395 additions and 598 deletions.
11 changes: 6 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,8 @@ This will return the lowest block placed with AutoMountain until AutoLavacast is
- **NbtEditor:** Requires Creative mode. Generates custom entities in the form of a custom spawn egg, generate items with custom enchantments (Only in Minecraft 1.20.4 and below), and potions with custom effects all based on the settings you configure. It can also copy the Nbt data from one item to another. (Credits to etianl :D)
- **NewerNewChunks:** NewChunks module with new newchunk estimation exploits, and the ability to save chunk data for later! Also with special options for tracing servers that have been updated from a version before the build limit updates, which throw false positives normally. (Credits to Meteor Rejects, and BleachHack from where it was ported, and etianl for updating :D.)
- *NewerNewChunks Notes:*
- The **TickExploit** option estimates possible newchunks based on block ticking packets. SOME OF THESE CHUNKS MAY BE OLD. Advanced Mode is needed to filter any false positives out. See Special Options notes for usage.
- The **TickExploit** option can produce false positives if you are hanging around in the same location for a while. It's best to keep moving fast for it to work best.
- The **BlockUpdateExploit** option estimates possible newchunks based on block update packets. SOME OF THESE CHUNKS MAY BE OLD. Advanced Mode is needed to filter any false positives out. See Special Options notes for usage.
- The **BlockUpdateExploit** option can produce false positives if you are hanging around in the same location for a while. It's best to keep moving fast for it to work best.
- NewerNewChunks stores your NewChunks data as text files seperately per server and per dimension in the NewChunks folder in your Minecraft folder.
- Save and Load ChunkData options are for the stored files.
- This enables you to chunk trace multiple different servers and dimensions without mixing NewChunks data.
Expand All @@ -102,9 +102,9 @@ This will return the lowest block placed with AutoMountain until AutoLavacast is
-------------------------------------------------------------------------------------
- ***NewerNewChunks Special Options:***
(These are to be used when the server has two distinct diamond layers, and two distinct lava pool layers underground at spawn.)
- The **"AdvancedMode"** highlights chunks that have flow only below Y0 as well as chunks that have been detected with the TickExploit option.
- If there is nothing but FlowBelowY0 chunks and OldChunks as well as a few TickExploit chunks, then you are updating Old Chunks to the new build limits and those are OLDCHUNKS. If the FlowIsBelowY0 are mixed with NewChunks and Tick Exploit coloured chunks they are NEWCHUNKS.
- When using Advanced mode if the Tick Exploit chunks appear infrequently and are combined with Old Chunks, then the chunks you are in are OLD. If there is alot of Tick Exploit chunks appearing and/or they are mixed with NewChunks then the chunks are NEW.
- The **"AdvancedMode"** highlights chunks that have flow only below Y0 as well as chunks that have been detected with the BlockUpdateExploit option.
- If there is nothing but FlowBelowY0 chunks and OldChunks as well as a few BlockUpdateExploit chunks, then you are updating Old Chunks to the new build limits and those are OLDCHUNKS. If the FlowIsBelowY0 are mixed with NewChunks and BlockUpdateExploit coloured chunks they are NEWCHUNKS.
- When using Advanced mode if the BlockUpdateExploit chunks appear infrequently and are combined with Old Chunks, then the chunks you are in are OLD. If there is alot of BlockUpdateExploit chunks appearing and/or they are mixed with NewChunks then the chunks are NEW.
- AdvancedMode can be confusing, do not use if you can't interpret the chunk data.
-------------------------------------------------------------------------------------
- The **"IgnoreFlowBelow0"** will render as an oldchunk if liquid flow is only below Y zero, and will show as a newchunk if flow is above Y zero, or both above AND below Y zero.
Expand All @@ -114,6 +114,7 @@ This will return the lowest block placed with AutoMountain until AutoLavacast is
- **OPServerKillModule:** Runs a set of operator commands to disable a server and cover up the tracks of the kill command. REQUIRES OP STATUS (Credits to etianl :D)
- **RedstoneNuker:** It's just the regular Nuker module from Meteor client, customized for only breaking things that generate redstone signals. Also with included AutoTool. To keep you safer when placing lots of TNT. (Credits to Meteor Client for Nuker code, and AutoTool code inthere.)
- **ShulkerDupe:** Duplicates the contents of a shulker when pressing "Dupe" or "Dupe All" in the shulker menu. Only works on Vanilla, Forge, and Fabric servers 1.19 and below. Use multiconnect or viafabric (Credits to Allah-Hack, I just brought back the buttons, and make it dupe slot1 as well.)
- **StorageLooter:** Automatically steals stuff from storage containers according to itemlists and a list of values that are set for amounts of those items to take. It either automatically opens the containers within reach and steals the stuff automatically, or steals the stuff automatically when you manually open the container. (Credits to etianl :D)
- **SuperInstaMine:** This SuperInstaMine originated from the Meteor Rejects Instamine. I added an option called "Break Modes (Range)" which allows you to break more than one block at a time with SuperInstaMine. This option works best against easy-breaking blocks. The option adjusts the positioning and range of the block breaking. (Credits to Meteor Rejects for the original code.) **ORIGINAL INSTAMINE FROM REJECTS CAN SOMETIMES WORK BETTER THAN THIS ONE, download meteor rejects for that!**
- **Teleport:** Sets your position ontop of targeted block, within a possible reach of 64 blocks. Rarely can cause damage, be careful. ***EXPERIMENTAL*** (Credits to etianl :D)
- **TPFly:** It is a purely setPos based flight. PointAndFly mode is based off the ClickTP and AirPlace code, credits to Meteor for that. ***EXPERIMENTAL, movement is a little weird lol.*** (Credits to etianl :D)
Expand Down
4 changes: 1 addition & 3 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,9 @@ yarn_mappings=1.20.6+build.1
loader_version=0.15.10

# Mod Properties
mod_version=0.9.3-1.20.6
mod_version=0.9.4-1.20.6
maven_group=pwn.noobs
archives_base_name=1trouser-streak

# Dependency Versionsz

# Meteor (https://maven.meteordev.org/)
meteor_version=0.5.7-SNAPSHOT
2 changes: 1 addition & 1 deletion src/main/java/pwn/noobs/trouserstreak/Trouser.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@ public class Trouser extends MeteorAddon {
@Override
public void onInitialize() {
LOG.info("Initializing PantsMod!");

Modules.get().add(new AutoLavaCaster());
Modules.get().add(new AutoMountain());
Modules.get().add(new AutoStaircase());
Modules.get().add(new TrouserBuild());
Modules.get().add(new TrailMaker());
Modules.get().add(new NewerNewChunks());
Modules.get().add(new StorageLooter());
Modules.get().add(new SuperInstaMine());
Modules.get().add(new InstaMineNuker());
Modules.get().add(new InstaSafetyBox());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

import java.util.Arrays;
import java.util.List;
import java.util.Random;

Expand All @@ -18,15 +17,18 @@ public class TrouserSplashTextMixin {
@Unique
private boolean override = true;
@Unique
private final Random random = new Random();
private int currentIndex = 0;
@Unique
private final List<String> TrouserSplashes = getTrouserSplashes();

@Inject(method = "get", at = @At("HEAD"), cancellable = true)
private void onApply(CallbackInfoReturnable<SplashTextRenderer> cir) {
if (Config.get() == null || !Config.get().titleScreenSplashes.get()) return;

if (override) cir.setReturnValue(new SplashTextRenderer(TrouserSplashes.get(random.nextInt(TrouserSplashes.size()))));
if (override) {
currentIndex = new Random().nextInt(TrouserSplashes.size());
cir.setReturnValue(new SplashTextRenderer(TrouserSplashes.get(currentIndex)));
}
override = !override;
}

Expand Down
33 changes: 21 additions & 12 deletions src/main/java/pwn/noobs/trouserstreak/modules/InstaMineNuker.java
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ public InstaMineNuker() {

@Override
public void onActivate() {
direction=mc.player.getHorizontalFacing();
ticks = 0;
for (RenderBlock renderBlock : renderBlocks) renderBlockPool.free(renderBlock);
renderBlocks.clear();
Expand Down Expand Up @@ -190,10 +191,12 @@ private void onTickPre(TickEvent.Pre event) {
if (onlyInstamineable.get()){
if (!skippableBlox.get().contains(mc.world.getBlockState(blockPos).getBlock()) && rotate.get() && BlockUtils.canBreak(blockPos) && BlockUtils.canInstaBreak(blockPos)){
renderBlocks.add(renderBlockPool.get().set(blockPos));
Rotations.rotate(Rotations.getYaw(blockPos), Rotations.getPitch(blockPos), () -> mc.getNetworkHandler().sendPacket(new PlayerActionC2SPacket(PlayerActionC2SPacket.Action.START_DESTROY_BLOCK, blockPos, direction)));
if (swing.get()){
mc.getNetworkHandler().sendPacket(new HandSwingC2SPacket(Hand.MAIN_HAND));
mc.player.swingHand(Hand.MAIN_HAND);
if (direction != null) {
Rotations.rotate(Rotations.getYaw(blockPos), Rotations.getPitch(blockPos), () -> mc.getNetworkHandler().sendPacket(new PlayerActionC2SPacket(PlayerActionC2SPacket.Action.START_DESTROY_BLOCK, blockPos, direction)));
if (swing.get()){
mc.getNetworkHandler().sendPacket(new HandSwingC2SPacket(Hand.MAIN_HAND));
mc.player.swingHand(Hand.MAIN_HAND);
}
}
}
else if (!skippableBlox.get().contains(mc.world.getBlockState(blockPos).getBlock()) && !rotate.get() && BlockUtils.canBreak(blockPos) && BlockUtils.canInstaBreak(blockPos)){
Expand All @@ -205,8 +208,10 @@ else if (!skippableBlox.get().contains(mc.world.getBlockState(blockPos).getBlock
}
}
if (!skippableBlox.get().contains(mc.world.getBlockState(blockPos).getBlock()) && rotate.get() && BlockUtils.canBreak(blockPos) && BlockUtils.canInstaBreak(blockPos)){
Rotations.rotate(Rotations.getYaw(blockPos), Rotations.getPitch(blockPos), () -> mc.getNetworkHandler().sendPacket(new PlayerActionC2SPacket(PlayerActionC2SPacket.Action.STOP_DESTROY_BLOCK, blockPos, direction)));
count++;
if (direction != null) {
Rotations.rotate(Rotations.getYaw(blockPos), Rotations.getPitch(blockPos), () -> mc.getNetworkHandler().sendPacket(new PlayerActionC2SPacket(PlayerActionC2SPacket.Action.STOP_DESTROY_BLOCK, blockPos, direction)));
count++;
}
}
else if (!skippableBlox.get().contains(mc.world.getBlockState(blockPos).getBlock()) && !rotate.get() && BlockUtils.canBreak(blockPos) && BlockUtils.canInstaBreak(blockPos)){
mc.getNetworkHandler().sendPacket(new PlayerActionC2SPacket(PlayerActionC2SPacket.Action.STOP_DESTROY_BLOCK, blockPos, direction));
Expand All @@ -215,10 +220,12 @@ else if (!skippableBlox.get().contains(mc.world.getBlockState(blockPos).getBlock
} else if (!onlyInstamineable.get()) {
if (!skippableBlox.get().contains(mc.world.getBlockState(blockPos).getBlock()) && rotate.get() && BlockUtils.canBreak(blockPos)){
renderBlocks.add(renderBlockPool.get().set(blockPos));
Rotations.rotate(Rotations.getYaw(blockPos), Rotations.getPitch(blockPos), () -> mc.getNetworkHandler().sendPacket(new PlayerActionC2SPacket(PlayerActionC2SPacket.Action.START_DESTROY_BLOCK, blockPos, direction)));
if (swing.get()){
mc.getNetworkHandler().sendPacket(new HandSwingC2SPacket(Hand.MAIN_HAND));
mc.player.swingHand(Hand.MAIN_HAND);
if (direction != null) {
Rotations.rotate(Rotations.getYaw(blockPos), Rotations.getPitch(blockPos), () -> mc.getNetworkHandler().sendPacket(new PlayerActionC2SPacket(PlayerActionC2SPacket.Action.START_DESTROY_BLOCK, blockPos, direction)));
if (swing.get()){
mc.getNetworkHandler().sendPacket(new HandSwingC2SPacket(Hand.MAIN_HAND));
mc.player.swingHand(Hand.MAIN_HAND);
}
}
}
else if (!skippableBlox.get().contains(mc.world.getBlockState(blockPos).getBlock()) && !rotate.get() && BlockUtils.canBreak(blockPos)){
Expand All @@ -230,8 +237,10 @@ else if (!skippableBlox.get().contains(mc.world.getBlockState(blockPos).getBlock
}
}
if (!skippableBlox.get().contains(mc.world.getBlockState(blockPos).getBlock()) && rotate.get() && BlockUtils.canBreak(blockPos)){
Rotations.rotate(Rotations.getYaw(blockPos), Rotations.getPitch(blockPos), () -> mc.getNetworkHandler().sendPacket(new PlayerActionC2SPacket(PlayerActionC2SPacket.Action.STOP_DESTROY_BLOCK, blockPos, direction)));
count++;
if (direction != null) {
Rotations.rotate(Rotations.getYaw(blockPos), Rotations.getPitch(blockPos), () -> mc.getNetworkHandler().sendPacket(new PlayerActionC2SPacket(PlayerActionC2SPacket.Action.STOP_DESTROY_BLOCK, blockPos, direction)));
count++;
}
}
else if (!skippableBlox.get().contains(mc.world.getBlockState(blockPos).getBlock()) && !rotate.get() && BlockUtils.canBreak(blockPos)){
mc.getNetworkHandler().sendPacket(new PlayerActionC2SPacket(PlayerActionC2SPacket.Action.STOP_DESTROY_BLOCK, blockPos, direction));
Expand Down
Loading

0 comments on commit a5a8e2c

Please sign in to comment.