aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc')
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureCooldownCounter.java47
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureDisableMessage.java60
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureTooltipDungeonStat.java34
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureTooltipPrice.java92
4 files changed, 233 insertions, 0 deletions
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureCooldownCounter.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureCooldownCounter.java
new file mode 100644
index 00000000..6547196c
--- /dev/null
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureCooldownCounter.java
@@ -0,0 +1,47 @@
+package kr.syeyoung.dungeonsguide.features.impl.etc;
+
+import kr.syeyoung.dungeonsguide.SkyblockStatus;
+import kr.syeyoung.dungeonsguide.e;
+import kr.syeyoung.dungeonsguide.features.FeatureParameter;
+import kr.syeyoung.dungeonsguide.features.GuiFeature;
+import kr.syeyoung.dungeonsguide.features.listener.DungeonQuitListener;
+import kr.syeyoung.dungeonsguide.features.listener.TickListener;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.FontRenderer;
+import net.minecraft.client.renderer.GlStateManager;
+import org.lwjgl.opengl.GL11;
+
+import java.awt.*;
+
+public class FeatureCooldownCounter extends GuiFeature implements DungeonQuitListener {
+ public FeatureCooldownCounter() {
+ super("ETC", "Dungeon Cooldown Counter", "Counts 10 seconds after leaving dungeon", "qol.cooldown", true, getFontRenderer().getStringWidth("Cooldown: 10s "), getFontRenderer().FONT_HEIGHT);
+ parameters.put("color", new FeatureParameter<Color>("color", "Color", "Color of text", Color.white, "color"));
+ }
+
+ private long leftDungeonTime = 0L;
+ private boolean wasInDungeon = false;
+ @Override
+ public void drawHUD(float partialTicks) {
+ if (System.currentTimeMillis() - leftDungeonTime > 20000) return;
+ FontRenderer fr = Minecraft.getMinecraft().fontRendererObj;
+ double scale = getFeatureRect().getHeight() / fr.FONT_HEIGHT;
+ GlStateManager.scale(scale, scale, 0);
+ fr.drawString("Cooldown: "+(20 - (System.currentTimeMillis() - leftDungeonTime) / 1000)+"s", 0,0,this.<Color>getParameter("color").getValue().getRGB());
+ }
+
+ @Override
+ public void drawDemo(float partialTicks) {
+ FontRenderer fr = Minecraft.getMinecraft().fontRendererObj;
+ double scale = getFeatureRect().getHeight() / fr.FONT_HEIGHT;
+ GlStateManager.scale(scale, scale, 0);
+ fr.drawString("Cooldown: 20s", 0,0,this.<Color>getParameter("color").getValue().getRGB());
+ }
+
+ SkyblockStatus skyblockStatus = e.getDungeonsGuide().getSkyblockStatus();
+
+ @Override
+ public void onDungeonQuit() {
+ leftDungeonTime = System.currentTimeMillis();
+ }
+}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureDisableMessage.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureDisableMessage.java
new file mode 100644
index 00000000..5558b2c5
--- /dev/null
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureDisableMessage.java
@@ -0,0 +1,60 @@
+package kr.syeyoung.dungeonsguide.features.impl.etc;
+
+import kr.syeyoung.dungeonsguide.SkyblockStatus;
+import kr.syeyoung.dungeonsguide.e;
+import kr.syeyoung.dungeonsguide.features.FeatureParameter;
+import kr.syeyoung.dungeonsguide.features.SimpleFeature;
+import kr.syeyoung.dungeonsguide.features.listener.ChatListener;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import net.minecraftforge.client.event.ClientChatReceivedEvent;
+
+import java.util.regex.Pattern;
+
+public class FeatureDisableMessage extends SimpleFeature implements ChatListener {
+ @Data
+ @AllArgsConstructor
+ public static class MessageData {
+ private Pattern pattern;
+ private String name;
+ private String description;
+ private String key;
+ }
+
+ private static final MessageData[] PRE_DEFINED = new MessageData[] {
+ new MessageData(Pattern.compile("§r§cThere are blocks in the way!§r"), "Aote block message", "\"There are blocks in the way!\"", "aote"),
+ new MessageData(Pattern.compile("§r§cThis ability is currently on cooldown for .+ more seconds?\\.§r"), "Ability cooldown message", "\"This ability is currently on cooldown for 3 more seconds.\"", "cooldown"),
+ new MessageData(Pattern.compile("§r§cWhow! Slow down there!§r"), "Grappling hook cooldown", "\"Whow! Slow down there!\"", "grappling"),
+ new MessageData(Pattern.compile("§r§cNo more charges, next one in §r§e.+§r§cs!§r"), "Zombie Sword Charging", "\"No more charges, next one in 3s!\"", "zombie"),
+ new MessageData(Pattern.compile("§r§7Your .+ hit §r§c.+ §r§7enem(?:y|ies) for §r§c.+ §r§7damage\\.§r"), "Ability Damage", "\"Your blahblah hit 42 enemy for a lots of damage\"", "ability"),
+ new MessageData(Pattern.compile("§r§cYou do not have enough mana to do this!§r"), "Not enough mana", "\"You do not have enough mana to do this!\"", "mana"),
+ new MessageData(Pattern.compile("§r§aUsed §r.+§r§a!§r"), "Dungeon Ability Usage", "\"Used Guided Sheep!\" and such", "dungeonability"),
+ new MessageData(Pattern.compile("§r.+§r§a is ready to use! Press §r.+§r§a to activate it!§r"), "Ready to use message", "\"Blah is ready to use! Press F to activate it!", "readytouse"),
+ new MessageData(Pattern.compile("§r.+ §r§ais now available!§r"), "Ability Available","\"blah is now available!\"", "available"),
+ new MessageData(Pattern.compile("§r§cThe Stone doesn't seem to do anything here\\.§r"), "Stone Message", "\"The Stone doesn't seem to do anything here\"", "stone")
+ };
+
+ public FeatureDisableMessage() {
+ super("fixes", "Disable ability messages", "Do not let ability messages show up in chatbox\nclick on Edit for more precise settings", "fixes.messagedisable", true);
+ for (MessageData messageData : PRE_DEFINED) {
+ this.parameters.put(messageData.key, new FeatureParameter<Boolean>(messageData.key, messageData.name, messageData.description, true, "boolean"));
+ }
+ }
+
+ SkyblockStatus skyblockStatus = e.getDungeonsGuide().getSkyblockStatus();
+
+ @Override
+ public void onChat(ClientChatReceivedEvent clientChatReceivedEvent) {
+ if (clientChatReceivedEvent.type == 2) return;
+ if (!isEnabled()) return;
+ if (!skyblockStatus.isOnSkyblock()) return;
+ String msg = clientChatReceivedEvent.message.getFormattedText();
+ System.out.println(msg);
+ for (MessageData md:PRE_DEFINED) {
+ if (this.<Boolean>getParameter(md.key).getValue() && md.pattern.matcher(msg).matches()) {
+ clientChatReceivedEvent.setCanceled(true);
+ return;
+ }
+ }
+ }
+}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureTooltipDungeonStat.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureTooltipDungeonStat.java
new file mode 100644
index 00000000..d8f32b98
--- /dev/null
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureTooltipDungeonStat.java
@@ -0,0 +1,34 @@
+package kr.syeyoung.dungeonsguide.features.impl.etc;
+
+import kr.syeyoung.dungeonsguide.features.SimpleFeature;
+import kr.syeyoung.dungeonsguide.features.listener.TooltipListener;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraftforge.event.entity.player.ItemTooltipEvent;
+
+public class FeatureTooltipDungeonStat extends SimpleFeature implements TooltipListener {
+ public FeatureTooltipDungeonStat() {
+ super("ETC", "Dungeon Item Stats", "Shows quality of dungeon items (floor, percentage)", "tooltip.dungeonitem");
+ }
+
+ @Override
+ public void onTooltip(ItemTooltipEvent event) {
+ if (!isEnabled()) return;
+
+ ItemStack hoveredItem = event.itemStack;
+ NBTTagCompound compound = hoveredItem.getTagCompound();
+ if (compound == null)
+ return;
+ if (!compound.hasKey("ExtraAttributes"))
+ return;
+ NBTTagCompound nbtTagCompound = compound.getCompoundTag("ExtraAttributes");
+
+ int floor = nbtTagCompound.getInteger("item_tier");
+ int percentage = nbtTagCompound.getInteger("baseStatBoostPercentage");
+
+ if (nbtTagCompound.hasKey("item_tier"))
+ event.toolTip.add("§7Obtained in: §c"+(floor == 0 ? "Entrance" : "Floor "+floor));
+ if (nbtTagCompound.hasKey("baseStatBoostPercentage"))
+ event.toolTip.add("§7Stat Percentage: §"+(percentage == 50 ? "6§l":"c")+(percentage * 2)+"%");
+ }
+}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureTooltipPrice.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureTooltipPrice.java
new file mode 100644
index 00000000..eebb934b
--- /dev/null
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureTooltipPrice.java
@@ -0,0 +1,92 @@
+package kr.syeyoung.dungeonsguide.features.impl.etc;
+
+import kr.syeyoung.dungeonsguide.features.FeatureParameter;
+import kr.syeyoung.dungeonsguide.features.SimpleFeature;
+import kr.syeyoung.dungeonsguide.features.listener.TooltipListener;
+import kr.syeyoung.dungeonsguide.utils.AhUtils;
+import kr.syeyoung.dungeonsguide.utils.TextUtils;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraftforge.event.entity.player.ItemTooltipEvent;
+import org.lwjgl.input.Keyboard;
+
+import java.util.Comparator;
+import java.util.Set;
+import java.util.TreeSet;
+
+public class FeatureTooltipPrice extends SimpleFeature implements TooltipListener {
+ public FeatureTooltipPrice() {
+ super("ETC", "Item Price", "Shows price of items", "tooltip.price");
+ parameters.put("reqShift", new FeatureParameter<Boolean>("reqShift", "Require Shift", "If shift needs to be pressed in order for this feature to be activated", false, "boolean"));
+ }
+
+ @Override
+ public void onTooltip(ItemTooltipEvent event) {
+ if (!isEnabled()) return;
+
+ boolean activated = !this.<Boolean>getParameter("reqShift").getValue() || Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT);
+
+ ItemStack hoveredItem = event.itemStack;
+ NBTTagCompound compound = hoveredItem.getTagCompound();
+ if (compound == null)
+ return;
+ if (!compound.hasKey("ExtraAttributes"))
+ return;
+ if (!activated) {
+ event.toolTip.add("§7Shift to view price");
+ return;
+ }
+
+ final String id = compound.getCompoundTag("ExtraAttributes").getString("id");
+ if (id.equals("ENCHANTED_BOOK")) {
+ final NBTTagCompound enchants = compound.getCompoundTag("ExtraAttributes").getCompoundTag("enchantments");
+ Set<String> keys = enchants.getKeySet();
+ Set<String> actualKeys = new TreeSet<String>(new Comparator<String>() {
+ public int compare(String o1, String o2) {
+ String id2 = id + "::" + o1 + "-" + enchants.getInteger(o1);
+ AhUtils.AuctionData auctionData = AhUtils.auctions.get(id2);
+ int price1 = (auctionData == null) ? 0 : auctionData.lowestBin;
+ String id3 = id + "::" + o2 + "-" + enchants.getInteger(o2);
+ AhUtils.AuctionData auctionData2 = AhUtils.auctions.get(id3);
+ int price2 = (auctionData2 == null) ? 0 : auctionData2.lowestBin;
+ return (compare2(price1, price2) == 0) ? o1.compareTo(o2) : compare2(price1, price2);
+ }
+
+ public int compare2(int y, int x) {
+ return (x < y) ? -1 : ((x == y) ? 0 : 1);
+ }
+ });
+ actualKeys.addAll(keys);
+ int totalLowestPrice = 0;
+ int iterations = 0;
+ for (String key : actualKeys) {
+ iterations++;
+ String id2 = id + "::" + key + "-" + enchants.getInteger(key);
+ AhUtils.AuctionData auctionData = AhUtils.auctions.get(id2);
+ if (auctionData == null) {
+ if (iterations < 10)
+ event.toolTip.add("§f"+ key + " " + enchants.getInteger(key) + "§7: §cn/a");
+ continue;
+ }
+ if (iterations < 10)
+ event.toolTip.add("§f"+ key + " " + enchants.getInteger(key) + "§7: §e"+ TextUtils.format( auctionData.lowestBin));
+ totalLowestPrice += auctionData.lowestBin;
+ }
+ if (iterations >= 10)
+ event.toolTip.add("§7"+ (iterations - 10) + " more enchants... ");
+ event.toolTip.add("§fTotal Lowest§7: §e"+ TextUtils.format(totalLowestPrice));
+ } else {
+ AhUtils.AuctionData auctionData = AhUtils.auctions.get(id);
+ event.toolTip.add("");
+ if (auctionData == null) {
+ event.toolTip.add("§fLowest ah §7: §cn/a");
+ event.toolTip.add("§fBazaar sell price §7: §cn/a");
+ event.toolTip.add("§fBazaar buy price §7: §cn/a");
+ } else {
+ event.toolTip.add("§fLowest ah §7: " + ((auctionData.lowestBin != -1) ? ("§e"+ TextUtils.format(auctionData.lowestBin)) : "§cn/a"));
+ event.toolTip.add("§fBazaar sell price §7: " + ((auctionData.sellPrice == -1) ? "§cn/a": ("§e"+ TextUtils.format(auctionData.sellPrice))));
+ event.toolTip.add("§fBazaar buy price §7: " + ((auctionData.buyPrice == -1) ? "§cn/a": ("§e"+ TextUtils.format(auctionData.buyPrice))));
+ }
+ }
+ }
+}