Better logic for elytrafly and change chestnotifier to storagenotifier

This commit is contained in:
Alex 2020-04-23 15:59:35 +02:00
parent 228f884d91
commit 01efe24e23
Signed by: caskd
GPG Key ID: F92BA85F61F4C173
5 changed files with 80 additions and 78 deletions

View File

@ -21,7 +21,7 @@ apply plugin: "com.github.johnrengelman.shadow"
version = "3.0"
group = "me.rigamortis"
archivesBaseName = "seppuku"
def buildmode = "IDE"
def buildmode = "release"
sourceCompatibility = targetCompatibility = '1.8' // Need this here so eclipse task generates correctly.
compileJava {
@ -121,11 +121,3 @@ processResources {
exclude 'mcmod.info'
}
}
if (buildmode.equals("IDE")) {
sourceSets {
main {
output.resourcesDir = output.classesDir
}
}
}

View File

@ -134,7 +134,7 @@ public final class ModuleManager {
add(new ObsidianReplaceModule());
add(new ChatTimeStampsModule());
add(new HudEditorModule());
add(new ChestAlertModule());
add(new StorageAlertModule());
add(new StrafeModule());
add(new MapBypassModule());
add(new NoBossHealthModule());

View File

@ -1,61 +0,0 @@
package me.rigamortis.seppuku.impl.module.misc;
import me.rigamortis.seppuku.Seppuku;
import me.rigamortis.seppuku.api.event.EventStageable;
import me.rigamortis.seppuku.api.event.network.EventReceivePacket;
import me.rigamortis.seppuku.api.module.Module;
import me.rigamortis.seppuku.api.value.Value;
import net.minecraft.client.Minecraft;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.play.server.SPacketChunkData;
import team.stiff.pomelo.impl.annotated.handler.annotation.Listener;
/**
* Author Seth
* 8/25/2019 @ 10:27 PM.
*/
public final class ChestAlertModule extends Module {
public final Value<Mode> mode = new Value<Mode>("Mode", new String[]{"Mode", "M"}, "Change between alert modes.", Mode.CHAT);
private enum Mode {
CHAT, NOTIFICATION, BOTH
}
public ChestAlertModule() {
super("ChestAlert", new String[]{"ChestAlerts"}, "Alerts you how many chests are in a chunk when it's loaded", "NONE", -1, ModuleType.MISC);
}
@Listener
public void recievePacket(EventReceivePacket event) {
if (event.getStage() == EventStageable.EventStage.POST) {
if (event.getPacket() instanceof SPacketChunkData) {
final SPacketChunkData packet = (SPacketChunkData) event.getPacket();
final Minecraft mc = Minecraft.getMinecraft();
int count = 0;
for(NBTTagCompound tag : packet.getTileEntityTags()) {
final String id = tag.getString("id");
if(id.equals("minecraft:chest")) {
count++;
}
}
if(count > 0) {
final String message = count + " Chests located at X: " + packet.getChunkX() * 16 + " Z: " + packet.getChunkZ() * 16;
if (this.mode.getValue() == Mode.CHAT || this.mode.getValue() == Mode.BOTH) {
Seppuku.INSTANCE.logChat(message);
}
if (this.mode.getValue() == Mode.NOTIFICATION || this.mode.getValue() == Mode.BOTH) {
Seppuku.INSTANCE.getNotificationManager().addNotification("", message);
}
}
}
}
}
}

View File

@ -0,0 +1,76 @@
package me.rigamortis.seppuku.impl.module.misc;
import me.rigamortis.seppuku.Seppuku;
import me.rigamortis.seppuku.api.event.EventStageable;
import me.rigamortis.seppuku.api.event.network.EventReceivePacket;
import me.rigamortis.seppuku.api.module.Module;
import me.rigamortis.seppuku.api.value.Value;
import net.minecraft.client.Minecraft;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.play.server.SPacketChunkData;
import team.stiff.pomelo.impl.annotated.handler.annotation.Listener;
/**
* Author Seth
* 8/25/2019 @ 10:27 PM.
*/
public final class StorageAlertModule extends Module {
public final Value<Mode> mode = new Value<Mode>("Mode", new String[]{"Mode", "M"}, "Change between alert modes.", Mode.CHAT);
public final Value<Boolean> chests = new Value<Boolean>("Chests", new String[]{"Chests", "chest"}, "Count chests.", true);
public final Value<Boolean> echests = new Value<Boolean>("EnderChests", new String[]{"EnderChests", "echest"}, "Count ender chests.", false);
public final Value<Boolean> shulkers = new Value<Boolean>("ShulkerBoxes", new String[]{"ShulkerBoxes", "shul"}, "Count shulkers.", false);
public final Value<Boolean> hoppers = new Value<Boolean>("Hoppers", new String[]{"Hoppers", "hopp"}, "Count hoppers.", false);
public final Value<Boolean> droppers = new Value<Boolean>("Droppers", new String[]{"Droppers", "drop"}, "Count droppers.", false);
public final Value<Boolean> dispensers = new Value<Boolean>("Dispensers", new String[]{"Dispensers", "disp"}, "Count dispensers.", false);
public final Value<Boolean> stands = new Value<Boolean>("BrewingStands", new String[]{"BrewingStands", "brew"}, "Count brewing stands.", false);
private enum Mode {
CHAT, NOTIFICATION, BOTH
}
public StorageAlertModule() {
super("StorageAlert", new String[]{"StorageAlerts"}, "Alerts you how many storage blocks are in a chunk when it's loaded", "NONE", -1, ModuleType.MISC);
}
@Listener
public void recievePacket(EventReceivePacket event) {
if (event.getStage() == EventStageable.EventStage.POST) {
if (event.getPacket() instanceof SPacketChunkData) {
final SPacketChunkData packet = (SPacketChunkData) event.getPacket();
final Minecraft mc = Minecraft.getMinecraft();
int count = 0;
for(NBTTagCompound tag : packet.getTileEntityTags()) {
final String id = tag.getString("id");
if(
(this.chests.getValue() && (id.equals("minecraft:chest") || id.equals("minecraft:trapped_chest"))) ||
(this.echests.getValue() && id.equals("minecraft:ender_chest")) ||
(this.shulkers.getValue() && id.endsWith("_shulker_box")) ||
(this.hoppers.getValue() && id.equals("minecraft:hopper")) ||
(this.droppers.getValue() && id.equals("minecraft:dropper")) ||
(this.dispensers.getValue() && id.equals("minecraft:dispenser")) ||
(this.stands.getValue() && id.equals("minecraft:brewing_stand"))
) {
count++;
}
}
if(count > 0) {
final String message = count + " storage blocks located at X: " + packet.getChunkX() * 16 + " Z: " + packet.getChunkZ() * 16;
if (this.mode.getValue() == Mode.CHAT || this.mode.getValue() == Mode.BOTH) {
Seppuku.INSTANCE.logChat(message);
}
if (this.mode.getValue() == Mode.NOTIFICATION || this.mode.getValue() == Mode.BOTH) {
Seppuku.INSTANCE.getNotificationManager().addNotification("", message);
}
}
}
}
}
}

View File

@ -36,7 +36,7 @@ public final class ElytraFlyModule extends Module {
public final Value<Boolean> infiniteDurability = new Value<Boolean>("InfiniteDurability", new String[]{"InfiniteDura", "dura", "inf", "infdura"}, "Enables an old exploit that sends the start elytra-flying packet each tick.", false);
public final Value<Boolean> noKick = new Value<Boolean>("NoKick", new String[]{"AntiKick", "Kick"}, "Bypass the server kicking you for flying while in elytra flight (Only works for Packet mode!).", true);
public final Value<Boolean> fallStart = new Value<Boolean>("FallAuto", new String[]{"FallToStart","fallstart"}, "Only autostart if falling.", true);
public final Value<Boolean> fallStart = new Value<Boolean>("FallStart", new String[]{"FallToStart","fallstart"}, "Only autostart if falling.", true);
private final Timer timer = new Timer();
@ -78,12 +78,7 @@ public final class ElytraFlyModule extends Module {
// automatic jump start
if (this.autoStart.getValue()) {
if (mc.gameSettings.keyBindJump.isKeyDown() && !mc.player.isElytraFlying()) { // jump is held, player is not elytra flying
if (this.fallStart.getValue() && mc.player.motionY < 0) { // player motion is falling
if (this.timer.passed(this.delay.getValue())) {
mc.getConnection().sendPacket(new CPacketEntityAction(mc.player, CPacketEntityAction.Action.START_FALL_FLYING));
this.timer.reset();
}
} else {
if ((this.fallStart.getValue() && mc.player.motionY < 0) || true) { // player motion is falling
if (this.timer.passed(this.delay.getValue())) {
mc.getConnection().sendPacket(new CPacketEntityAction(mc.player, CPacketEntityAction.Action.START_FALL_FLYING));
this.timer.reset();