aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/kr/syeyoung/dungeonsguide/features
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/kr/syeyoung/dungeonsguide/features')
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java8
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureTerracotaTimer.java62
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeaturePressAnyKeyToCloseChest.java41
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/FeatureGoodParties.java21
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/playerpreview/DataRendererSecrets.java8
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/FeatureMechanicBrowse.java4
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/listener/KeyInputListener.java8
7 files changed, 146 insertions, 6 deletions
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java b/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java
index bf2779d9..b38bf1b7 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java
@@ -52,7 +52,11 @@ public class FeatureRegistry {
public static final FeatureRoomDebugInfo ADVANCED_DEBUG_ROOM = register(new FeatureRoomDebugInfo());
public static final FeatureDebuggableMap ADVANCED_DEBUGGABLE_MAP = register(new FeatureDebuggableMap());
public static final FeatureRoomCoordDisplay ADVANCED_COORDS = register(new FeatureRoomCoordDisplay());
- public static final SimpleFeature ADVANCED_RICHPRESENCE = register(new SimpleFeature("Advanced", "Discord Rich presence", "Discord rich presence with ASK-TO-JOIN Support!\n\nSimply type /dg asktojoin or /dg atj to toggle whether ask-to-join would be presented as option on discord!", "advanced.richpresence", true));
+ public static final SimpleFeature ADVANCED_RICHPRESENCE = register(new SimpleFeature("Advanced", "Discord Rich presence", "Discord rich presence with ASK-TO-JOIN Support!\n\nSimply type /dg asktojoin or /dg atj to toggle whether ask-to-join would be presented as option on discord!", "advanced.richpresence", true) {
+ {
+ parameters.put("disablenotskyblock", new FeatureParameter<Boolean>("disablenotskyblock", "Disable When not on Skyblock", "Disable When not on skyblock", false, "boolean"));
+ }
+ });
public static final SimpleFeature SOLVER_RIDDLE = register(new SimpleFeature("Solver", "Riddle Puzzle (3 weirdo) Solver", "Highlights the correct box after clicking on all 3 weirdos", "solver.riddle"));
public static final SimpleFeature SOLVER_KAHOOT = register(new SimpleFeature("Solver", "Trivia Puzzle (Omnicrescent) Solver", "Highlights the correct solution for trivia puzzle", "solver.trivia"));
@@ -97,12 +101,14 @@ public class FeatureRegistry {
public static final FeatureHideAnimals BOSSFIGHT_HIDE_ANIMALS = register(new FeatureHideAnimals());
public static final FeatureThornBearPercentage BOSSFIGHT_BEAR_PERCENT = register(new FeatureThornBearPercentage());
public static final FeatureThornSpiritBowTimer BOSSFIGHT_BOW_TIMER = register(new FeatureThornSpiritBowTimer());
+ public static final FeatureTerracotaTimer BOSSFIGHT_TERRACOTTA_TIMER = register(new FeatureTerracotaTimer());
public static final FeatureCurrentPhase BOSSFIGHT_CURRENT_PHASE = register(new FeatureCurrentPhase());
public static final FeatureTerminalSolvers BOSSFIGHT_TERMINAL_SOLVERS = register(new FeatureTerminalSolvers());
public static final FeatureSimonSaysSolver BOSSFIGHT_SIMONSAYS_SOLVER = register(new FeatureSimonSaysSolver());
public static final FeatureDungeonMap DUNGEON_MAP = register(new FeatureDungeonMap());
+ public static final FeaturePressAnyKeyToCloseChest DUNGEON_CLOSECHEST = register(new FeaturePressAnyKeyToCloseChest());
public static final FeatureBoxSkelemaster DUNGEON_BOXSKELEMASTER = register(new FeatureBoxSkelemaster());
public static final FeatureBoxBats DUNGEON_BOXBAT = register(new FeatureBoxBats());
public static final FeatureBoxStarMobs DUNGEON_BOXSTARMOBS = register(new FeatureBoxStarMobs());
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureTerracotaTimer.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureTerracotaTimer.java
new file mode 100644
index 00000000..bb59419d
--- /dev/null
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureTerracotaTimer.java
@@ -0,0 +1,62 @@
+package kr.syeyoung.dungeonsguide.features.impl.boss;
+
+import kr.syeyoung.dungeonsguide.SkyblockStatus;
+import kr.syeyoung.dungeonsguide.config.types.AColor;
+import kr.syeyoung.dungeonsguide.e;
+import kr.syeyoung.dungeonsguide.features.text.StyledText;
+import kr.syeyoung.dungeonsguide.features.text.TextHUDFeature;
+import kr.syeyoung.dungeonsguide.features.text.TextStyle;
+import kr.syeyoung.dungeonsguide.roomprocessor.bossfight.BossfightProcessorSadan;
+import kr.syeyoung.dungeonsguide.roomprocessor.bossfight.BossfightProcessorThorn;
+import kr.syeyoung.dungeonsguide.utils.TextUtils;
+import net.minecraft.entity.boss.BossStatus;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class FeatureTerracotaTimer extends TextHUDFeature {
+ public FeatureTerracotaTimer() {
+ super("Bossfight", "Display Terracotta phase timer", "Displays Terracotta phase timer", "bossfight.terracota", true, getFontRenderer().getStringWidth("Terracottas: 1m 99s"), getFontRenderer().FONT_HEIGHT);
+ this.setEnabled(true);
+ getStyles().add(new TextStyle("title", new AColor(0x00, 0xAA,0xAA,255), new AColor(0, 0,0,0), false));
+ getStyles().add(new TextStyle("separator", new AColor(0x55, 0x55,0x55,255), new AColor(0, 0,0,0), false));
+ getStyles().add(new TextStyle("time", new AColor(0x55, 0xFF,0xFF,255), new AColor(0, 0,0,0), false));
+ }
+
+ SkyblockStatus skyblockStatus = e.getDungeonsGuide().getSkyblockStatus();
+
+ private static final List<StyledText> dummyText= new ArrayList<StyledText>();
+ static {
+ dummyText.add(new StyledText("Terracottas","title"));
+ dummyText.add(new StyledText(": ","separator"));
+ dummyText.add(new StyledText("1m 99s","time"));
+ }
+ @Override
+ public boolean isHUDViewable() {
+ return skyblockStatus.isOnDungeon() && skyblockStatus.getContext() != null && skyblockStatus.getContext().getBossfightProcessor() instanceof BossfightProcessorSadan &&
+ "fight-1".equalsIgnoreCase(skyblockStatus.getContext().getBossfightProcessor().getCurrentPhase());
+ }
+
+ @Override
+ public List<String> getUsedTextStyle() {
+ return Arrays.asList(new String[] {
+ "title", "separator", "number", "unit"
+ });
+ }
+
+ @Override
+ public List<StyledText> getDummyText() {
+ return dummyText;
+ }
+
+ @Override
+ public List<StyledText> getText() {
+ List<StyledText> actualBit = new ArrayList<StyledText>();
+ actualBit.add(new StyledText("Terracottas","title"));
+ actualBit.add(new StyledText(": ","separator"));
+ actualBit.add(new StyledText(TextUtils.formatTime((long) (BossStatus.healthScale * 1000 * 60 * 1.5)),"time"));
+ return actualBit;
+ }
+
+}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeaturePressAnyKeyToCloseChest.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeaturePressAnyKeyToCloseChest.java
new file mode 100644
index 00000000..1e9b4989
--- /dev/null
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeaturePressAnyKeyToCloseChest.java
@@ -0,0 +1,41 @@
+package kr.syeyoung.dungeonsguide.features.impl.dungeon;
+
+import kr.syeyoung.dungeonsguide.features.FeatureParameter;
+import kr.syeyoung.dungeonsguide.features.SimpleFeature;
+import kr.syeyoung.dungeonsguide.features.impl.boss.FeatureChestPrice;
+import kr.syeyoung.dungeonsguide.features.listener.KeyInputListener;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.GuiScreen;
+import net.minecraft.client.gui.inventory.GuiChest;
+import net.minecraft.inventory.ContainerChest;
+import net.minecraft.inventory.IInventory;
+import net.minecraftforge.client.event.GuiScreenEvent;
+import net.minecraftforge.fml.common.gameevent.InputEvent;
+
+public class FeaturePressAnyKeyToCloseChest extends SimpleFeature implements KeyInputListener {
+ public FeaturePressAnyKeyToCloseChest() {
+ super("Dungeon", "Press Any Key to close Secret Chest", "dungeon.presskeytoclose");
+ parameters.put("threshold", new FeatureParameter<Integer>("threshold", "Price Threshold", "The maximum price of item for chest to be closed. Default 1m", 1000000, "integer"));
+ }
+
+ @Override
+ public void onKeyInput(GuiScreenEvent.KeyboardInputEvent keyboardInputEvent) {
+ GuiScreen screen = Minecraft.getMinecraft().currentScreen;
+ if (screen instanceof GuiChest){
+ ContainerChest ch = (ContainerChest) ((GuiChest)screen).inventorySlots;
+ if (!("Large Chest".equals(ch.getLowerChestInventory().getName())
+ || "Chest".equals(ch.getLowerChestInventory().getName()))) return;
+ IInventory actualChest = ch.getLowerChestInventory();
+
+ int priceSum = 0;
+ for (int i = 0; i < actualChest.getSizeInventory(); i++) {
+ priceSum += FeatureChestPrice.getPrice(actualChest.getStackInSlot(i));
+ }
+
+ int threshold = this.<Integer>getParameter("threshold").getValue();
+ if (priceSum < threshold) {
+ Minecraft.getMinecraft().thePlayer.closeScreen();
+ }
+ }
+ }
+}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/FeatureGoodParties.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/FeatureGoodParties.java
index ae7b0b45..912e0c6a 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/FeatureGoodParties.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/FeatureGoodParties.java
@@ -66,18 +66,33 @@ public class FeatureGoodParties extends SimpleFeature implements GuiPostRenderLi
int classLvReq = 0;
int cataLvReq = 0;
boolean Req = false;
+ String note = "";
for (int n = 0; n < lore.tagCount(); n++) {
String str = lore.getStringTagAt(n);
if (str.startsWith("§7Dungeon Level Required: §b")) cataLvReq = Integer.parseInt(str.substring(28));
if (str.startsWith("§7Class Level Required: §b")) classLvReq = Integer.parseInt(str.substring(26));
+ if (str.startsWith("§7§7Note:")) note = TextUtils.stripColor(str.substring(10));
if (str.startsWith("§cRequires")) Req = true;
}
- System.out.println(classLvReq + " / "+cataLvReq);
+ int x = s.xDisplayPosition;
+ int y = s.yDisplayPosition;
if (Req) {
- int x = s.xDisplayPosition;
- int y = s.yDisplayPosition;
Gui.drawRect(x, y, x + 16, y + 16, 0x77AA0000);
+ } else {
+
+ if (note.toLowerCase().contains("car")) {
+ fr.drawStringWithShadow("C", x + 1, y + 1, 0xFFFF0000);
+ } else if (note.toLowerCase().replace(" ", "").contains("s/s+")) {
+ fr.drawStringWithShadow("S+", x + 1, y + 1, 0xFFFFFF00);
+ } else if (note.toLowerCase().contains("s+")) {
+ fr.drawStringWithShadow("S+", x + 1, y + 1, 0xFF00FF00);
+ } else if (note.toLowerCase().contains(" s") || note.toLowerCase().contains(" s ")) {
+ fr.drawStringWithShadow("S", x + 1, y + 1, 0xFFFFFF00);
+ } else if (note.toLowerCase().contains("rush")) {
+ fr.drawStringWithShadow("R", x + 1, y + 1, 0xFFFF0000);
+ }
+ fr.drawStringWithShadow("§e"+Integer.max(classLvReq, cataLvReq), x + 1, y + fr.FONT_HEIGHT, 0xFFFFFFFF);
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/playerpreview/DataRendererSecrets.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/playerpreview/DataRendererSecrets.java
index 73426287..dfb2f6fb 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/playerpreview/DataRendererSecrets.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/playerpreview/DataRendererSecrets.java
@@ -5,19 +5,23 @@ import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import java.awt.*;
+import java.util.stream.Collectors;
public class DataRendererSecrets implements DataRenderer {
@Override
public Dimension renderData(PlayerProfile playerProfile) {
FontRenderer fr = Minecraft.getMinecraft().fontRendererObj;
- fr.drawString("§eSecrets §b"+playerProfile.getTotalSecrets(), 0,0,-1);
+ double theint = playerProfile.getTotalSecrets()/ (double)playerProfile.getDungeonStats().values().stream().flatMap(s -> s.getData().getPlays().values().stream())
+ .map(fs -> fs.getData().getWatcherKills()).reduce(0, Integer::sum);
+ fr.drawString("§eSecrets §b"+playerProfile.getTotalSecrets()+" §7("+
+ String.format("%.2f", theint)+"/run)", 0,0,-1);
return new Dimension(100, fr.FONT_HEIGHT);
}
@Override
public Dimension renderDummy() {
FontRenderer fr = Minecraft.getMinecraft().fontRendererObj;
- fr.drawString("§eSecrets §b99999", 0,0,-1);
+ fr.drawString("§eSecrets §b99999 §7(X/run)", 0,0,-1);
return new Dimension(100, fr.FONT_HEIGHT);
}
@Override
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/FeatureMechanicBrowse.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/FeatureMechanicBrowse.java
index 54353e34..19f39b1f 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/FeatureMechanicBrowse.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/FeatureMechanicBrowse.java
@@ -42,6 +42,7 @@ public class FeatureMechanicBrowse extends GuiFeature implements GuiPreRenderLis
super("Secret","Mechanic(Secret) Browser", "Browse and Pathfind secrets and mechanics in the current room", "secret.mechanicbrowse", false, 100, 300);
parameters.put("linecolor", new FeatureParameter<Color>("linecolor", "Color", "Color of Pathfind line", Color.green, "color"));
parameters.put("linethickness", new FeatureParameter<Float>("linethickness", "Thickness", "Thickness of Pathfind line", 1.0f, "float"));
+ parameters.put("refreshrate", new FeatureParameter<Integer>("refreshrate", "Line Refreshrate", "How many ticks per line refresh?", 10, "integer"));
}
public Color getColor() {
@@ -50,6 +51,9 @@ public class FeatureMechanicBrowse extends GuiFeature implements GuiPreRenderLis
public float getThickness() {
return this.<Float>getParameter("linethickness").getValue();
}
+ public int getRefreshRate() {
+ return this.<Integer>getParameter("refreshrate").getValue();
+ }
SkyblockStatus skyblockStatus = e.getDungeonsGuide().getSkyblockStatus();
private UUID lastRoomUID = null;
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/listener/KeyInputListener.java b/src/main/java/kr/syeyoung/dungeonsguide/features/listener/KeyInputListener.java
new file mode 100644
index 00000000..5462c4cb
--- /dev/null
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/listener/KeyInputListener.java
@@ -0,0 +1,8 @@
+package kr.syeyoung.dungeonsguide.features.listener;
+
+import net.minecraftforge.client.event.GuiScreenEvent;
+import net.minecraftforge.fml.common.gameevent.InputEvent;
+
+public interface KeyInputListener {
+ void onKeyInput(GuiScreenEvent.KeyboardInputEvent keyboardInputEvent);
+}