diff --git a/src/main/java/me/rigamortis/seppuku/api/config/Configurable.java b/src/main/java/me/rigamortis/seppuku/api/config/Configurable.java index d17f4b1..c406825 100644 --- a/src/main/java/me/rigamortis/seppuku/api/config/Configurable.java +++ b/src/main/java/me/rigamortis/seppuku/api/config/Configurable.java @@ -34,8 +34,7 @@ public abstract class Configurable { } protected void saveJsonObjectToFile(JsonObject object) { - File newFile = FileUtil.recreateFile(this.getFile()); - FileUtil.saveJsonFile(newFile, object); + FileUtil.saveJsonFile(FileUtil.recreateFile(this.getFile()), object); } protected JsonObject convertJsonObjectFromFile() { diff --git a/src/main/java/me/rigamortis/seppuku/api/event/module/EventModuleLoad.java b/src/main/java/me/rigamortis/seppuku/api/event/module/EventModuleLoad.java index 13a55e7..db64688 100644 --- a/src/main/java/me/rigamortis/seppuku/api/event/module/EventModuleLoad.java +++ b/src/main/java/me/rigamortis/seppuku/api/event/module/EventModuleLoad.java @@ -1,6 +1,7 @@ package me.rigamortis.seppuku.api.event.module; import me.rigamortis.seppuku.api.module.Module; + /** * Author Seth * 6/10/2019 @ 2:36 PM. diff --git a/src/main/java/me/rigamortis/seppuku/api/task/block/BlockPlacementRequest.java b/src/main/java/me/rigamortis/seppuku/api/task/block/BlockPlacementRequest.java index 899b739..8a42a78 100644 --- a/src/main/java/me/rigamortis/seppuku/api/task/block/BlockPlacementRequest.java +++ b/src/main/java/me/rigamortis/seppuku/api/task/block/BlockPlacementRequest.java @@ -17,7 +17,7 @@ public final class BlockPlacementRequest { private final EnumFacing placeDirection; public BlockPlacementRequest(final BlockPos structurePosition, - final EnumFacing placeDirection) { + final EnumFacing placeDirection) { this.structurePosition = structurePosition; this.placeDirection = placeDirection; } diff --git a/src/main/java/me/rigamortis/seppuku/api/task/hand/HandSwapContext.java b/src/main/java/me/rigamortis/seppuku/api/task/hand/HandSwapContext.java index 12b8850..991e2f7 100644 --- a/src/main/java/me/rigamortis/seppuku/api/task/hand/HandSwapContext.java +++ b/src/main/java/me/rigamortis/seppuku/api/task/hand/HandSwapContext.java @@ -23,7 +23,7 @@ public final class HandSwapContext { } public void handleHandSwap(final boolean restore, - final Minecraft minecraft) { + final Minecraft minecraft) { minecraft.player.inventory.currentItem = restore ? this.getOldSlot() : this.getNewSlot(); minecraft.playerController.updateController(); diff --git a/src/main/java/me/rigamortis/seppuku/api/util/FileUtil.java b/src/main/java/me/rigamortis/seppuku/api/util/FileUtil.java index cfed579..ca107e3 100644 --- a/src/main/java/me/rigamortis/seppuku/api/util/FileUtil.java +++ b/src/main/java/me/rigamortis/seppuku/api/util/FileUtil.java @@ -54,8 +54,7 @@ public class FileUtil { * Creates a json file in a directory */ public static File createJsonFile(File dir, String name) { - File file = new File(dir, name + ".json"); - return file; + return new File(dir, name + ".json"); } /** @@ -80,7 +79,7 @@ public class FileUtil { */ public static void saveJsonFile(File file, JsonObject jsonObject) { try { - file.createNewFile(); + //file.createNewFile(); FileWriter writer = new FileWriter(file); Throwable throwable = null; try { diff --git a/src/main/java/me/rigamortis/seppuku/impl/command/LastInvCommand.java b/src/main/java/me/rigamortis/seppuku/impl/command/LastInvCommand.java index 58109fd..d5694a3 100644 --- a/src/main/java/me/rigamortis/seppuku/impl/command/LastInvCommand.java +++ b/src/main/java/me/rigamortis/seppuku/impl/command/LastInvCommand.java @@ -29,8 +29,8 @@ public final class LastInvCommand extends Command { @Listener public void render(EventRender2D event) { final InfEnderChestModule mod = (InfEnderChestModule) Seppuku.INSTANCE.getModuleManager().find(InfEnderChestModule.class); - if(mod != null) { - if(mod.getScreen() != null) { + if (mod != null) { + if (mod.getScreen() != null) { Minecraft.getMinecraft().displayGuiScreen(mod.getScreen()); Seppuku.INSTANCE.logChat("Opening the last inventory."); } else { diff --git a/src/main/java/me/rigamortis/seppuku/impl/command/SearchCommand.java b/src/main/java/me/rigamortis/seppuku/impl/command/SearchCommand.java new file mode 100644 index 0000000..aba0295 --- /dev/null +++ b/src/main/java/me/rigamortis/seppuku/impl/command/SearchCommand.java @@ -0,0 +1,179 @@ +package me.rigamortis.seppuku.impl.command; + +import me.rigamortis.seppuku.Seppuku; +import me.rigamortis.seppuku.api.command.Command; +import me.rigamortis.seppuku.api.util.StringUtil; +import me.rigamortis.seppuku.impl.module.render.SearchModule; +import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; +import net.minecraft.init.Blocks; +import net.minecraft.util.text.Style; +import net.minecraft.util.text.TextComponentString; +import net.minecraft.util.text.event.HoverEvent; + +/** + * @author noil + */ +public final class SearchCommand extends Command { + + private final String[] addAlias = new String[]{"Add"}; + private final String[] removeAlias = new String[]{"Remove", "Rem", "Delete", "Del"}; + private final String[] listAlias = new String[]{"List", "Lst"}; + private final String[] clearAlias = new String[]{"Clear", "clr"}; + + public SearchCommand() { + super("Search", new String[]{"find", "locate"}, "Allows you to change what blocks are visible on search", + "Search Add \n" + + "Search Add \n" + + "Search Remove \n" + + "Search Remove \n" + + "Search List\n" + + "Search Clear"); + } + + @Override + public void exec(String input) { + if (!this.clamp(input, 2, 3)) { + this.printUsage(); + return; + } + + final String[] split = input.split(" "); + + final SearchModule searchModule = (SearchModule) Seppuku.INSTANCE.getModuleManager().find(SearchModule.class); + + if (searchModule != null) { + if (equals(addAlias, split[1])) { + if (!this.clamp(input, 3, 3)) { + this.printUsage(); + return; + } + + if (StringUtil.isInt(split[2])) { + final int id = Integer.parseInt(split[2]); + + if (id > 0) { + final Block block = Block.getBlockById(id); + + if (searchModule.contains(Block.getIdFromBlock(block))) { + Seppuku.INSTANCE.logChat("Search already contains " + block.getLocalizedName()); + } else { + searchModule.add(Block.getIdFromBlock(block)); + if (searchModule.isEnabled()) { + searchModule.updateRenders(); + } + Seppuku.INSTANCE.getConfigManager().saveAll(); + Seppuku.INSTANCE.logChat("Added " + block.getLocalizedName() + " to search"); + } + } else { + Seppuku.INSTANCE.errorChat("Cannot add Air to search"); + } + } else { + final Block block = Block.getBlockFromName(split[2].toLowerCase()); + + if (block != null) { + if (block == Blocks.AIR) { + Seppuku.INSTANCE.errorChat("Cannot add Air to search"); + } else { + if (searchModule.contains(Block.getIdFromBlock(block))) { + Seppuku.INSTANCE.logChat("Search already contains " + block.getLocalizedName()); + } else { + searchModule.add(Block.getIdFromBlock(block)); + if (searchModule.isEnabled()) { + searchModule.updateRenders(); + } + Seppuku.INSTANCE.getConfigManager().saveAll(); + Seppuku.INSTANCE.logChat("Added " + block.getLocalizedName() + " to search"); + } + } + } else { + Seppuku.INSTANCE.logChat("\247c" + split[2] + "\247f is not a valid block"); + } + } + } else if (equals(removeAlias, split[1])) { + if (!this.clamp(input, 3, 3)) { + this.printUsage(); + return; + } + + if (StringUtil.isInt(split[2])) { + final int id = Integer.parseInt(split[2]); + + if (id > 0) { + final Block block = Block.getBlockById(id); + + if (searchModule.contains(Block.getIdFromBlock(block))) { + searchModule.remove(Block.getIdFromBlock(block)); + if (searchModule.isEnabled()) { + searchModule.updateRenders(); + } + Seppuku.INSTANCE.getConfigManager().saveAll(); + Seppuku.INSTANCE.logChat("Removed " + block.getLocalizedName() + " from search"); + } else { + Seppuku.INSTANCE.logChat("Search doesn't contain " + block.getLocalizedName()); + } + } else { + Seppuku.INSTANCE.errorChat("Cannot remove Air from search"); + } + } else { + final Block block = Block.getBlockFromName(split[2].toLowerCase()); + + if (block != null) { + if (block == Blocks.AIR) { + Seppuku.INSTANCE.errorChat("Cannot remove Air from search"); + } else { + if (searchModule.contains(Block.getIdFromBlock(block))) { + searchModule.remove(Block.getIdFromBlock(block)); + if (searchModule.isEnabled()) { + searchModule.updateRenders(); + } + Seppuku.INSTANCE.getConfigManager().saveAll(); + Seppuku.INSTANCE.logChat("Removed " + block.getLocalizedName() + " from search"); + } else { + Seppuku.INSTANCE.logChat("Search doesn't contain " + block.getLocalizedName()); + } + } + } else { + Seppuku.INSTANCE.logChat("\247c" + split[2] + "\247f is not a valid block"); + } + } + } else if (equals(listAlias, split[1])) { + if (!this.clamp(input, 2, 2)) { + this.printUsage(); + return; + } + + if (searchModule.getIds().size() > 0) { + final TextComponentString msg = new TextComponentString("\2477Search IDs: "); + + for (int i : searchModule.getIds()) { + msg.appendSibling(new TextComponentString("\2477[\247a" + i + "\2477] ") + .setStyle(new Style() + .setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponentString(Block.getBlockById(i).getLocalizedName()))))); + } + + Minecraft.getMinecraft().ingameGUI.getChatGUI().printChatMessage(msg); + } else { + Seppuku.INSTANCE.logChat("You don't have any search ids"); + } + } else if (equals(clearAlias, split[1])) { + if (!this.clamp(input, 2, 2)) { + this.printUsage(); + return; + } + searchModule.clear(); + if (searchModule.isEnabled()) { + searchModule.updateRenders(); + } + Seppuku.INSTANCE.getConfigManager().saveAll(); + Seppuku.INSTANCE.logChat("Cleared all blocks from search"); + } else { + Seppuku.INSTANCE.errorChat("Unknown input " + "\247f\"" + input + "\""); + this.printUsage(); + } + } else { + Seppuku.INSTANCE.errorChat("Search not present"); + } + } +} + diff --git a/src/main/java/me/rigamortis/seppuku/impl/command/XrayCommand.java b/src/main/java/me/rigamortis/seppuku/impl/command/XrayCommand.java index 3fa8dcc..cf034b9 100644 --- a/src/main/java/me/rigamortis/seppuku/impl/command/XrayCommand.java +++ b/src/main/java/me/rigamortis/seppuku/impl/command/XrayCommand.java @@ -5,7 +5,11 @@ import me.rigamortis.seppuku.api.command.Command; import me.rigamortis.seppuku.api.util.StringUtil; import me.rigamortis.seppuku.impl.module.render.XrayModule; import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; import net.minecraft.init.Blocks; +import net.minecraft.util.text.Style; +import net.minecraft.util.text.TextComponentString; +import net.minecraft.util.text.event.HoverEvent; /** * Author Seth @@ -13,9 +17,10 @@ import net.minecraft.init.Blocks; */ public final class XrayCommand extends Command { - private String[] addAlias = new String[]{"Add", "A"}; - private String[] removeAlias = new String[]{"Remove", "Rem", "R", "Delete", "Del", "D"}; - private String[] clearAlias = new String[]{"Clear", "C"}; + private final String[] addAlias = new String[]{"Add", "A"}; + private final String[] removeAlias = new String[]{"Remove", "Rem", "R", "Delete", "Del", "D"}; + private final String[] listAlias = new String[]{"List", "Lst"}; + private final String[] clearAlias = new String[]{"Clear", "C"}; public XrayCommand() { super("Xray", new String[]{"JadeVision", "Jade"}, "Allows you to change what blocks are visible on xray", @@ -23,6 +28,7 @@ public final class XrayCommand extends Command { "Xray Add \n" + "Xray Remove \n" + "Xray Remove \n" + + "Xray List\n" + "Xray Clear"); } @@ -140,6 +146,25 @@ public final class XrayCommand extends Command { Seppuku.INSTANCE.logChat("\247c" + split[2] + "\247f is not a valid block"); } } + } else if (equals(listAlias, split[1])) { + if (!this.clamp(input, 2, 2)) { + this.printUsage(); + return; + } + + if (xray.getIds().size() > 0) { + final TextComponentString msg = new TextComponentString("\247Xray IDs: "); + + for (int i : xray.getIds()) { + msg.appendSibling(new TextComponentString("\2477[\247a" + i + "\2477] ") + .setStyle(new Style() + .setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponentString(Block.getBlockById(i).getLocalizedName()))))); + } + + Minecraft.getMinecraft().ingameGUI.getChatGUI().printChatMessage(msg); + } else { + Seppuku.INSTANCE.logChat("You don't have any search ids"); + } } else if (equals(clearAlias, split[1])) { if (!this.clamp(input, 2, 2)) { this.printUsage(); diff --git a/src/main/java/me/rigamortis/seppuku/impl/config/SearchConfig.java b/src/main/java/me/rigamortis/seppuku/impl/config/SearchConfig.java new file mode 100644 index 0000000..7efd4e5 --- /dev/null +++ b/src/main/java/me/rigamortis/seppuku/impl/config/SearchConfig.java @@ -0,0 +1,61 @@ +package me.rigamortis.seppuku.impl.config; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import me.rigamortis.seppuku.Seppuku; +import me.rigamortis.seppuku.api.config.Configurable; +import me.rigamortis.seppuku.api.util.FileUtil; +import me.rigamortis.seppuku.impl.module.render.SearchModule; + +import java.io.File; +import java.util.Objects; + +/** + * @author noil + */ +public final class SearchConfig extends Configurable { + + private final SearchModule searchModule; + + public SearchConfig(File dir) { + super(FileUtil.createJsonFile(dir, "SearchIds")); + this.searchModule = (SearchModule) Seppuku.INSTANCE.getModuleManager().find("Search"); + } + + @Override + public void onLoad() { + super.onLoad(); + + if (this.searchModule == null) + return; + + JsonArray searchIdsJsonArray = null; + + final JsonElement blockIds = this.getJsonObject().get("SearchBlockIds"); + if (blockIds != null) + searchIdsJsonArray = blockIds.getAsJsonArray(); + + if (searchIdsJsonArray != null) { + for (JsonElement jsonElement : searchIdsJsonArray) { + ((SearchModule) Objects.requireNonNull(Seppuku.INSTANCE.getModuleManager().find("Search"))).add(jsonElement.getAsInt()); + } + } + } + + @Override + public void onSave() { + if (this.searchModule == null) + return; + + JsonObject save = new JsonObject(); + + JsonArray searchIdsJsonArray = new JsonArray(); + for (Integer i : this.searchModule.getIds()) + searchIdsJsonArray.add(i); + + save.add("SearchBlockIds", searchIdsJsonArray); + + this.saveJsonObjectToFile(save); + } +} diff --git a/src/main/java/me/rigamortis/seppuku/impl/config/XrayConfig.java b/src/main/java/me/rigamortis/seppuku/impl/config/XrayConfig.java index 74e80c1..34622a6 100644 --- a/src/main/java/me/rigamortis/seppuku/impl/config/XrayConfig.java +++ b/src/main/java/me/rigamortis/seppuku/impl/config/XrayConfig.java @@ -9,6 +9,7 @@ import me.rigamortis.seppuku.api.util.FileUtil; import me.rigamortis.seppuku.impl.module.render.XrayModule; import java.io.File; +import java.util.Objects; /** * @author noil @@ -18,7 +19,7 @@ public final class XrayConfig extends Configurable { private final XrayModule xrayModule; public XrayConfig(File dir) { - super(FileUtil.createJsonFile(dir, "Xray")); + super(FileUtil.createJsonFile(dir, "XrayIds")); this.xrayModule = (XrayModule) Seppuku.INSTANCE.getModuleManager().find("Xray"); } @@ -29,10 +30,16 @@ public final class XrayConfig extends Configurable { if (this.xrayModule == null) return; - final JsonArray xrayIdsJsonArray = this.getJsonObject().get("BlockIds").getAsJsonArray(); + JsonArray xrayIdsJsonArray = null; - for (JsonElement jsonElement : xrayIdsJsonArray) { - this.xrayModule.add(jsonElement.getAsInt()); + final JsonElement blockIds = this.getJsonObject().get("XrayBlockIds"); + if (blockIds != null) + xrayIdsJsonArray = blockIds.getAsJsonArray(); + + if (xrayIdsJsonArray != null) { + for (JsonElement jsonElement : xrayIdsJsonArray) { + ((XrayModule) Objects.requireNonNull(Seppuku.INSTANCE.getModuleManager().find("Xray"))).add(jsonElement.getAsInt()); + } } } @@ -47,7 +54,7 @@ public final class XrayConfig extends Configurable { for (Integer i : this.xrayModule.getIds()) xrayIdsJsonArray.add(i); - save.add("BlockIds", xrayIdsJsonArray); + save.add("XrayBlockIds", xrayIdsJsonArray); this.saveJsonObjectToFile(save); } diff --git a/src/main/java/me/rigamortis/seppuku/impl/gui/hud/component/module/ModuleListComponent.java b/src/main/java/me/rigamortis/seppuku/impl/gui/hud/component/module/ModuleListComponent.java index 3b08093..831f595 100644 --- a/src/main/java/me/rigamortis/seppuku/impl/gui/hud/component/module/ModuleListComponent.java +++ b/src/main/java/me/rigamortis/seppuku/impl/gui/hud/component/module/ModuleListComponent.java @@ -246,7 +246,7 @@ public final class ModuleListComponent extends ResizableHudComponent { scroll -= 10; } } else { // not inside scroll bar zone - Seppuku.INSTANCE.getConfigManager().saveAll(); + //Seppuku.INSTANCE.getConfigManager().saveAll(); } } } diff --git a/src/main/java/me/rigamortis/seppuku/impl/gui/menu/GuiSeppukuMainMenu.java b/src/main/java/me/rigamortis/seppuku/impl/gui/menu/GuiSeppukuMainMenu.java index de02be9..451a818 100644 --- a/src/main/java/me/rigamortis/seppuku/impl/gui/menu/GuiSeppukuMainMenu.java +++ b/src/main/java/me/rigamortis/seppuku/impl/gui/menu/GuiSeppukuMainMenu.java @@ -4,9 +4,7 @@ import com.mojang.realmsclient.gui.ChatFormatting; import me.rigamortis.seppuku.Seppuku; import me.rigamortis.seppuku.api.event.minecraft.EventDisplayGui; import me.rigamortis.seppuku.api.texture.Texture; -import me.rigamortis.seppuku.api.util.RenderUtil; import me.rigamortis.seppuku.impl.fml.SeppukuMod; -import me.rigamortis.seppuku.impl.gui.hud.GuiHudEditor; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.*; import net.minecraft.client.renderer.GlStateManager; diff --git a/src/main/java/me/rigamortis/seppuku/impl/management/CommandManager.java b/src/main/java/me/rigamortis/seppuku/impl/management/CommandManager.java index 34d04a8..71c1e83 100644 --- a/src/main/java/me/rigamortis/seppuku/impl/management/CommandManager.java +++ b/src/main/java/me/rigamortis/seppuku/impl/management/CommandManager.java @@ -69,6 +69,7 @@ public final class CommandManager { this.commandList.add(new GiveCommand()); this.commandList.add(new CalcStrongholdCommand()); this.commandList.add(new LastInvCommand()); + this.commandList.add(new SearchCommand()); //create commands for every value within every module loadValueCommands(); diff --git a/src/main/java/me/rigamortis/seppuku/impl/management/ConfigManager.java b/src/main/java/me/rigamortis/seppuku/impl/management/ConfigManager.java index 5d2d373..3f47e67 100644 --- a/src/main/java/me/rigamortis/seppuku/impl/management/ConfigManager.java +++ b/src/main/java/me/rigamortis/seppuku/impl/management/ConfigManager.java @@ -58,6 +58,7 @@ public final class ConfigManager { this.configurableList.add(new FriendConfig(configDir)); this.configurableList.add(new XrayConfig(configDir)); + this.configurableList.add(new SearchConfig(configDir)); this.configurableList.add(new MacroConfig(configDir)); this.configurableList.add(new WaypointsConfig(configDir)); this.configurableList.add(new WorldConfig(configDir)); @@ -72,20 +73,16 @@ public final class ConfigManager { } public void saveAll() { - new Thread(() -> { - for (Configurable cfg : configurableList) { - cfg.onSave(); - } - }).start(); + for (Configurable cfg : configurableList) { + cfg.onSave(); + } Seppuku.INSTANCE.getEventManager().dispatchEvent(new EventSaveConfig()); } public void loadAll() { - new Thread(() -> { - for (Configurable cfg : configurableList) { - cfg.onLoad(); - } - }).start(); + for (Configurable cfg : configurableList) { + cfg.onLoad(); + } Seppuku.INSTANCE.getEventManager().dispatchEvent(new EventLoadConfig()); } diff --git a/src/main/java/me/rigamortis/seppuku/impl/management/FriendManager.java b/src/main/java/me/rigamortis/seppuku/impl/management/FriendManager.java index 6ddc068..2ae56cf 100644 --- a/src/main/java/me/rigamortis/seppuku/impl/management/FriendManager.java +++ b/src/main/java/me/rigamortis/seppuku/impl/management/FriendManager.java @@ -1,6 +1,5 @@ package me.rigamortis.seppuku.impl.management; -import me.rigamortis.seppuku.Seppuku; import me.rigamortis.seppuku.api.friend.Friend; import me.rigamortis.seppuku.api.util.StringUtil; import net.minecraft.entity.Entity; @@ -33,7 +32,7 @@ public final class FriendManager { final Friend friend = new Friend(name, alias); this.friendList.add(friend); - Seppuku.INSTANCE.getConfigManager().saveAll(); + //Seppuku.INSTANCE.getConfigManager().saveAll(); if (grabUUID) { try { @@ -48,7 +47,7 @@ public final class FriendManager { final JSONObject obj = (JSONObject) JSONValue.parseWithException(json); final String uuid = obj.get("id").toString(); friend.setUuid(uuid); - Seppuku.INSTANCE.getConfigManager().saveAll(); + //Seppuku.INSTANCE.getConfigManager().saveAll(); } catch (ParseException e) { e.printStackTrace(); } catch (MalformedURLException e) { diff --git a/src/main/java/me/rigamortis/seppuku/impl/management/HudManager.java b/src/main/java/me/rigamortis/seppuku/impl/management/HudManager.java index e8795e9..a8090c9 100644 --- a/src/main/java/me/rigamortis/seppuku/impl/management/HudManager.java +++ b/src/main/java/me/rigamortis/seppuku/impl/management/HudManager.java @@ -10,7 +10,6 @@ import me.rigamortis.seppuku.impl.gui.hud.anchor.AnchorPoint; import me.rigamortis.seppuku.impl.gui.hud.component.*; import me.rigamortis.seppuku.impl.gui.hud.component.module.ModuleListComponent; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.Gui; import net.minecraft.client.gui.GuiChat; import net.minecraft.client.gui.ScaledResolution; import team.stiff.pomelo.impl.annotated.handler.annotation.Listener; diff --git a/src/main/java/me/rigamortis/seppuku/impl/management/IgnoredManager.java b/src/main/java/me/rigamortis/seppuku/impl/management/IgnoredManager.java index 41b917d..2625aba 100644 --- a/src/main/java/me/rigamortis/seppuku/impl/management/IgnoredManager.java +++ b/src/main/java/me/rigamortis/seppuku/impl/management/IgnoredManager.java @@ -1,6 +1,5 @@ package me.rigamortis.seppuku.impl.management; -import me.rigamortis.seppuku.Seppuku; import me.rigamortis.seppuku.api.ignore.Ignored; import java.util.List; @@ -16,8 +15,7 @@ public final class IgnoredManager { public void add(String name) { this.ignoredList.add(new Ignored(name)); - - Seppuku.INSTANCE.getConfigManager().saveAll(); + //Seppuku.INSTANCE.getConfigManager().saveAll(); } public Ignored find(String name) { diff --git a/src/main/java/me/rigamortis/seppuku/impl/management/ModuleManager.java b/src/main/java/me/rigamortis/seppuku/impl/management/ModuleManager.java index e3d9a67..1cdf61f 100644 --- a/src/main/java/me/rigamortis/seppuku/impl/management/ModuleManager.java +++ b/src/main/java/me/rigamortis/seppuku/impl/management/ModuleManager.java @@ -159,6 +159,7 @@ public final class ModuleManager { add(new NoEntityTraceModule()); add(new MultitaskModule()); add(new InfEnderChestModule()); + add(new SearchModule()); // p2w experience if (Seppuku.INSTANCE.getCapeManager().hasCape()) diff --git a/src/main/java/me/rigamortis/seppuku/impl/module/misc/NoAfkModule.java b/src/main/java/me/rigamortis/seppuku/impl/module/misc/NoAfkModule.java index 939f364..a0a2e4c 100644 --- a/src/main/java/me/rigamortis/seppuku/impl/module/misc/NoAfkModule.java +++ b/src/main/java/me/rigamortis/seppuku/impl/module/misc/NoAfkModule.java @@ -17,7 +17,6 @@ import team.stiff.pomelo.impl.annotated.handler.annotation.Listener; public final class NoAfkModule extends Module { public final Value yawOffset = new Value("Yaw", new String[]{"yaw", "y"}, "The yaw to alternate each tick.", 1, 0, 180, 1); - public final Value pitchOffset = new Value("Pitch", new String[]{"pitch", "x"}, "The pitch to alternate each tick.", 0, 0, 90, 1); public NoAfkModule() { super("NoAFK", new String[]{"AntiAFK"}, "Prevents you from being kicked while idle", "NONE", -1, ModuleType.MISC); @@ -29,12 +28,7 @@ public final class NoAfkModule extends Module { final Minecraft mc = Minecraft.getMinecraft(); float yaw = mc.player.rotationYaw; float pitch = mc.player.rotationPitch; - if (this.yawOffset.getValue() > 0) { - yaw += (this.yawOffset.getValue() * Math.sin(mc.player.ticksExisted / Math.PI)); - } - if (this.pitchOffset.getValue() > 0) { - pitch += (this.pitchOffset.getValue() * Math.sin(mc.player.ticksExisted / Math.PI)); - } + yaw += (this.yawOffset.getValue() * Math.sin(mc.player.ticksExisted / Math.PI)); Seppuku.INSTANCE.getRotationManager().setPlayerRotations(yaw, pitch); } } @@ -45,12 +39,7 @@ public final class NoAfkModule extends Module { if (event.getPacket() instanceof CPacketPlayer.Rotation) { if (Minecraft.getMinecraft().player.getRidingEntity() != null) { final CPacketPlayer.Rotation packet = (CPacketPlayer.Rotation) event.getPacket(); - if (this.yawOffset.getValue() > 0) { - packet.yaw += (this.yawOffset.getValue() * Math.sin(Minecraft.getMinecraft().player.ticksExisted / Math.PI)); - } - if (this.pitchOffset.getValue() > 0) { - packet.pitch += (this.pitchOffset.getValue() * Math.sin(Minecraft.getMinecraft().player.ticksExisted / Math.PI)); - } + packet.yaw += (this.yawOffset.getValue() * Math.sin(Minecraft.getMinecraft().player.ticksExisted / Math.PI)); } } } diff --git a/src/main/java/me/rigamortis/seppuku/impl/module/render/NoLagModule.java b/src/main/java/me/rigamortis/seppuku/impl/module/render/NoLagModule.java index 8822468..bc849d8 100644 --- a/src/main/java/me/rigamortis/seppuku/impl/module/render/NoLagModule.java +++ b/src/main/java/me/rigamortis/seppuku/impl/module/render/NoLagModule.java @@ -17,7 +17,6 @@ import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityTNTPrimed; import net.minecraft.entity.projectile.EntityWitherSkull; import net.minecraft.init.SoundEvents; -import net.minecraft.network.play.server.SPacketParticles; import net.minecraft.network.play.server.SPacketSoundEffect; import net.minecraft.network.play.server.SPacketSpawnMob; import net.minecraft.tileentity.TileEntity; diff --git a/src/main/java/me/rigamortis/seppuku/impl/module/render/SearchModule.java b/src/main/java/me/rigamortis/seppuku/impl/module/render/SearchModule.java new file mode 100644 index 0000000..8e58fd2 --- /dev/null +++ b/src/main/java/me/rigamortis/seppuku/impl/module/render/SearchModule.java @@ -0,0 +1,185 @@ +package me.rigamortis.seppuku.impl.module.render; + +import me.rigamortis.seppuku.Seppuku; +import me.rigamortis.seppuku.api.event.render.EventRender3D; +import me.rigamortis.seppuku.api.event.render.EventRenderBlockModel; +import me.rigamortis.seppuku.api.event.world.EventLoadWorld; +import me.rigamortis.seppuku.api.module.Module; +import me.rigamortis.seppuku.api.util.ColorUtil; +import me.rigamortis.seppuku.api.util.RenderUtil; +import me.rigamortis.seppuku.api.value.Value; +import net.minecraft.block.Block; +import net.minecraft.block.state.IBlockState; +import net.minecraft.client.Minecraft; +import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; +import team.stiff.pomelo.impl.annotated.handler.annotation.Listener; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author noil + *

+ * this will be worked on much more + * just trying to get a smooth working version out + */ +public final class SearchModule extends Module { + + private List ids = new ArrayList<>(); + private List blocks = new ArrayList<>(512); + + public final Value range = new Value("Range", new String[]{"radius"}, "The range(m) to render search blocks.", 128, 0, 512, 1); + public final Value limit = new Value("Limit", new String[]{"max"}, "The maximum amount of blocks that can be rendered.", 3000, 0, 9000, 1); + public final Value alpha = new Value("Alpha", new String[]{"opacity"}, "Alpha value for the search bounding box.", 127, 0, 255, 1); + public final Value width = new Value("Width", new String[]{"size"}, "Line width of the search bounding box.", 1.0f, 0.0f, 5.0f, 0.1f); + + public SearchModule() { + super("Search", new String[]{"srch", "find", "locate"}, "Search for different types of blocks. Enter the \"search\" command.", "NONE", -1, ModuleType.RENDER); + + if (Seppuku.INSTANCE.getConfigManager().isFirstLaunch()) + this.add("furnace"); + } + + @Listener + public void onLoadWorld(EventLoadWorld event) { + if (event.getWorld() != null) { + this.blocks.clear(); + } + } + + @Listener + public void onDrawWorld(EventRender3D event) { + final Minecraft mc = Minecraft.getMinecraft(); + + RenderUtil.begin3D(); + for (int i = this.blocks.size() - 1; i >= 0; i--) { + Vec3d searchBlock = this.blocks.get(i); + BlockPos blockPos = new BlockPos(searchBlock.x, searchBlock.y, searchBlock.z); + Block block = mc.world.getBlockState(blockPos).getBlock(); + if (this.contains(block.getLocalizedName()) && mc.player.getDistance(searchBlock.x, searchBlock.y, searchBlock.z) < this.range.getValue()) { + final AxisAlignedBB bb = this.boundingBoxForBlock(blockPos); + RenderUtil.drawBoundingBox(bb, this.width.getValue(), ColorUtil.changeAlpha(mc.world.getBlockState(blockPos).getMaterial().getMaterialMapColor().colorValue, this.alpha.getValue())); + } else { + this.blocks.remove(searchBlock); + } + } + RenderUtil.end3D(); + } + + @Listener + public void onRenderBlock(EventRenderBlockModel event) { + final BlockPos pos = event.getBlockPos(); + final IBlockState blockState = event.getBlockState(); + if (this.contains(blockState.getBlock().getLocalizedName()) && !this.isPosCached(pos.getX(), pos.getY(), pos.getZ()) && this.blocks.size() < this.limit.getValue()) { + this.blocks.add(new Vec3d(pos)); + } + } + + @Override + public void onEnable() { + this.blocks.clear(); + super.onEnable(); + } + + @Override + public void onToggle() { + super.onToggle(); + Minecraft.getMinecraft().renderGlobal.loadRenderers(); + } + + private boolean isPosCached(int x, int y, int z) { + for (int i = this.blocks.size() - 1; i >= 0; i--) { + Vec3d searchBlock = this.blocks.get(i); + if (searchBlock.x == x && searchBlock.y == y && searchBlock.z == z) + return true; + } + return false; + } + + private AxisAlignedBB boundingBoxForBlock(BlockPos blockPos) { + final Minecraft mc = Minecraft.getMinecraft(); + return new AxisAlignedBB( + blockPos.getX() - mc.getRenderManager().viewerPosX, + blockPos.getY() - mc.getRenderManager().viewerPosY, + blockPos.getZ() - mc.getRenderManager().viewerPosZ, + + blockPos.getX() + 1 - mc.getRenderManager().viewerPosX, + blockPos.getY() + 1 - mc.getRenderManager().viewerPosY, + blockPos.getZ() + 1 - mc.getRenderManager().viewerPosZ); + } + + public void updateRenders() { + //mc.renderGlobal.loadRenderers(); + final Minecraft mc = Minecraft.getMinecraft(); + mc.renderGlobal.markBlockRangeForRenderUpdate( + (int) mc.player.posX - 256, + (int) mc.player.posY - 256, + (int) mc.player.posZ - 256, + (int) mc.player.posX + 256, + (int) mc.player.posY + 256, + (int) mc.player.posZ + 256); + } + + public boolean contains(int id) { + return this.ids.contains(id); + } + + public boolean contains(String localizedName) { + final Block blockFromName = Block.getBlockFromName(localizedName); + if (blockFromName != null) { + return contains(Block.getIdFromBlock(blockFromName)); + } + return false; + } + + public void add(int id) { + if (!contains(id)) { + this.ids.add(id); + } + } + + public void add(String name) { + final Block blockFromName = Block.getBlockFromName(name); + if (blockFromName != null) { + final int id = Block.getIdFromBlock(blockFromName); + if (!contains(id)) { + this.ids.add(id); + } + } + } + + public void remove(int id) { + for (Integer i : this.ids) { + if (id == i) { + this.ids.remove(i); + break; + } + } + } + + public void remove(String name) { + final Block blockFromName = Block.getBlockFromName(name); + if (blockFromName != null) { + final int id = Block.getIdFromBlock(blockFromName); + if (contains(id)) { + this.ids.remove(id); + } + } + } + + public int clear() { + final int count = this.ids.size(); + this.ids.clear(); + return count; + } + + public List getIds() { + return ids; + } + + public void setIds(List ids) { + this.ids = ids; + } +} diff --git a/src/main/java/me/rigamortis/seppuku/impl/module/render/StorageESPModule.java b/src/main/java/me/rigamortis/seppuku/impl/module/render/StorageESPModule.java index 8c7cdd3..7952dab 100644 --- a/src/main/java/me/rigamortis/seppuku/impl/module/render/StorageESPModule.java +++ b/src/main/java/me/rigamortis/seppuku/impl/module/render/StorageESPModule.java @@ -31,7 +31,7 @@ public final class StorageESPModule extends Module { public final Value nametag = new Value("Nametag", new String[]{"Nametag", "Tag", "Tags", "Ntag", "name", "names"}, "Renders the name of the drawn storage object.", false); public final Value opacity = new Value("Opacity", new String[]{"Opacity", "Transparency", "Alpha"}, "Opacity of the rendered esp.", 128, 0, 255, 1); - private ICamera camera = new Frustum(); + private final ICamera camera = new Frustum(); public StorageESPModule() { super("Storage", new String[]{"StorageESP", "ChestFinder", "ChestESP"}, "Highlights different types of storage entities.", "NONE", -1, ModuleType.RENDER); @@ -77,19 +77,21 @@ public final class StorageESPModule extends Module { if (this.isTileStorage(te)) { final AxisAlignedBB bb = this.boundingBoxForEnt(te); if (bb != null) { - RenderUtil.drawFilledBox(bb, ColorUtil.changeAlpha(this.getColor(te), this.opacity.getValue())); - RenderUtil.drawBoundingBox(bb, 1.5f, ColorUtil.changeAlpha(this.getColor(te), this.opacity.getValue())); - /*camera.setPosition(mc.getRenderViewEntity().posX, mc.getRenderViewEntity().posY, mc.getRenderViewEntity().posZ); + //RenderUtil.drawFilledBox(bb, ColorUtil.changeAlpha(this.getColor(te), this.opacity.getValue())); + //RenderUtil.drawBoundingBox(bb, 1.5f, ColorUtil.changeAlpha(this.getColor(te), this.opacity.getValue())); + if (mc.getRenderViewEntity() != null) { + camera.setPosition(mc.getRenderViewEntity().posX, mc.getRenderViewEntity().posY, mc.getRenderViewEntity().posZ); - if (camera.isBoundingBoxInFrustum(new AxisAlignedBB(bb.minX + mc.getRenderManager().viewerPosX, - bb.minY + mc.getRenderManager().viewerPosY, - bb.minZ + mc.getRenderManager().viewerPosZ, - bb.maxX + mc.getRenderManager().viewerPosX, - bb.maxY + mc.getRenderManager().viewerPosY, - bb.maxZ + mc.getRenderManager().viewerPosZ))) { - RenderUtil.drawFilledBox(bb, ColorUtil.changeAlpha(this.getColor(te), this.opacity.getValue())); - RenderUtil.drawBoundingBox(bb, 1.5f, ColorUtil.changeAlpha(this.getColor(te), this.opacity.getValue())); - }*/ + if (camera.isBoundingBoxInFrustum(new AxisAlignedBB(bb.minX + mc.getRenderManager().viewerPosX, + bb.minY + mc.getRenderManager().viewerPosY, + bb.minZ + mc.getRenderManager().viewerPosZ, + bb.maxX + mc.getRenderManager().viewerPosX, + bb.maxY + mc.getRenderManager().viewerPosY, + bb.maxZ + mc.getRenderManager().viewerPosZ))) { + RenderUtil.drawFilledBox(bb, ColorUtil.changeAlpha(this.getColor(te), this.opacity.getValue())); + RenderUtil.drawBoundingBox(bb, 1.5f, ColorUtil.changeAlpha(this.getColor(te), this.opacity.getValue())); + } + } } } } diff --git a/src/main/java/me/rigamortis/seppuku/impl/module/render/XrayModule.java b/src/main/java/me/rigamortis/seppuku/impl/module/render/XrayModule.java index 480c286..80c06a2 100644 --- a/src/main/java/me/rigamortis/seppuku/impl/module/render/XrayModule.java +++ b/src/main/java/me/rigamortis/seppuku/impl/module/render/XrayModule.java @@ -25,7 +25,6 @@ public final class XrayModule extends Module { public XrayModule() { super("Xray", new String[]{"JadeVision", "Jade"}, "Allows you to filter what the world renders", "NONE", -1, ModuleType.RENDER); - this.setHidden(true); if (Seppuku.INSTANCE.getConfigManager().isFirstLaunch()) this.add("diamond_ore"); @@ -34,6 +33,7 @@ public final class XrayModule extends Module { @Override public void onEnable() { super.onEnable(); + final Minecraft mc = Minecraft.getMinecraft(); lastGamma = mc.gameSettings.gammaSetting; lastAO = mc.gameSettings.ambientOcclusion; @@ -45,6 +45,7 @@ public final class XrayModule extends Module { @Override public void onDisable() { super.onDisable(); + Minecraft.getMinecraft().gameSettings.gammaSetting = lastGamma; Minecraft.getMinecraft().gameSettings.ambientOcclusion = lastAO; } @@ -52,6 +53,7 @@ public final class XrayModule extends Module { @Override public void onToggle() { super.onToggle(); + Minecraft.getMinecraft().renderGlobal.loadRenderers(); } diff --git a/src/main/java/me/rigamortis/seppuku/impl/module/ui/HudEditorModule.java b/src/main/java/me/rigamortis/seppuku/impl/module/ui/HudEditorModule.java index 3214ca1..883741e 100644 --- a/src/main/java/me/rigamortis/seppuku/impl/module/ui/HudEditorModule.java +++ b/src/main/java/me/rigamortis/seppuku/impl/module/ui/HudEditorModule.java @@ -3,7 +3,6 @@ package me.rigamortis.seppuku.impl.module.ui; import me.rigamortis.seppuku.Seppuku; import me.rigamortis.seppuku.api.module.Module; import me.rigamortis.seppuku.api.value.Value; -import me.rigamortis.seppuku.impl.gui.hud.GuiHudEditor; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.util.ResourceLocation; diff --git a/src/main/java/me/rigamortis/seppuku/impl/patch/EntityRendererPatch.java b/src/main/java/me/rigamortis/seppuku/impl/patch/EntityRendererPatch.java index 0c0f078..051133e 100644 --- a/src/main/java/me/rigamortis/seppuku/impl/patch/EntityRendererPatch.java +++ b/src/main/java/me/rigamortis/seppuku/impl/patch/EntityRendererPatch.java @@ -1,8 +1,8 @@ package me.rigamortis.seppuku.impl.patch; import me.rigamortis.seppuku.Seppuku; -import me.rigamortis.seppuku.api.event.player.EventGetMouseOver; import me.rigamortis.seppuku.api.event.player.EventFovModifier; +import me.rigamortis.seppuku.api.event.player.EventGetMouseOver; import me.rigamortis.seppuku.api.event.render.EventHurtCamEffect; import me.rigamortis.seppuku.api.event.render.EventOrientCamera; import me.rigamortis.seppuku.api.event.render.EventRender2D;