aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/ftbsc/bscv/commands/BlockSearch.java15
-rw-r--r--src/main/java/ftbsc/bscv/commands/ItemCommand.java14
-rw-r--r--src/main/java/ftbsc/bscv/modules/hud/InfoDisplay.java11
-rw-r--r--src/main/java/ftbsc/bscv/modules/self/AutoFish.java15
-rw-r--r--src/main/java/ftbsc/bscv/modules/vision/UpdateESP.java8
5 files changed, 55 insertions, 8 deletions
diff --git a/src/main/java/ftbsc/bscv/commands/BlockSearch.java b/src/main/java/ftbsc/bscv/commands/BlockSearch.java
index dd5f663..17d1fb0 100644
--- a/src/main/java/ftbsc/bscv/commands/BlockSearch.java
+++ b/src/main/java/ftbsc/bscv/commands/BlockSearch.java
@@ -9,6 +9,8 @@ import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.command.CommandSource;
import net.minecraft.command.Commands;
+import net.minecraft.command.arguments.BlockStateArgument;
+import net.minecraft.command.arguments.BlockStateInput;
import static ftbsc.bscv.Boscovicino.log;
@@ -48,6 +50,19 @@ public class BlockSearch extends AbstractCommand {
)
)
)
+ .then(
+ Commands.literal("id")
+ .then(
+ Commands.argument("name", BlockStateArgument.block())
+ .executes( ctx -> {
+ BlockStateInput arg = ctx.getArgument("name", BlockStateInput.class);
+ BlockState state = arg.getState();
+ int block_id = Block.getId(state);
+ log("block #[%d:%d] >> %s", block_id >> 4, block_id & 0xF, state.toString());
+ return 1;
+ })
+ )
+ )
.executes(ctx -> {
log("no block specified");
return 0;
diff --git a/src/main/java/ftbsc/bscv/commands/ItemCommand.java b/src/main/java/ftbsc/bscv/commands/ItemCommand.java
index e1e1b80..c380609 100644
--- a/src/main/java/ftbsc/bscv/commands/ItemCommand.java
+++ b/src/main/java/ftbsc/bscv/commands/ItemCommand.java
@@ -8,6 +8,8 @@ import ftbsc.bscv.api.ILoadable;
import ftbsc.bscv.tools.Inventory;
import net.minecraft.command.CommandSource;
import net.minecraft.command.Commands;
+import net.minecraft.command.arguments.ItemArgument;
+import net.minecraft.command.arguments.ItemInput;
import net.minecraft.inventory.container.Slot;
import net.minecraft.item.Item;
@@ -48,6 +50,18 @@ public class ItemCommand extends AbstractCommand {
})
)
)
+ .then(
+ Commands.literal("id")
+ .then(
+ Commands.argument("name", ItemArgument.item())
+ .executes( ctx -> {
+ ItemInput arg = ctx.getArgument("name", ItemInput.class);
+ Item item = arg.getItem();
+ log("item #[%d] >> %s", Item.getId(item), item.toString());
+ return 1;
+ })
+ )
+ )
.executes(ctx -> {
Slot slot = Inventory.hotbar(MC.player).get(MC.player.inventory.selected);
if (!slot.hasItem()) return 0;
diff --git a/src/main/java/ftbsc/bscv/modules/hud/InfoDisplay.java b/src/main/java/ftbsc/bscv/modules/hud/InfoDisplay.java
index 2df6b10..6553e94 100644
--- a/src/main/java/ftbsc/bscv/modules/hud/InfoDisplay.java
+++ b/src/main/java/ftbsc/bscv/modules/hud/InfoDisplay.java
@@ -175,10 +175,13 @@ public class InfoDisplay extends HudModule {
@SubscribeEvent
public void onRenderOverlay(RenderGameOverlayEvent event) {
- if (event.getType() == ElementType.POTION_ICONS) {
- if (this.hide_effects.get() && event.isCancelable()) {
- event.setCanceled(true);
- }
+ if (
+ event.getType() == ElementType.POTION_ICONS
+ && MC.screen == null
+ && this.hide_effects.get()
+ && event.isCancelable()
+ ) {
+ event.setCanceled(true);
}
if (event.getType() != ElementType.TEXT) return;
diff --git a/src/main/java/ftbsc/bscv/modules/self/AutoFish.java b/src/main/java/ftbsc/bscv/modules/self/AutoFish.java
index 9394233..bed4e9e 100644
--- a/src/main/java/ftbsc/bscv/modules/self/AutoFish.java
+++ b/src/main/java/ftbsc/bscv/modules/self/AutoFish.java
@@ -9,6 +9,7 @@ import net.minecraft.client.Minecraft;
import net.minecraft.network.play.server.SPlaySoundEffectPacket;
import net.minecraft.util.Hand;
import net.minecraft.util.SoundEvents;
+import net.minecraft.util.math.vector.Vector3d;
import net.minecraftforge.common.ForgeConfigSpec;
import net.minecraftforge.eventbus.api.SubscribeEvent;
@@ -17,6 +18,7 @@ public class AutoFish extends AbstractModule {
public final ForgeConfigSpec.ConfigValue<Boolean> recast;
public final ForgeConfigSpec.ConfigValue<Integer> delay;
+ public final ForgeConfigSpec.ConfigValue<Double> distance;
// public final ForgeConfigSpec.ConfigValue<Long> reaction;
public AutoFish() {
@@ -33,13 +35,23 @@ public class AutoFish extends AbstractModule {
.name("delay")
.comment("how long in ms to wait before recasting hook")
.build(this);
+
+ this.distance = Setting.Decimal.builder()
+ .fallback(0.)
+ .name("distance")
+ .comment("ignore splashes further than X blocks, set to 0 to disable")
+ .build(this);
}
@SubscribeEvent
public void onPacket(PacketEvent.Incoming event) {
if (event.packet instanceof SPlaySoundEffectPacket) {
SPlaySoundEffectPacket packet = (SPlaySoundEffectPacket) event.packet;
- if (packet.getSound().equals(SoundEvents.FISHING_BOBBER_SPLASH)) {
+ Vector3d location = new Vector3d(packet.getX(), packet.getY(), packet.getZ());
+ if (
+ packet.getSound().equals(SoundEvents.FISHING_BOBBER_SPLASH)
+ && (this.distance.get() == 0 || MC.player.position().distanceTo(location) < this.distance.get())
+ ) {
MC.gameMode.useItem(MC.player, MC.level, Hand.MAIN_HAND);
if (this.recast.get()) {
new RecastThread(MC, this.delay.get()).start();
@@ -48,6 +60,7 @@ public class AutoFish extends AbstractModule {
}
}
+ // TODO don't spawn a thread, minecraft has a way to schedule actions for later
private class RecastThread extends Thread {
private long delay;
private Minecraft mc;
diff --git a/src/main/java/ftbsc/bscv/modules/vision/UpdateESP.java b/src/main/java/ftbsc/bscv/modules/vision/UpdateESP.java
index d541183..7abf4ff 100644
--- a/src/main/java/ftbsc/bscv/modules/vision/UpdateESP.java
+++ b/src/main/java/ftbsc/bscv/modules/vision/UpdateESP.java
@@ -9,7 +9,7 @@ import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem;
import ftbsc.bscv.api.ILoadable;
-import ftbsc.bscv.modules.QuickModule;
+import ftbsc.bscv.modules.AbstractModule;
import ftbsc.bscv.patches.PacketPatch.PacketEvent;
import ftbsc.bscv.tools.Setting;
import net.minecraft.client.renderer.BufferBuilder;
@@ -18,8 +18,10 @@ import net.minecraft.client.renderer.WorldRenderer;
import net.minecraft.client.renderer.WorldVertexBufferUploader;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.network.play.server.SChangeBlockPacket;
+import net.minecraft.network.play.server.SChunkDataPacket;
import net.minecraft.network.play.server.SMultiBlockChangePacket;
import net.minecraft.util.Tuple;
+import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.vector.Vector3d;
import net.minecraft.util.math.vector.Vector3i;
import net.minecraftforge.client.event.RenderWorldLastEvent;
@@ -29,7 +31,7 @@ import net.minecraftforge.event.TickEvent.Phase;
import net.minecraftforge.eventbus.api.SubscribeEvent;
@AutoService(ILoadable.class)
-public class UpdateESP extends QuickModule {
+public class UpdateESP extends AbstractModule {
public final ForgeConfigSpec.ConfigValue<Integer> duration;
public final ForgeConfigSpec.ConfigValue<Double> alpha;
@@ -142,7 +144,7 @@ public class UpdateESP extends QuickModule {
if (event.packet instanceof SMultiBlockChangePacket) {
SMultiBlockChangePacket packet = (SMultiBlockChangePacket) event.packet;
- packet.runUpdates( (pos, state) -> this.updates.add(new Tuple<>(pos, System.currentTimeMillis())) );
+ packet.runUpdates( (pos, state) -> this.updates.add(new Tuple<>(new BlockPos(pos), System.currentTimeMillis())) );
}
}
}