aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/commands/CommandDungeonsGuide.java54
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/GuiConfigV2.java1
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/MCategoryElement.java8
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/MFeature.java10
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/MFeatureEdit.java30
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/MPanelCategory.java16
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/NestedCategory.java8
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/RootConfigPanel.java79
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/AbstractFeature.java4
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/FeatureParameter.java17
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java44
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureAutoReparty.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureBoxRealLivid.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureHideAnimals.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureTerracotaTimer.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureThornBearPercentage.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureThornSpiritBowTimer.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureWarningOnPortal.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/terminal/FeatureSimonSaysSolver.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/terminal/FeatureTerminalSolvers.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureBoxBats.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureBoxSkelemaster.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureBoxStarMobs.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonCurrentRoomSecrets.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonDeaths.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonMilestone.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonRealTime.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonRoomName.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonSBTime.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonScore.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonSecrets.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonTombs.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureHideNameTags.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeaturePlayerESP.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureWarnLowHealth.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureWatcherWarning.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureAutoAcceptReparty.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureCooldownCounter.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureCopyMessages.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureDecreaseExplosionSound.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureDisableMessage.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeaturePenguins.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureRepartyCommand.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureTooltipDungeonStat.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureTooltipPrice.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureUpdateAlarm.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/ability/FeatureAbilityCooldown.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/APIKey.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/customgui/FeatureCustomPartyFinder.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/playerpreview/DataRendererEditor.java7
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/playerpreview/FeatureViewPlayerOnJoin.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/FeatureMechanicBrowse.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/FeatureSoulRoomWarning.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/text/PanelTextParameterConfig.java270
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/text/TextHUDFeature.java7
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/gui/elements/MButton.java8
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MModal.java87
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MModalConfirmation.java88
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MRootPanel.java1
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/gui/elements/MTextField.java2
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/gui/elements/MToggleButton.java5
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/utils/RenderUtils.java29
62 files changed, 648 insertions, 209 deletions
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/commands/CommandDungeonsGuide.java b/src/main/java/kr/syeyoung/dungeonsguide/commands/CommandDungeonsGuide.java
index 437c1689..84c677ab 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/commands/CommandDungeonsGuide.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/commands/CommandDungeonsGuide.java
@@ -22,6 +22,7 @@ import com.google.gson.JsonObject;
import kr.syeyoung.dungeonsguide.DungeonsGuide;
import kr.syeyoung.dungeonsguide.SkyblockStatus;
import kr.syeyoung.dungeonsguide.config.guiconfig.nyu.GuiConfigV2;
+import kr.syeyoung.dungeonsguide.config.guiconfig.nyu.NestedCategory;
import kr.syeyoung.dungeonsguide.cosmetics.CosmeticsManager;
import kr.syeyoung.dungeonsguide.dungeon.DungeonContext;
import kr.syeyoung.dungeonsguide.dungeon.MapProcessor;
@@ -35,6 +36,7 @@ import kr.syeyoung.dungeonsguide.dungeon.mechanics.*;
import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom;
import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoomInfoRegistry;
import kr.syeyoung.dungeonsguide.events.DungeonLeftEvent;
+import kr.syeyoung.dungeonsguide.features.AbstractFeature;
import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
import kr.syeyoung.dungeonsguide.features.impl.party.playerpreview.FeatureViewPlayerOnJoin;
import kr.syeyoung.dungeonsguide.features.impl.party.api.ApiFetchur;
@@ -61,6 +63,7 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.ChatStyle;
+import net.minecraft.util.Tuple;
import net.minecraft.world.World;
import net.minecraft.world.chunk.Chunk;
import net.minecraftforge.common.MinecraftForge;
@@ -78,10 +81,8 @@ import java.io.*;
import java.security.*;
import java.security.cert.CertificateException;
import java.text.SimpleDateFormat;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.Map;
-import java.util.UUID;
+import java.util.*;
+import java.util.List;
import java.util.regex.Pattern;
public class CommandDungeonsGuide extends CommandBase {
@@ -489,6 +490,51 @@ public class CommandDungeonsGuide extends CommandBase {
} else if (args[0].equals("CloseContext")) {
DungeonsGuide.getDungeonsGuide().getSkyblockStatus().setForceIsOnDungeon(false);
DungeonsGuide.getDungeonsGuide().getSkyblockStatus().setContext(null);
+ } else if (args[0].equals("dumpsettings")) {
+ NestedCategory root = new NestedCategory("ROOT");
+ for (AbstractFeature abstractFeature : FeatureRegistry.getFeatureList()) {
+ String category = abstractFeature.getCategory();
+ NestedCategory currentRoot = root;
+ for (String s : category.split("\\.")) {
+ NestedCategory finalCurrentRoot = currentRoot;
+ if (currentRoot.children().containsKey(s))
+ currentRoot = currentRoot.children().get(s);
+ else {
+ currentRoot.child(currentRoot = new NestedCategory(finalCurrentRoot.categoryFull()+"."+s));
+ }
+ }
+ }
+
+ StringBuilder stringBuilder = new StringBuilder();
+ StringBuilder stringBuilder2 = new StringBuilder();
+
+ Stack<Tuple<NestedCategory, Integer>> stak = new Stack<>();
+ stak.push(new Tuple<>(root, 0));
+ Set<NestedCategory> discovered = new HashSet<>();
+ while (!stak.isEmpty()) {
+ Tuple<NestedCategory, Integer> n = stak.pop();
+ if (discovered.contains(n.getFirst())) continue;
+ discovered.add(n.getFirst());
+ for (Map.Entry<String, NestedCategory> stringNestedCategoryEntry : n.getFirst().children().entrySet()) {
+ stak.push(new Tuple<>(stringNestedCategoryEntry.getValue(), n.getSecond() + 1));
+ }
+
+ if (n.getFirst().categoryFull().equals("ROOT")) continue;
+
+ String prefix = "";
+ for (int i = 0; i < n.getSecond()-1; i++) {
+ prefix += " ";
+ }
+
+ List<AbstractFeature> abstractFeatureList = FeatureRegistry.getFeaturesByCategory().getOrDefault(n.getFirst().categoryFull().substring(5), Collections.emptyList());
+ stringBuilder.append(prefix).append("- C ").append(n.getFirst().categoryFull()).append("\n");
+ stringBuilder2.append(n.getFirst().categoryFull()).append("\n");
+ for (AbstractFeature abstractFeature : abstractFeatureList) {
+ stringBuilder.append(prefix).append(" - F ").append(abstractFeature.getName()).append(" / ").append(abstractFeature.getDescription().replace("\n", "$NEW_LINE$")).append("\n");
+ }
+ }
+ System.out.println(stringBuilder.toString());
+ System.out.println(stringBuilder2.toString());
} else {
sender.addChatMessage(new ChatComponentText("§eDungeons Guide §7:: §e/dg §7-§fOpens configuration gui"));
sender.addChatMessage(new ChatComponentText("§eDungeons Guide §7:: §e/dg gui §7-§fOpens configuration gui"));
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/GuiConfigV2.java b/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/GuiConfigV2.java
index 267d9a5a..8b3e3eb4 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/GuiConfigV2.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/GuiConfigV2.java
@@ -31,7 +31,6 @@ public class GuiConfigV2 extends MGui {
public GuiConfigV2() {
rootConfigPanel = new RootConfigPanel(this);
- rootConfigPanel.setPageGenerator(ConfigPanelCreator.INSTANCE);
getMainPanel().add(rootConfigPanel);
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/MCategoryElement.java b/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/MCategoryElement.java
index 67087dd8..7df00626 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/MCategoryElement.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/MCategoryElement.java
@@ -22,8 +22,10 @@ import kr.syeyoung.dungeonsguide.gui.MPanel;
import kr.syeyoung.dungeonsguide.utils.RenderUtils;
import kr.syeyoung.dungeonsguide.utils.cursor.EnumCursor;
import net.minecraft.client.Minecraft;
+import net.minecraft.client.audio.PositionedSoundRecord;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.Gui;
+import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;
import java.awt.*;
@@ -48,7 +50,7 @@ public class MCategoryElement extends MPanel {
if (rootConfigPanel.getCurrentPage().equals(category)) {
clip(0,scissor.y, Minecraft.getMinecraft().displayWidth, scissor.height);
Gui.drawRect(leftPad - offsetX, 0, getBounds().width, getBounds().height, RenderUtils.blendAlpha(0x141414, 0.13f));
- } else if (lastAbsClip.contains(absMousex, absMousey)) {
+ } else if (lastAbsClip.contains(absMousex, absMousey) && getTooltipsOpen() == 0) {
clip(0,scissor.y, Minecraft.getMinecraft().displayWidth, scissor.height);
Gui.drawRect(leftPad - offsetX, 0, getBounds().width, getBounds().height, RenderUtils.blendAlpha(0x141414, 0.09f));
}
@@ -69,8 +71,10 @@ public class MCategoryElement extends MPanel {
@Override
public void mouseClicked(int absMouseX, int absMouseY, int relMouseX, int relMouseY, int mouseButton) {
- if (!lastAbsClip.contains(absMouseX, absMouseY)) { return; }
+ if (!lastAbsClip.contains(absMouseX, absMouseY) || getTooltipsOpen() > 0) { return; }
if (onClick != null) onClick.run();
+ Minecraft.getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.create(new ResourceLocation("gui.button.press"), 1.0F));
+
}
@Override
public void mouseMoved(int absMouseX, int absMouseY, int relMouseX0, int relMouseY0) {
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/MFeature.java b/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/MFeature.java
index 15b36216..7585d56c 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/MFeature.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/MFeature.java
@@ -106,9 +106,15 @@ public class MFeature extends MPanel {
@Override
public void render(int absMousex, int absMousey, int relMousex0, int relMousey0, float partialTicks, Rectangle scissor) {
- Gui.drawRect(0,0,getBounds().width, getBounds().height, RenderUtils.blendAlpha(0x141414, 0.12f));
+
+ int border = RenderUtils.blendAlpha(0x141414, 0.12f);
+ if (!panel.getSearchWord().isEmpty() && (feature.getName().contains(panel.getSearchWord()) || feature.getDescription().contains(panel.getSearchWord()))) {
+ border = 0xFF02EE67;
+ }
+
+ Gui.drawRect(0,0,getBounds().width, getBounds().height,border);
Gui.drawRect(1,18,getBounds().width -1, getBounds().height-1, RenderUtils.blendAlpha(0x141414, 0.15f));
- Gui.drawRect(0,17,getBounds().width, 18,RenderUtils.blendAlpha(0x141414, 0.12f));
+ Gui.drawRect(1,1,getBounds().width-1, 18, RenderUtils.blendAlpha(0x141414, 0.12f));
FontRenderer fr = Minecraft.getMinecraft().fontRendererObj;
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/MFeatureEdit.java b/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/MFeatureEdit.java
index 3256c408..fbc1924f 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/MFeatureEdit.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/MFeatureEdit.java
@@ -23,6 +23,8 @@ import kr.syeyoung.dungeonsguide.features.FeatureParameter;
import kr.syeyoung.dungeonsguide.gui.MPanel;
import kr.syeyoung.dungeonsguide.gui.elements.MButton;
import kr.syeyoung.dungeonsguide.gui.elements.MList;
+import kr.syeyoung.dungeonsguide.gui.elements.MModal;
+import kr.syeyoung.dungeonsguide.gui.elements.MModalConfirmation;
import java.awt.*;
import java.util.HashMap;
@@ -30,7 +32,7 @@ import java.util.Map;
public class MFeatureEdit extends MPanel {
private MList list;
- private MButton goBack;
+ private MButton goBack, resetToDefault;
private RootConfigPanel rootConfigPanel;
private AbstractFeature abstractFeature;
@@ -48,6 +50,30 @@ public class MFeatureEdit extends MPanel {
goBack.setText("< Go Back");
goBack.setOnActionPerformed(rootConfigPanel::goBack);
add(goBack);
+ resetToDefault = new MButton();
+ resetToDefault.setText("Reset To Default");
+ resetToDefault.setForeground(Color.red);
+ resetToDefault.setOnActionPerformed(() -> {
+ openResetConfirmation();
+ });
+ add(resetToDefault);
+ }
+
+ public void openResetConfirmation() {
+ MModalConfirmation mModal = new MModalConfirmation("Are you sure?",
+ "Resetting to default will reset your configuration for the selected feature to default",
+ () -> {
+ for (FeatureParameter parameter : abstractFeature.getParameters()) {
+ parameter.setToDefault();
+ }
+ abstractFeature.onParameterReset();
+ rootConfigPanel.invalidatePage(abstractFeature.getEditRoute(rootConfigPanel));
+ }, () -> {});
+ mModal.setScale(getScale());
+ mModal.getYes().setBorder(0xFFFF0000);
+ mModal.getYes().setText("Yes, Reset it");
+ mModal.getNo().setText("Cancel");
+ mModal.open(MFeatureEdit.this);
}
public void addParameterEdit(String name, MPanel paramEdit) {
@@ -73,9 +99,11 @@ public class MFeatureEdit extends MPanel {
public void setBounds(Rectangle bounds) {
super.setBounds(bounds);
goBack.setBounds(new Rectangle(5,5,75,15));
+ resetToDefault.setBounds(new Rectangle(bounds.width - 105, 5, 100, 15));
list.setBounds(new Rectangle(5,25,bounds.width - 10, bounds.height - 10));
list.realignChildren();
+
}
@Override
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/MPanelCategory.java b/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/MPanelCategory.java
index 5df29c3b..c2033f7a 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/MPanelCategory.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/MPanelCategory.java
@@ -45,13 +45,15 @@ public class MPanelCategory extends MPanel {
for (NestedCategory value : nestedCategory.children().values()) {
list.add(new MCategory(value, rootConfigPanel));
}
- String actualCategory = nestedCategory.categoryFull().substring(5);
- if (FeatureRegistry.getFeaturesByCategory().containsKey(actualCategory))
- for (AbstractFeature abstractFeature : FeatureRegistry.getFeaturesByCategory().get(actualCategory)) {
- MFeature mFeature = new MFeature(abstractFeature, rootConfigPanel);
- list.add(mFeature);
- mFeature.setHover(new Color(94, 94, 94, 255));
- }
+ if (nestedCategory.parent() != null) {
+ String actualCategory = nestedCategory.categoryFull().substring(5);
+ if (FeatureRegistry.getFeaturesByCategory().containsKey(actualCategory))
+ for (AbstractFeature abstractFeature : FeatureRegistry.getFeaturesByCategory().get(actualCategory)) {
+ MFeature mFeature = new MFeature(abstractFeature, rootConfigPanel);
+ list.add(mFeature);
+ mFeature.setHover(new Color(94, 94, 94, 255));
+ }
+ }
list.realignChildren();
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/NestedCategory.java b/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/NestedCategory.java
index ac3b8f49..25e262b3 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/NestedCategory.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/NestedCategory.java
@@ -19,6 +19,8 @@
package kr.syeyoung.dungeonsguide.config.guiconfig.nyu;
import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
import lombok.experimental.Accessors;
import java.util.HashMap;
@@ -26,9 +28,13 @@ import java.util.Map;
@Data
@Accessors(chain = true, fluent = true)
+public
class NestedCategory {
private final String categoryFull;
+ @EqualsAndHashCode.Exclude
private String categoryName;
+ @EqualsAndHashCode.Exclude
+ @ToString.Exclude
private NestedCategory parent;
public NestedCategory(String categoryFull) {
@@ -36,6 +42,8 @@ class NestedCategory {
this.categoryName = categoryFull.substring(categoryFull.lastIndexOf(".") + 1);
}
+ @EqualsAndHashCode.Exclude
+ @ToString.Exclude
private Map<String, NestedCategory> children = new HashMap<>();
public NestedCategory child(NestedCategory child) {
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/RootConfigPanel.java b/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/RootConfigPanel.java
index e2b97b7f..d43a45da 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/RootConfigPanel.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/config/guiconfig/nyu/RootConfigPanel.java
@@ -32,9 +32,7 @@ import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.Gui;
import java.awt.*;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Stack;
+import java.util.*;
public class RootConfigPanel extends MPanelScaledGUI {
private MScrollablePanel navigationScroll;
@@ -47,7 +45,7 @@ public class RootConfigPanel extends MPanelScaledGUI {
private final Map<String, MPanel> pages = new HashMap<String, MPanel>();
@Getter
@Setter
- private Function<String, MPanel> pageGenerator;
+ private Function<String, MPanel> pageGenerator = ConfigPanelCreator.INSTANCE;
@Getter
private String currentPage = "";
@@ -60,12 +58,34 @@ public class RootConfigPanel extends MPanelScaledGUI {
private final Stack<String> history = new Stack<String>();
+ public String getSearchWord() {
+ return search.getText().trim();
+ }
+
public RootConfigPanel(GuiConfigV2 guiConfigV2) {
this.gui = guiConfigV2;
search = new MTextField() {
@Override
public void edit(String str) {
+ setupNavigation();
+
+ setCurrentPageAndPushHistory("");
+ if (!categoryMap.containsKey(lastOpenCategory)) {
+ for (Map.Entry<NestedCategory, MPanel> nestedCategoryMPanelEntry : categoryMap.entrySet()) {
+ if (nestedCategoryMPanelEntry.getValue() instanceof MCategoryElement) {
+ setCurrentPageAndPushHistory(nestedCategoryMPanelEntry.getKey().categoryFull());
+ lastOpenCategory = nestedCategoryMPanelEntry.getKey();
+ break;
+ }
+ }
+ }
+ for (Map.Entry<NestedCategory, MPanel> nestedCategoryMPanelEntry : categoryMap.entrySet()) {
+ if (nestedCategoryMPanelEntry.getValue() instanceof MCollapsable) {
+ ((MCollapsable) nestedCategoryMPanelEntry.getValue()).setCollapsed(false);
+ }
+ }
+ rePlaceElements();
}
};
search.setPlaceHolder("Search...");
@@ -95,18 +115,49 @@ public class RootConfigPanel extends MPanelScaledGUI {
navigation.setDrawLine(false);
+ setCurrentPageAndPushHistory("ROOT");
rePlaceElements();
}
+
+ private Map<NestedCategory, MPanel> categoryMap = new HashMap<>();
+ private NestedCategory lastOpenCategory;
private void setupNavigation() {
+ categoryMap.clear();
+ for (MPanel childComponent : navigation.getChildComponents()) {
+ navigation.remove(childComponent);
+ }
NestedCategory root = new NestedCategory("ROOT");
+ Set<String> categoryAllowed = new HashSet<>();
+ String search = this.search.getText().trim();
+ for (AbstractFeature abstractFeature : FeatureRegistry.getFeatureList()) {
+ if (search.isEmpty()) {
+ categoryAllowed.add("ROOT."+abstractFeature.getCategory());
+ } else if (abstractFeature.getName().contains(search)) {
+ categoryAllowed.add("ROOT."+abstractFeature.getCategory());
+ } else if (abstractFeature.getDescription().contains(search)) {
+ categoryAllowed.add("ROOT."+abstractFeature.getCategory());
+ }
+ }
for (AbstractFeature abstractFeature : FeatureRegistry.getFeatureList()) {
String category = abstractFeature.getCategory();
+ boolean test =false;
+ for (String s : categoryAllowed) {
+ if (("ROOT."+category).startsWith(s)) {
+ test = true;
+ break;
+ }
+ }
+ if (!test) continue;
NestedCategory currentRoot = root;
for (String s : category.split("\\.")) {
NestedCategory finalCurrentRoot = currentRoot;
- currentRoot = currentRoot.children().computeIfAbsent(s, k -> new NestedCategory(finalCurrentRoot.categoryFull()+"."+k));
+ if (currentRoot.children().containsKey(s))
+ currentRoot = currentRoot.children().get(s);
+ else {
+ currentRoot.child(currentRoot = new NestedCategory(finalCurrentRoot.categoryFull()+"."+s));
+ }
}
}
@@ -114,6 +165,7 @@ public class RootConfigPanel extends MPanelScaledGUI {
for (NestedCategory value : root.children().values()) {
setupNavigationRecursive(value, navigation, 0, 17);
}
+ ConfigPanelCreator.map.put("ROOT", () -> new MPanelCategory(root, this));
}
private void setupNavigationRecursive(NestedCategory nestedCategory, MPanel parent, int depth, int offset) {
ConfigPanelCreator.map.put(nestedCategory.categoryFull(), () -> new MPanelCategory(nestedCategory, this));
@@ -121,11 +173,14 @@ public class RootConfigPanel extends MPanelScaledGUI {
if (nestedCategory.children().size() == 0) {
MCategoryElement current = new MCategoryElement(nestedCategory.categoryFull(),() -> {
setCurrentPageAndPushHistory(nestedCategory.categoryFull());
+ lastOpenCategory = nestedCategory;
}, 13 * depth + 17, offset, this);
parent.add(current);
+ categoryMap.put(nestedCategory, current);
} else {
MCategoryElement current = new MCategoryElement(nestedCategory.categoryFull(),() -> {
setCurrentPageAndPushHistory(nestedCategory.categoryFull());
+ lastOpenCategory = nestedCategory;
}, 3,offset, this);
MCollapsable mCollapsable = new MCollapsable(current, this::rePlaceElements);
mCollapsable.setLeftPad(offset-13);
@@ -133,6 +188,7 @@ public class RootConfigPanel extends MPanelScaledGUI {
mCollapsable.getLowerElements().setGap(0);
mCollapsable.setLeftPadElements(0);
parent.add(mCollapsable);
+ categoryMap.put(nestedCategory, mCollapsable);
for (NestedCategory value : nestedCategory.children().values()) {
setupNavigationRecursive(value, mCollapsable, depth+1, offset+13);
@@ -144,6 +200,7 @@ public class RootConfigPanel extends MPanelScaledGUI {
public void setCurrentPageAndPushHistory(String currentPage) {
if (!this.currentPage.equals(currentPage))
history.push(this.currentPage);
+ lastOpenCategory = null;
this.currentPage = currentPage;
setupPage();
}
@@ -164,6 +221,12 @@ public class RootConfigPanel extends MPanelScaledGUI {
rePlaceElements();
}
+ public void invalidatePage(String page) {
+ pages.remove(page);
+ if (page.equals(currentPage))
+ setupPage();
+ }
+
@Override
public void render(int absMousex, int absMousey, int relMousex0, int relMousey0, float partialTicks, Rectangle scissor) {
Dimension effectiveDim = getEffectiveDimension();
@@ -190,6 +253,12 @@ public class RootConfigPanel extends MPanelScaledGUI {
rePlaceElements();
}
+ @Override
+ public void setScale(double scale) {
+ super.setScale(scale);
+ rePlaceElements();
+ }
+
private void rePlaceElements() {
Dimension effectiveDim = getEffectiveDimension();
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/AbstractFeature.java b/src/main/java/kr/syeyoung/dungeonsguide/features/AbstractFeature.java
index c71639cd..575dee1a 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/AbstractFeature.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/AbstractFeature.java
@@ -63,7 +63,9 @@ public abstract class AbstractFeature {
public void loadConfig(JsonObject jsonObject) { // gets key, calls it
enabled = jsonObject.get("$enabled").getAsBoolean();
+
for (Map.Entry<String, FeatureParameter> parameterEntry : parameters.entrySet()) {
+ parameterEntry.getValue().setToDefault();
JsonElement element = jsonObject.get(parameterEntry.getKey());
if (element == null) continue;
TypeConverter typeConverter = TypeConverterRegistry.getTypeConverter(parameterEntry.getValue().getValue_type());
@@ -96,6 +98,8 @@ public abstract class AbstractFeature {
return "base." + key ;
}
+ public void onParameterReset() {}
+
public boolean isDisyllable() {
return true;
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureParameter.java b/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureParameter.java
index ce8a5501..f5a2133a 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureParameter.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureParameter.java
@@ -18,6 +18,8 @@
package kr.syeyoung.dungeonsguide.features;
+import kr.syeyoung.dungeonsguide.config.types.TypeConverter;
+import kr.syeyoung.dungeonsguide.config.types.TypeConverterRegistry;
import lombok.AllArgsConstructor;
import lombok.Data;
@@ -30,5 +32,20 @@ public class FeatureParameter<T> {
private String description;
private T value;
+ private T default_value;
private String value_type;
+
+ public FeatureParameter(String key, String name, String description, T default_value, String value_type) {
+ this.key = key; this.name = name; this.default_value = default_value;
+ this.description = description; this.value_type = value_type;
+ }
+
+ public void setToDefault() {
+ TypeConverter<T> typeConverter = TypeConverterRegistry.getTypeConverter(getValue_type());
+ value = (T) typeConverter.deserialize(typeConverter.serialize(default_value));
+ }
+
+ public T getValue() {
+ return value == null ? default_value : value;
+ }
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java b/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java
index bf0d8961..d70b9066 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java
@@ -75,26 +75,26 @@ 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("Misc", "Discord RPC", "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"));
- public static final SimpleFeature SOLVER_BLAZE = register(new SimpleFeature("Solver", "Blaze Puzzle Solver", "Highlights the blaze that needs to be killed in an blaze room", "solver.blaze") {{
+ public static final SimpleFeature SOLVER_RIDDLE = register(new SimpleFeature("Solver.Any Floor", "Riddle", "Highlights the correct box after clicking on all 3 weirdos", "solver.riddle"));
+ public static final SimpleFeature SOLVER_KAHOOT = register(new SimpleFeature("Solver.Floor 4+", "Quiz", "Highlights the correct solution for trivia puzzle", "solver.trivia"));
+ public static final SimpleFeature SOLVER_BLAZE = register(new SimpleFeature("Solver.Floor 2+", "Blaze", "Highlights the blaze that needs to be killed in an blaze room", "solver.blaze") {{
parameters.put("blazeborder", new FeatureParameter<AColor>("blazeborder", "Blaze Border Color", "Blaze border color", new AColor(255,255,255,0), "acolor"));
}});
- public static final SimpleFeature SOLVER_TICTACTOE = register(new SimpleFeature("Solver", "Tictactoe Solver", "Shows the best move that could be taken by player in the tictactoe room", "solver.tictactoe"));
- public static final SimpleFeature SOLVER_ICEPATH = register(new SimpleFeature("Solver", "Icepath Puzzle Solver (Advanced)", "Calculates solution for icepath puzzle and displays it to user", "solver.icepath"));
- public static final SimpleFeature SOLVER_SILVERFISH = register(new SimpleFeature("Solver", "Silverfish Puzzle Solver (Advanced)", "Actively calculates solution for silverfish puzzle and displays it to user", "solver.silverfish"));
- public static final SimpleFeature SOLVER_WATERPUZZLE = register(new SimpleFeature("Solver", "Waterboard Puzzle Solver (Advanced)", "Calculates solution for waterboard puzzle and displays it to user", "solver.waterboard"));
- public static final SimpleFeature SOLVER_BOX = register(new SimpleFeature("Solver", "Box Puzzle Solver (Advanced)", "Calculates solution for box puzzle room, and displays it to user", "solver.box"));
- public static final SimpleFeature SOLVER_BOX_DISABLE_TEXT = register(new SimpleFeature("Solver", "Box Puzzle Solver Disable text", "Disable 'Type recalc to recalculate solution' showing up on top left.\nYou can still type recalc to recalc solution after disabling this feature", "solver.boxrecalc", false));
- public static final SimpleFeature SOLVER_CREEPER = register(new SimpleFeature("Solver", "Creeper Puzzle Solver", "Draws line between prismarine lamps in creeper room", "solver.creeper"));
- public static final SimpleFeature SOLVER_TELEPORT = register(new SimpleFeature("Solver", "Teleport Puzzle Solver", "Shows teleport pads you've visited in a teleport maze room", "solver.teleport"));
- public static final SimpleFeature SOLVER_BOMBDEFUSE = register(new SimpleFeature("Solver", "Bomb Defuse Puzzle Solver", "Communicates with others dg using key 'F' for solutions and displays it", "solver.bombdefuse"));
+ public static final SimpleFeature SOLVER_TICTACTOE = register(new SimpleFeature("Solver.Any Floor", "Tictactoe", "Shows the best move that could be taken by player in the tictactoe room", "solver.tictactoe"));
+ public static final SimpleFeature SOLVER_ICEPATH = register(new SimpleFeature("Solver.Floor 3+", "Icepath (Advanced)", "Calculates solution for icepath puzzle and displays it to user", "solver.icepath"));
+ public static final SimpleFeature SOLVER_SILVERFISH = register(new SimpleFeature("Solver.Floor 3+", "Silverfish (Advanced)", "Actively calculates solution for silverfish puzzle and displays it to user", "solver.silverfish"));
+ public static final SimpleFeature SOLVER_WATERPUZZLE = register(new SimpleFeature("Solver.Any Floor", "Waterboard (Advanced)", "Calculates solution for waterboard puzzle and displays it to user", "solver.waterboard"));
+ public static final SimpleFeature SOLVER_BOX = register(new SimpleFeature("Solver.Floor 3+", "Box (Advanced)", "Calculates solution for box puzzle room, and displays it to user", "solver.box"));
+ public static final SimpleFeature SOLVER_BOX_DISABLE_TEXT = register(new SimpleFeature("Solver.Floor 3+", "Box Puzzle Solver Disable text", "Disable 'Type recalc to recalculate solution' showing up on top left.\nYou can still type recalc to recalc solution after disabling this feature", "solver.boxrecalc", false));
+ public static final SimpleFeature SOLVER_CREEPER = register(new SimpleFeature("Solver.Any Floor", "Creeper", "Draws line between prismarine lamps in creeper room", "solver.creeper"));
+ public static final SimpleFeature SOLVER_TELEPORT = register(new SimpleFeature("Solver.Any Floor", "Teleport", "Shows teleport pads you've visited in a teleport maze room", "solver.teleport"));
+ public static final SimpleFeature SOLVER_BOMBDEFUSE = register(new SimpleFeature("Solver.Floor 7+", "Bomb Defuse", "Communicates with others dg using key 'F' for solutions and displays it", "solver.bombdefuse"));
public static final FeatureTooltipDungeonStat ETC_DUNGEONSTAT = register(new FeatureTooltipDungeonStat());
public static final FeatureTooltipPrice ETC_PRICE = register(new FeatureTooltipPrice());
@@ -105,7 +105,7 @@ public class FeatureRegistry {
public static final FeatureAutoAcceptReparty ETC_AUTO_ACCEPT_REPARTY = register(new FeatureAutoAcceptReparty());
public static final FeatureUpdateAlarm ETC_TEST = register(new FeatureUpdateAlarm());
- public static final SimpleFeature FIX_SPIRIT_BOOTS = register(new SimpleFeature("ETC", "Spirit Boots Fixer", "Fix Spirit boots messing up with inventory", "fixes.spirit", true));
+ public static final SimpleFeature FIX_SPIRIT_BOOTS = register(new SimpleFeature("Misc", "Spirit Boots Fixer", "Fix Spirit boots messing up with inventory", "fixes.spirit", true));
public static final FeatureDisableMessage FIX_MESSAGES = register(new FeatureDisableMessage());
public static final FeatureCopyMessages ETC_COPY_MSG = register(new FeatureCopyMessages());
@@ -114,7 +114,6 @@ public class FeatureRegistry {
public static final APIKey PARTYKICKER_APIKEY = register(new APIKey());
public static final FeatureViewPlayerOnJoin PARTYKICKER_VIEWPLAYER = register(new FeatureViewPlayerOnJoin());
- public static final FeatureGoodParties PARTYKICKER_GOODPARTIES = register(new FeatureGoodParties());
public static final FeatureCustomPartyFinder PARTYKICKER_CUSTOM = register(new FeatureCustomPartyFinder());
public static final FeatureWarningOnPortal BOSSFIGHT_WARNING_ON_PORTAL = register(new FeatureWarningOnPortal());
@@ -147,25 +146,20 @@ public class FeatureRegistry {
public static final FeatureDungeonTombs DUNGEON_TOMBS = register(new FeatureDungeonTombs());
public static final FeatureDungeonScore DUNGEON_SCORE = register(new FeatureDungeonScore());
public static final FeatureWarnLowHealth DUNGEON_LOWHEALTH_WARN = register(new FeatureWarnLowHealth());
- public static final SimpleFeature DUNGEON_INTERMODCOMM = register(new SimpleFeature("Dungeon", "Communicate With Other's Dungeons Guide", "Sends total secret in the room to others\nSo that they can use the data to calculate total secret in dungeon run\n\nThis automates player chatting action, (chatting data) Thus it might be against hypixel's rules.\nBut mods like auto-gg which also automate player action and is kinda allowed mod exist so I'm leaving this feature.\nThis option is use-at-your-risk and you'll be responsible for ban if you somehow get banned because of this feature\n(Although it is not likely to happen)\nDefaults to off", "dungeon.intermodcomm", false));
+ public static final SimpleFeature DUNGEON_INTERMODCOMM = register(new SimpleFeature("Dungeon.Teammates", "Communicate With Other's Dungeons Guide", "Sends total secret in the room to others\nSo that they can use the data to calculate total secret in dungeon run\n\nThis automates player chatting action, (chatting data) Thus it might be against hypixel's rules.\nBut mods like auto-gg which also automate player action and is kinda allowed mod exist so I'm leaving this feature.\nThis option is use-at-your-risk and you'll be responsible for ban if you somehow get banned because of this feature\n(Although it is not likely to happen)\nDefaults to off", "dungeon.intermodcomm", false));
public static final FeaturePlayerESP DUNGEON_PLAYERESP = register(new FeaturePlayerESP());
public static final FeatureHideNameTags DUNGEON_HIDENAMETAGS = register(new FeatureHideNameTags());
public static final FeatureMechanicBrowse SECRET_BROWSE = register(new FeatureMechanicBrowse());
public static final FeatureActions SECRET_ACTIONS = register(new FeatureActions());
public static final FeatureSoulRoomWarning SECRET_FAIRYSOUL = register(new FeatureSoulRoomWarning());
- public static final SimpleFeature SECRET_AUTO_BROWSE_NEXT = register(new SimpleFeature("Dungeon Secret.Secret Pathfind", "Auto browse next secret.", "Auto browse best next secret after current one completes.\nthe first pathfinding of first secret needs to be triggered first in order for this option to work", "secret.autobrowse", false));
- public static final SimpleFeature SECRET_AUTO_START = register(new SimpleFeature("Dungeon Secret.Secret Pathfind", "Auto browse secret upon entering room", "Auto browse best secret upon entering the room.", "secret.autouponenter", false));
- public static final SimpleFeature SECRET_NEXT_KEY = register(new SimpleFeature("Dungeon Secret.Secret Pathfind", "Auto browse next secret upon pressing a key", "Auto browse the best next secret when you press key.\nChange key at your key settings (Settings -> Controls)", "secret.keyfornext", false));
- public static final SimpleFeature SECRET_TOGGLE_KEY = register(new SimpleFeature("Dungeon Secret.Pathfind Display", "Press a key to toggle pathfind lines", "A key for toggling pathfound line visibility.\nChange key at your key settings (Settings -> Controls)", "secret.togglePathfind"));
+ public static final SimpleFeature SECRET_AUTO_BROWSE_NEXT = register(new SimpleFeature("Dungeon Secret.Secret Pathfind", "Auto Pathfind to next secret", "Auto browse best next secret after current one completes.\nthe first pathfinding of first secret needs to be triggered first in order for this option to work", "secret.autobrowse", false));
+ public static final SimpleFeature SECRET_AUTO_START = register(new SimpleFeature("Dungeon Secret.Secret Pathfind", "Auto pathfind to new secret", "Auto browse best secret upon entering the room.", "secret.autouponenter", false));
+ public static final SimpleFeature SECRET_NEXT_KEY = register(new SimpleFeature("Dungeon Secret.Secret Pathfind", "Auto Pathfind to new secret upon pressing a key", "Auto browse the best next secret when you press key.\nChange key at your key settings (Settings -> Controls)", "secret.keyfornext", false));
+ public static final SimpleFeature SECRET_TOGGLE_KEY = register(new SimpleFeature("Dungeon Secret.Pathfind Display", "Toggle Pathfind Lines", "A key for toggling pathfound line visibility.\nChange key at your key settings (Settings -> Controls)", "secret.togglePathfind"));
public static final SimpleFeature SECRET_FREEZE_LINES = register(new FeatureFreezePathfind());
public static final FeatureNicknamePrefix COSMETIC_PREFIX = register(new FeatureNicknamePrefix());
public static final FeatureNicknameColor COSMETIC_NICKNAMECOLOR = register(new FeatureNicknameColor());
- public static final SimpleFeature TEST_1 = register(new SimpleFeature("Test", "t", "t", "emp"));
- public static final SimpleFeature TEST_1_1 = register(new SimpleFeature("Test.Test1", "t", "t", "emp"));
- public static final SimpleFeature TEST_1_2 = register(new SimpleFeature("Test.Test2", "t", "t", "emp"));
- public static final SimpleFeature TEST_1_2_1 = register(new SimpleFeature("Test.Test2.Test1", "t", "t", "emp"));
-
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureAutoReparty.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureAutoReparty.java
index 992802c2..67254ff1 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureAutoReparty.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureAutoReparty.java
@@ -24,7 +24,7 @@ import kr.syeyoung.dungeonsguide.features.listener.DungeonQuitListener;
public class FeatureAutoReparty extends SimpleFeature implements DungeonQuitListener {
public FeatureAutoReparty() {
- super("Bossfight", "Auto reparty when dungeon finishes","Auto reparty on dungeon finish\n\nThis automates player chatting action, (disbanding, repartying) Thus it might be against hypixel's rules.\nBut mods like auto-gg exist so I'm leaving this feature.\nThis option is use-at-your-risk and you'll be responsible for ban if you somehow get banned because of this feature\n(Although it is not likely to happen)\nDefaults to off", "bossfight.autoreparty", false);
+ super("Party.Reparty", "Auto reparty when dungeon finishes","Auto reparty on dungeon finish\n\nThis automates player chatting action, (disbanding, repartying) Thus it might be against hypixel's rules.\nBut mods like auto-gg exist so I'm leaving this feature.\nThis option is use-at-your-risk and you'll be responsible for ban if you somehow get banned because of this feature\n(Although it is not likely to happen)\nDefaults to off", "bossfight.autoreparty", false);
}
@Override
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureBoxRealLivid.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureBoxRealLivid.java
index 51d649eb..415753b5 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureBoxRealLivid.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureBoxRealLivid.java
@@ -32,7 +32,7 @@ import net.minecraft.util.AxisAlignedBB;
public class FeatureBoxRealLivid extends SimpleFeature implements WorldRenderListener {
public FeatureBoxRealLivid() {
- super("Bossfight", "Box Real Livid", "Box Real Livid in bossfight", "bossfight.realLividBox", true);
+ super("Bossfight.Floor 5", "Box Real Livid", "Box Real Livid in bossfight", "bossfight.realLividBox", true);
parameters.put("color", new FeatureParameter<AColor>("color", "Highlight Color", "Highlight Color of Livid", new AColor(0,255,0,150), "acolor"));
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureHideAnimals.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureHideAnimals.java
index 4bd2d4e8..6330f5bb 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureHideAnimals.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureHideAnimals.java
@@ -30,7 +30,7 @@ import net.minecraftforge.client.event.RenderLivingEvent;
public class FeatureHideAnimals extends SimpleFeature implements EntityLivingRenderListener {
public FeatureHideAnimals() {
- super("Bossfight", "Hide animals on f4", "Hide Spirit Animals on F4. \nClick on Edit for precise setting", "bossfight.hideanimals", false);
+ super("Bossfight.Floor 4", "Hide animals on f4", "Hide Spirit Animals on F4. \nClick on Edit for precise setting", "bossfight.hideanimals", false);
parameters.put("sheep", new FeatureParameter<Boolean>("sheep", "Hide Sheeps", "Hide Sheeps", true, "boolean"));
parameters.put("cow", new FeatureParameter<Boolean>("cow", "Hide Cows", "Hide Cows", true, "boolean"));
parameters.put("chicken", new FeatureParameter<Boolean>("chicken", "Hide Chickens", "Hide Chickens", true, "boolean"));
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
index 6a705499..22538cca 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureTerracotaTimer.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureTerracotaTimer.java
@@ -34,7 +34,7 @@ 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);
+ super("Bossfight.Floor 6", "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));
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureThornBearPercentage.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureThornBearPercentage.java
index c7365386..542beb6e 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureThornBearPercentage.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureThornBearPercentage.java
@@ -32,7 +32,7 @@ import java.util.List;
public class FeatureThornBearPercentage extends TextHUDFeature {
public FeatureThornBearPercentage() {
- super("Bossfight", "Display Spirit Bear Summon Percentage", "Displays spirit bear summon percentage in hud", "bossfight.spiritbear", true, getFontRenderer().getStringWidth("Spirit Bear: 100%"), getFontRenderer().FONT_HEIGHT);
+ super("Bossfight.Floor 4", "Display Spirit Bear Summon Percentage", "Displays spirit bear summon percentage in hud", "bossfight.spiritbear", true, getFontRenderer().getStringWidth("Spirit Bear: 100%"), 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));
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureThornSpiritBowTimer.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureThornSpiritBowTimer.java
index 4c9bfd2b..24b289e1 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureThornSpiritBowTimer.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureThornSpiritBowTimer.java
@@ -37,7 +37,7 @@ import java.util.List;
public class FeatureThornSpiritBowTimer extends TextHUDFeature implements ChatListener, TitleListener {
public FeatureThornSpiritBowTimer() {
- super("Bossfight", "Display Spirit bow timer", "Displays how long until spirit bow gets destroyed", "bossfight.spiritbowdisplay", false, getFontRenderer().getStringWidth("Spirit Bow Destruction: 2m 00s"), getFontRenderer().FONT_HEIGHT);
+ super("Bossfight.Floor 4", "Display Spirit bow timer", "Displays how long until spirit bow gets destroyed", "bossfight.spiritbowdisplay", false, getFontRenderer().getStringWidth("Spirit Bow Destruction: 2m 00s"), getFontRenderer().FONT_HEIGHT);
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));
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureWarningOnPortal.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureWarningOnPortal.java
index 8e585a0b..97683eb2 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureWarningOnPortal.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/FeatureWarningOnPortal.java
@@ -40,7 +40,7 @@ import java.util.*;
public class FeatureWarningOnPortal extends SimpleFeature implements StyledTextProvider {
public FeatureWarningOnPortal() {
- super("Bossfight", "Show warnings on red portal", "Display warnings such as\n- 'NOT ALL ROOMS DISCOVERED'\n- 'NOT ALL ROOMS COMPLETED'\n- 'Expected Score: 304'\n- 'MISSING 3 CRYPTS'\non portal", "bossfight.warningonportal");
+ super("Dungeon.Blood Room", "Score Warning on Watcher portal", "Display warnings such as\n- 'NOT ALL ROOMS DISCOVERED'\n- 'NOT ALL ROOMS COMPLETED'\n- 'Expected Score: 304'\n- 'MISSING 3 CRYPTS'\non portal", "bossfight.warningonportal");
this.parameters.put("textStyles", new FeatureParameter<List<TextStyle>>("textStyles", "", "", new ArrayList<TextStyle>(), "list_textStyle"));
getStyles().add(new TextStyle("warning", new AColor(255, 0,0,255), new AColor(255, 255,255,255), false));
getStyles().add(new TextStyle("field_name", new AColor(255, 72,255,255), new AColor(0, 0,0,0), false));
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/terminal/FeatureSimonSaysSolver.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/terminal/FeatureSimonSaysSolver.java
index ba0322f6..d8f1bcc1 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/terminal/FeatureSimonSaysSolver.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/terminal/FeatureSimonSaysSolver.java
@@ -40,7 +40,7 @@ import java.util.List;
public class FeatureSimonSaysSolver extends SimpleFeature implements WorldRenderListener, TickListener, InteractListener {
public FeatureSimonSaysSolver() {
- super("Bossfight","Simon Says Solver","Solver for Simon says puzzle", "bossfight.simonsays2");
+ super("Solver.Floor 7+.Bossfight","Simon Says Solver","Solver for Simon says puzzle", "bossfight.simonsays2");
}
private final SkyblockStatus ss = DungeonsGuide.getDungeonsGuide().getSkyblockStatus();
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/terminal/FeatureTerminalSolvers.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/terminal/FeatureTerminalSolvers.java
index f86bbf3c..749f1e2a 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/terminal/FeatureTerminalSolvers.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/boss/terminal/FeatureTerminalSolvers.java
@@ -38,7 +38,7 @@ import java.util.List;
public class FeatureTerminalSolvers extends SimpleFeature implements GuiOpenListener, TickListener, GuiPostRenderListener, GuiClickListener, TooltipListener {
public FeatureTerminalSolvers() {
- super("Bossfight","F7 GUI Terminal Solver", "Solve f7 gui terminals. (color, startswith, order, navigate, correct panes)", "bossfight.terminals");
+ super("Solver.Floor 7+.Bossfight","F7 GUI Terminal Solver", "Solve f7 gui terminals. (color, startswith, order, navigate, correct panes)", "bossfight.terminals");
}
public static final List<TerminalSolutionProvider> solutionProviders = new ArrayList<TerminalSolutionProvider>();
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureBoxBats.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureBoxBats.java
index a7c58ea4..5fac96b9 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureBoxBats.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureBoxBats.java
@@ -36,7 +36,7 @@ import java.util.List;
public class FeatureBoxBats extends SimpleFeature implements WorldRenderListener {
public FeatureBoxBats() {
- super("Dungeon", "Box Bats", "Box bats in dungeons\nDoes not appear through walls", "dungeon.batbox", true);
+ super("Dungeon.Mobs", "Box Bats", "Box bats in dungeons\nDoes not appear through walls", "dungeon.batbox", true);
parameters.put("radius", new FeatureParameter<Integer>("radius", "Highlight Radius", "The maximum distance between player and bats to be boxed", 20, "integer"));
parameters.put("color", new FeatureParameter<AColor>("color", "Highlight Color", "Highlight Color of Bats", new AColor(255,0,0,50), "acolor"));
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureBoxSkelemaster.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureBoxSkelemaster.java
index 4e80ccf6..7e8c736b 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureBoxSkelemaster.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureBoxSkelemaster.java
@@ -36,7 +36,7 @@ import java.util.List;
public class FeatureBoxSkelemaster extends SimpleFeature implements WorldRenderListener {
public FeatureBoxSkelemaster() {
- super("Dungeon", "Box Skeleton Masters", "Box skeleton masters in dungeons", "dungeon.skeletonmasterbox", true);
+ super("Dungeon.Mobs", "Box Skeleton Masters", "Box skeleton masters in dungeons", "dungeon.skeletonmasterbox", true);
parameters.put("radius", new FeatureParameter<Integer>("radius", "Highlight Radius", "The maximum distance between player and skeletonmaster to be boxed", 20, "integer"));
parameters.put("color", new FeatureParameter<AColor>("color", "Highlight Color", "Highlight Color of Skeleton master", new AColor(255,0,0,50), "acolor"));
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureBoxStarMobs.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureBoxStarMobs.java
index bce0ef21..e41e9f69 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureBoxStarMobs.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureBoxStarMobs.java
@@ -36,7 +36,7 @@ import java.util.List;
public class FeatureBoxStarMobs extends SimpleFeature implements WorldRenderListener {
public FeatureBoxStarMobs() {
- super("Dungeon", "Box Starred mobs", "Box Starred mobs in dungeons", "dungeon.starmobbox", false);
+ super("Dungeon.Mobs", "Box Starred mobs", "Box Starred mobs in dungeons", "dungeon.starmobbox", false);
parameters.put("radius", new FeatureParameter<Integer>("radius", "Highlight Radius", "The maximum distance between player and starred mobs to be boxed", 20, "integer"));
parameters.put("color", new FeatureParameter<AColor>("color", "Highlight Color", "Highlight Color of Starred mobs", new AColor(0,255,255,50), "acolor"));
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonCurrentRoomSecrets.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonCurrentRoomSecrets.java
index df6553e4..cf1ebc08 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonCurrentRoomSecrets.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonCurrentRoomSecrets.java
@@ -33,7 +33,7 @@ import java.util.List;
public class FeatureDungeonCurrentRoomSecrets extends TextHUDFeature implements ChatListener {
public FeatureDungeonCurrentRoomSecrets() {
- super("Dungeon", "Display #Secrets in current room", "Display what your actionbar says", "dungeon.stats.secretsroom", true, getFontRenderer().getStringWidth("Secrets In Room: 8/8"), getFontRenderer().FONT_HEIGHT);
+ super("Dungeon.Dungeon Information", "Display # Secrets in current room", "Display what your actionbar says", "dungeon.stats.secretsroom", true, getFontRenderer().getStringWidth("Secrets In Room: 8/8"), getFontRenderer().FONT_HEIGHT);
this.setEnabled(false);
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));
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonDeaths.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonDeaths.java
index 58f6e83a..bb3d5241 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonDeaths.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonDeaths.java
@@ -41,7 +41,7 @@ import java.util.regex.Pattern;
public class FeatureDungeonDeaths extends TextHUDFeature implements ChatListener {
public FeatureDungeonDeaths() {
- super("Dungeon", "Display Deaths", "Display names of player and death count in dungeon run", "dungeon.stats.deaths", false, getFontRenderer().getStringWidth("longestplayernamepos: 100"), getFontRenderer().FONT_HEIGHT * 6);
+ super("Dungeon.Dungeon Information", "Display Deaths", "Display names of player and death count in dungeon run", "dungeon.stats.deaths", false, getFontRenderer().getStringWidth("longestplayernamepos: 100"), getFontRenderer().FONT_HEIGHT * 6);
this.setEnabled(false);
getStyles().add(new TextStyle("username", new AColor(0x00, 0xAA,0xAA,255), new AColor(0, 0,0,0), false));
getStyles().add(new TextStyle("total", new AColor(0x00, 0xAA,0xAA,255), new AColor(0, 0,0,0), false));
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonMilestone.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonMilestone.java
index dd3a8a50..e9819690 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonMilestone.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonMilestone.java
@@ -41,7 +41,7 @@ import java.util.regex.Pattern;
public class FeatureDungeonMilestone extends TextHUDFeature implements ChatListener {
public FeatureDungeonMilestone() {
- super("Dungeon", "Display Current Class Milestone", "Display current class milestone of yourself", "dungeon.stats.milestone", true, getFontRenderer().getStringWidth("Milestone: 12"), getFontRenderer().FONT_HEIGHT);
+ super("Dungeon.Dungeon Information", "Display Current Class Milestone", "Display current class milestone of yourself", "dungeon.stats.milestone", true, getFontRenderer().getStringWidth("Milestone: 12"), getFontRenderer().FONT_HEIGHT);
this.setEnabled(false);
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));
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonRealTime.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonRealTime.java
index 0718ab0f..fa69f006 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonRealTime.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonRealTime.java
@@ -32,7 +32,7 @@ import java.util.List;
public class FeatureDungeonRealTime extends TextHUDFeature implements DungeonStartListener, DungeonEndListener {
public FeatureDungeonRealTime() {
- super("Dungeon", "Display Real Time-Dungeon Time", "Display how much real time has passed since dungeon run started", "dungeon.stats.realtime", true, getFontRenderer().getStringWidth("Time(Real): 59m 59s"), getFontRenderer().FONT_HEIGHT);
+ super("Dungeon.Dungeon Information", "Display Real Time-Dungeon Time", "Display how much real time has passed since dungeon run started", "dungeon.stats.realtime", true, getFontRenderer().getStringWidth("Time(Real): 59m 59s"), getFontRenderer().FONT_HEIGHT);
this.setEnabled(false);
getStyles().add(new TextStyle("title", new AColor(0x00, 0xAA,0xAA,255), new AColor(0, 0,0,0), false));
getStyles().add(new TextStyle("discriminator", new AColor(0xAA,0xAA,0xAA,255), new AColor(0, 0,0,0), false));
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonRoomName.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonRoomName.java
index 56ae9be8..03217b30 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonRoomName.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonRoomName.java
@@ -39,7 +39,7 @@ import java.util.List;
public class FeatureDungeonRoomName extends TextHUDFeature {
public FeatureDungeonRoomName() {
- super("Dungeon", "Display name of the room you are in", "Display name of the room you are in", "dungeon.roomname", false, getFontRenderer().getStringWidth("You're in puzzle-tictactoe"), getFontRenderer().FONT_HEIGHT);
+ super("Dungeon.Dungeon Information", "Display name of the room you are in", "Display name of the room you are in", "dungeon.roomname", false, getFontRenderer().getStringWidth("You're in puzzle-tictactoe"), getFontRenderer().FONT_HEIGHT);
getStyles().add(new TextStyle("in", new AColor(0x00, 0xAA,0xAA,255), new AColor(0, 0,0,0), false));
getStyles().add(new TextStyle("roomname", new AColor(0x55, 0xFF,0xFF,255), new AColor(0, 0,0,0), false));
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonSBTime.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonSBTime.java
index baef5de6..c4591be8 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonSBTime.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonSBTime.java
@@ -41,7 +41,7 @@ public class FeatureDungeonSBTime extends TextHUDFeature {
private final SkyblockStatus skyblockStatus = DungeonsGuide.getDungeonsGuide().getSkyblockStatus();
public FeatureDungeonSBTime() {
- super("Dungeon", "Display Ingame Dungeon Time", "Display how much time skyblock thinks has passed since dungeon run started", "dungeon.stats.igtime", true, getFontRenderer().getStringWidth("Time(IG): 1h 59m 59s"), getFontRenderer().FONT_HEIGHT);
+ super("Dungeon.Dungeon Information", "Display Ingame Dungeon Time", "Display how much time skyblock thinks has passed since dungeon run started", "dungeon.stats.igtime", true, getFontRenderer().getStringWidth("Time(IG): 1h 59m 59s"), getFontRenderer().FONT_HEIGHT);
this.setEnabled(false);
getStyles().add(new TextStyle("title", new AColor(0x00, 0xAA,0xAA,255), new AColor(0, 0,0,0), false));
getStyles().add(new TextStyle("discriminator", new AColor(0xAA,0xAA,0xAA,255), new AColor(0, 0,0,0), false));
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonScore.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonScore.java
index a332a370..e43b96ca 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonScore.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonScore.java
@@ -53,7 +53,7 @@ import java.util.concurrent.ExecutionException;
public class FeatureDungeonScore extends TextHUDFeature {
public FeatureDungeonScore() {
- super("Dungeon", "Display Current Score", "Calculate and Display current score\nThis data is from pure calculation and can be different from actual score.", "dungeon.stats.score", false, 200, getFontRenderer().FONT_HEIGHT * 4);
+ super("Dungeon.Dungeon Information", "Display Current Score", "Calculate and Display current score\nThis data is from pure calculation and can be different from actual score.", "dungeon.stats.score", false, 200, getFontRenderer().FONT_HEIGHT * 4);
this.setEnabled(false);
parameters.put("verbose", new FeatureParameter<Boolean>("verbose", "Show each score instead of sum", "Skill: 100 Explore: 58 S->S+(5 tombs) instead of Score: 305", true, "boolean"));
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonSecrets.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonSecrets.java
index 4c4ac44f..75498427 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonSecrets.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonSecrets.java
@@ -37,7 +37,7 @@ import java.util.List;
public class FeatureDungeonSecrets extends TextHUDFeature {
public FeatureDungeonSecrets() {
- super("Dungeon", "Display #Secrets in total", "Display how much total secrets have been found in a dungeon run.\n+ sign means DG does not know the correct number, but it's somewhere above that number.", "dungeon.stats.secrets", true, getFontRenderer().getStringWidth("Secrets: 999/999+"), getFontRenderer().FONT_HEIGHT);
+ super("Dungeon.Dungeon Information", "Display Total # of Secrets", "Display how much total secrets have been found in a dungeon run.\n+ sign means DG does not know the correct number, but it's somewhere above that number.", "dungeon.stats.secrets", true, getFontRenderer().getStringWidth("Secrets: 999/999+"), getFontRenderer().FONT_HEIGHT);
this.setEnabled(false);
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));
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonTombs.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonTombs.java
index cc0c0ea6..4a3fb2cd 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonTombs.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureDungeonTombs.java
@@ -35,7 +35,7 @@ import java.util.List;
public class FeatureDungeonTombs extends TextHUDFeature {
public FeatureDungeonTombs() {
- super("Dungeon", "Display #Crypts", "Display how much total crypts have been blown up in a dungeon run", "dungeon.stats.tombs", true, getFontRenderer().getStringWidth("Crypts: 42"), getFontRenderer().FONT_HEIGHT);
+ super("Dungeon.Dungeon Information", "Display # of Crypts", "Display how much total crypts have been blown up in a dungeon run", "dungeon.stats.tombs", true, getFontRenderer().getStringWidth("Crypts: 42"), getFontRenderer().FONT_HEIGHT);
this.setEnabled(false);
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));
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureHideNameTags.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureHideNameTags.java
index 130f3448..4aab1f53 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureHideNameTags.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureHideNameTags.java
@@ -28,7 +28,7 @@ import net.minecraftforge.client.event.RenderLivingEvent;
public class FeatureHideNameTags extends SimpleFeature implements EntityLivingRenderListener {
public FeatureHideNameTags() {
- super("Dungeon", "Hide mob nametags", "Hide mob nametags. Developer personally don't suggest using this, it will be most likely annoying.", "dungeon.hidenametag", false);
+ super("Dungeon.Mobs", "Hide mob nametags", "Hide mob nametags. Developer personally don't suggest using this, it will be most likely annoying.", "dungeon.hidenametag", false);
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeaturePlayerESP.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeaturePlayerESP.java
index 16652d9e..1609a5c2 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeaturePlayerESP.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeaturePlayerESP.java
@@ -34,7 +34,7 @@ import org.lwjgl.opengl.GL11;
public class FeaturePlayerESP extends SimpleFeature implements PlayerRenderListener {
public FeaturePlayerESP() {
- super("Dungeon", "See players through walls", "See players through walls", "dungeon.playeresp", false);
+ super("Dungeon.Teammates", "See players through walls", "See players through walls", "dungeon.playeresp", false);
setEnabled(false);
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureWarnLowHealth.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureWarnLowHealth.java
index 47de8d18..6b990f7c 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureWarnLowHealth.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureWarnLowHealth.java
@@ -39,7 +39,7 @@ import java.util.List;
public class FeatureWarnLowHealth extends TextHUDFeature {
public FeatureWarnLowHealth() {
- super("Dungeon", "Low Health Warning", "Warn if someone is on low health", "dungeon.lowhealthwarn", false, 500, 20);
+ super("Dungeon.Teammates", "Low Health Warning", "Warn if someone is on low health", "dungeon.lowhealthwarn", false, 500, 20);
parameters.put("threshold", new FeatureParameter<Integer>("threshold", "Health Threshold", "Health Threshold for this feature to be toggled. default to 500", 500, "integer"));
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));
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureWatcherWarning.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureWatcherWarning.java
index 2fa1b763..d9354137 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureWatcherWarning.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/dungeon/FeatureWatcherWarning.java
@@ -38,7 +38,7 @@ import java.util.UUID;
public class FeatureWatcherWarning extends TextHUDFeature implements ChatListener, DungeonEndListener {
public FeatureWatcherWarning() {
- super("Dungeon","Watcher Spawn Alert", "Alert when watcher says 'That will be enough for now'", "dungen.watcherwarn", true, getFontRenderer().getStringWidth("Watcher finished spawning all mobs!"), getFontRenderer().FONT_HEIGHT);
+ super("Dungeon.Blood Room","Watcher Spawn Alert", "Alert when watcher says 'That will be enough for now'", "dungen.watcherwarn", true, getFontRenderer().getStringWidth("Watcher finished spawning all mobs!"), getFontRenderer().FONT_HEIGHT);
getStyles().add(new TextStyle("warning", new AColor(0xFF, 0x69,0x17,255), new AColor(0, 0,0,0), false));
setEnabled(false);
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureAutoAcceptReparty.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureAutoAcceptReparty.java
index 0d470a70..84c22353 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureAutoAcceptReparty.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureAutoAcceptReparty.java
@@ -28,7 +28,7 @@ import net.minecraftforge.client.event.ClientChatReceivedEvent;
public class FeatureAutoAcceptReparty extends SimpleFeature implements ChatListener {
public FeatureAutoAcceptReparty() {
- super("ETC", "Auto accept reparty", "Automatically accept reparty", "qol.autoacceptreparty", true);
+ super("Party.Reparty", "Auto accept reparty", "Automatically accept reparty", "qol.autoacceptreparty", true);
}
SkyblockStatus skyblockStatus = DungeonsGuide.getDungeonsGuide().getSkyblockStatus();
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
index 69953ec0..2bdf607e 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureCooldownCounter.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureCooldownCounter.java
@@ -44,7 +44,7 @@ import java.util.List;
public class FeatureCooldownCounter extends TextHUDFeature implements DungeonQuitListener, GuiOpenListener {
public FeatureCooldownCounter() {
- super("ETC", "Dungeon Cooldown Counter", "Counts 10 seconds after leaving dungeon", "qol.cooldown", true, getFontRenderer().getStringWidth("Cooldown: 10s "), getFontRenderer().FONT_HEIGHT);
+ super("Dungeon", "Dungeon Cooldown Counter", "Counts 10 seconds after leaving dungeon", "qol.cooldown", true, getFontRenderer().getStringWidth("Cooldown: 10s "), getFontRenderer().FONT_HEIGHT);
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("number", new AColor(0x55, 0xFF,0xFF,255), new AColor(0, 0,0,0), false));
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureCopyMessages.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureCopyMessages.java
index a9dc9a8f..cda0eb7a 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureCopyMessages.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureCopyMessages.java
@@ -29,7 +29,7 @@ import net.minecraftforge.client.event.ClientChatReceivedEvent;
public class FeatureCopyMessages extends SimpleFeature implements ChatListener {
public FeatureCopyMessages() {
- super("ETC", "Copy Chat Messages", "Click on copy to copy", "etc.copymsg");
+ super("Misc.Chat", "Copy Chat Messages", "Click on copy to copy", "etc.copymsg");
setEnabled(false);
}
@Override
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureDecreaseExplosionSound.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureDecreaseExplosionSound.java
index 11bf89ab..a382e646 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureDecreaseExplosionSound.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureDecreaseExplosionSound.java
@@ -28,7 +28,7 @@ import net.minecraftforge.client.event.sound.PlaySoundEvent;
public class FeatureDecreaseExplosionSound extends SimpleFeature implements SoundListener {
public FeatureDecreaseExplosionSound() {
- super("ETC", "Decrease Explosion sound effect", "Decreases volume of explosions while on skyblock", "qol.reparty");
+ super("Misc", "Decrease Explosion sound effect", "Decreases volume of explosions while on skyblock", "qol.explosionsound");
parameters.put("sound", new FeatureParameter<Float>("sound", "Sound Multiplier %", "The volume of explosion effect will be multiplied by this value. 0~100", 10.0f, "float"));
}
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
index 050d30c5..e8d9531c 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureDisableMessage.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureDisableMessage.java
@@ -55,7 +55,7 @@ public class FeatureDisableMessage extends SimpleFeature implements ChatListener
};
public FeatureDisableMessage() {
- super("ETC", "Disable ability messages", "Do not let ability messages show up in chatbox\nclick on Edit for more precise settings", "fixes.messagedisable", true);
+ super("Misc.Chat", "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"));
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeaturePenguins.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeaturePenguins.java
index 102a53fa..ab3a7a83 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeaturePenguins.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeaturePenguins.java
@@ -39,7 +39,7 @@ import net.minecraftforge.client.event.RenderPlayerEvent;
public class FeaturePenguins extends SimpleFeature implements PlayerRenderListener {
public FeaturePenguins() {
- super("ETC", "Penguins", "Awwww", "etc.penguin", false);
+ super("Misc", "Penguins", "Awwww", "etc.penguin", false);
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureRepartyCommand.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureRepartyCommand.java
index 7e4788f9..ac01610d 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureRepartyCommand.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureRepartyCommand.java
@@ -23,7 +23,7 @@ import kr.syeyoung.dungeonsguide.features.SimpleFeature;
public class FeatureRepartyCommand extends SimpleFeature {
public FeatureRepartyCommand() {
- super("ETC", "Enable Reparty Command From DG", "if you disable, /dg reparty will still work, Auto reparty will still work\nRequires Restart to get applied", "qol.reparty");
+ super("Party.Reparty", "Enable Reparty Command From DG", "if you disable, /dg reparty will still work, Auto reparty will still work\nRequires Restart to get applied", "qol.reparty");
parameters.put("command", new FeatureParameter<String>("command", "The Command", "Command that the reparty will be bound to", "reparty", "string"));
}
}
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
index 02512529..12100aac 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureTooltipDungeonStat.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureTooltipDungeonStat.java
@@ -26,7 +26,7 @@ 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");
+ super("Misc", "Dungeon Item Stats", "Shows quality of dungeon items (floor, percentage)", "tooltip.dungeonitem");
}
@Override
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
index 5f145f44..2714e634 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureTooltipPrice.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureTooltipPrice.java
@@ -34,7 +34,7 @@ import java.util.TreeSet;
public class FeatureTooltipPrice extends SimpleFeature implements TooltipListener {
public FeatureTooltipPrice() {
- super("ETC", "Item Price", "Shows price of items", "tooltip.price");
+ super("Misc.API Features", "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"));
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureUpdateAlarm.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureUpdateAlarm.java
index 5092f7cf..c966360d 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureUpdateAlarm.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeatureUpdateAlarm.java
@@ -31,7 +31,7 @@ import net.minecraft.util.ChatComponentText;
public class FeatureUpdateAlarm extends SimpleFeature implements StompConnectedListener, StompMessageHandler, TickListener {
public FeatureUpdateAlarm() {
- super("ETC", "Update Alarm","Show a warning in chat when a version has been released.", "etc.updatealarm", true);
+ super("Updates", "Update Alarm","Show a warning in chat when a version has been released.", "etc.updatealarm", true);
}
private StompPayload stompPayload;
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/ability/FeatureAbilityCooldown.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/ability/FeatureAbilityCooldown.java
index 51a218e7..4c914f32 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/ability/FeatureAbilityCooldown.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/ability/FeatureAbilityCooldown.java
@@ -43,7 +43,7 @@ public class FeatureAbilityCooldown extends TextHUDFeature implements ChatListen
SkyblockStatus skyblockStatus = DungeonsGuide.getDungeonsGuide().getSkyblockStatus();
public FeatureAbilityCooldown() {
- super("ETC", "View Ability Cooldowns", "A handy hud for viewing cooldown abilities", "etc.abilitycd2", false, 100, getFontRenderer().FONT_HEIGHT * 5);
+ super("Misc", "View Ability Cooldowns", "A handy hud for viewing cooldown abilities", "etc.abilitycd2", false, 100, getFontRenderer().FONT_HEIGHT * 5);
getStyles().add(new TextStyle("abilityname", 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("number", new AColor(0x55, 0xFF,0xFF,255), new AColor(0, 0,0,0), false));
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/APIKey.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/APIKey.java
index a0f681a1..ceb4f407 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/APIKey.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/APIKey.java
@@ -31,7 +31,7 @@ import net.minecraftforge.client.event.ClientChatReceivedEvent;
public class APIKey extends SimpleFeature implements ChatListenerGlobal {
public APIKey() {
- super("Party Kicker", "API KEY", "Sets api key","partykicker.apikey");
+ super("Misc.API Features", "API KEY", "Sets api key","partykicker.apikey");
parameters.put("apikey", new FeatureParameter<String>("apikey", "API Key", "API key", "","string"));
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/customgui/FeatureCustomPartyFinder.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/customgui/FeatureCustomPartyFinder.java
index 34daadf8..40f56686 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/customgui/FeatureCustomPartyFinder.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/customgui/FeatureCustomPartyFinder.java
@@ -29,7 +29,7 @@ import net.minecraftforge.client.event.GuiOpenEvent;
public class FeatureCustomPartyFinder extends SimpleFeature implements GuiOpenListener, GuiUpdateListener {
public FeatureCustomPartyFinder() {
- super("Party Kicker","Custom Party Finder","Custom Party Finder", "party.customfinder", true);
+ super("Party","Custom Party Finder","Custom Party Finder", "party.customfinder", true);
}
GuiCustomPartyFinder guiCustomPartyFinder;
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/playerpreview/DataRendererEditor.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/playerpreview/DataRendererEditor.java
index e2ff6a17..c559775a 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/playerpreview/DataRendererEditor.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/playerpreview/DataRendererEditor.java
@@ -19,6 +19,7 @@
package kr.syeyoung.dungeonsguide.features.impl.party.playerpreview;
import kr.syeyoung.dungeonsguide.gui.MPanel;
+import kr.syeyoung.dungeonsguide.utils.RenderUtils;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.Gui;
@@ -55,7 +56,7 @@ public class DataRendererEditor extends MPanel {
@Override
public void render(int absMousex, int absMousey, int relMousex0, int relMousey0, float partialTicks, Rectangle scissor) {
- Gui.drawRect(0,0,getBounds().width, getBounds().height, 0xFF444444);
+ Gui.drawRect(0,0,getBounds().width, getBounds().height, RenderUtils.blendAlpha(0x141414, 0.12f));
FontRenderer fr = Minecraft.getMinecraft().fontRendererObj;
ScaledResolution sr = new ScaledResolution(Minecraft.getMinecraft());
@@ -67,11 +68,11 @@ public class DataRendererEditor extends MPanel {
fr.drawString("Available", (310 + baseWidth + hamburgerWidth -fr.getStringWidth("Available")) / 2, 4, 0xFFFFFFFF);
fr.drawString("Current", (baseWidth + hamburgerWidth+10 -fr.getStringWidth("Current")) /2 , 4, 0xFFFFFFFF);
Gui.drawRect(4,4 + fr.FONT_HEIGHT + 3,baseWidth + hamburgerWidth+6 + 1, 236+ fr.FONT_HEIGHT + 3, 0xFF222222);
- Gui.drawRect(5,5+ fr.FONT_HEIGHT + 3,baseWidth + hamburgerWidth + 5 + 1, 235+ fr.FONT_HEIGHT + 3, 0xFF555555);
+ Gui.drawRect(5,5+ fr.FONT_HEIGHT + 3,baseWidth + hamburgerWidth + 5 + 1, 235+ fr.FONT_HEIGHT + 3, RenderUtils.blendAlpha(0x141414, 0.15f));
Gui.drawRect(5 + hamburgerWidth,4+ fr.FONT_HEIGHT + 3,6 + hamburgerWidth, 236+ fr.FONT_HEIGHT + 3, 0xFF222222);
Gui.drawRect(154,4 + fr.FONT_HEIGHT + 3,150 + baseWidth + hamburgerWidth + 6+1, 236+ fr.FONT_HEIGHT + 3, 0xFF222222);
- Gui.drawRect(155,5+ fr.FONT_HEIGHT + 3,150 + baseWidth + hamburgerWidth + 5+1, 235+ fr.FONT_HEIGHT + 3, 0xFF555555);
+ Gui.drawRect(155,5+ fr.FONT_HEIGHT + 3,150 + baseWidth + hamburgerWidth + 5+1, 235+ fr.FONT_HEIGHT + 3, RenderUtils.blendAlpha(0x141414, 0.15f));
Gui.drawRect(155 + hamburgerWidth,4 + fr.FONT_HEIGHT + 3,156 + hamburgerWidth, 236+ fr.FONT_HEIGHT + 3, 0xFF222222);
GlStateManager.pushMatrix();
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/playerpreview/FeatureViewPlayerOnJoin.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/playerpreview/FeatureViewPlayerOnJoin.java
index 62405303..f74834e7 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/playerpreview/FeatureViewPlayerOnJoin.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/party/playerpreview/FeatureViewPlayerOnJoin.java
@@ -77,7 +77,7 @@ import java.util.concurrent.Future;
public class FeatureViewPlayerOnJoin extends SimpleFeature implements GuiPostRenderListener, ChatListener, GuiClickListener {
public FeatureViewPlayerOnJoin() {
- super("Party Kicker", "View player stats when join", "view player rendering when joining/someone joins the party", "partykicker.viewstats", true);
+ super("Party", "View player stats when join", "view player rendering when joining/someone joins the party", "partykicker.viewstats", true);
this.parameters.put("datarenderers", new FeatureParameter<List<String>>("datarenderers", "DataRenderers","Datarenderssdasd", new ArrayList<>(Arrays.asList(
"catalv", "selected_class_lv", "dungeon_catacombs_higheststat", "dungeon_master_catacombs_higheststat", "skill_combat_lv", "skill_foraging_lv", "skill_mining_lv", "fairysouls", "dummy"
)), "stringlist"));
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 d9c97ff6..5bd37c62 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
@@ -56,7 +56,7 @@ import java.util.UUID;
public class FeatureMechanicBrowse extends GuiFeature implements GuiPreRenderListener, GuiClickListener, WorldRenderListener {
public FeatureMechanicBrowse() {
- super("Dungeon Secret.Secret Pathfind","Mechanic(Secret) Browser", "Browse and Pathfind secrets and mechanics in the current room", "secret.mechanicbrowse", false, 100, 300);
+ super("Dungeon Secret.Secret Pathfind","Secret Browser", "Browse and Pathfind secrets and mechanics in the current room", "secret.mechanicbrowse", false, 100, 300);
parameters.put("linecolor2", new FeatureParameter<AColor>("linecolor2", "Color", "Color of Pathfind line", new AColor(0xFF00FF00, true), "acolor"));
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"));
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/FeatureSoulRoomWarning.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/FeatureSoulRoomWarning.java
index decfc3ba..8ce7282a 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/FeatureSoulRoomWarning.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/secret/FeatureSoulRoomWarning.java
@@ -39,7 +39,7 @@ import java.util.List;
public class FeatureSoulRoomWarning extends TextHUDFeature implements TickListener {
public FeatureSoulRoomWarning() {
- super("Secret","Secret Soul Alert", "Alert if there is an fairy soul in the room", "secret.fairysoulwarn", true, getFontRenderer().getStringWidth("There is a fairy soul in this room!"), getFontRenderer().FONT_HEIGHT);
+ super("Dungeon.Dungeon Information","Secret Soul Alert", "Alert if there is an fairy soul in the room", "secret.fairysoulwarn", true, getFontRenderer().getStringWidth("There is a fairy soul in this room!"), getFontRenderer().FONT_HEIGHT);
getStyles().add(new TextStyle("warning", new AColor(0xFF, 0x69,0x17,255), new AColor(0, 0,0,0), false));
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/text/PanelTextParameterConfig.java b/src/main/java/kr/syeyoung/dungeonsguide/features/text/PanelTextParameterConfig.java
index 904aaaee..beeff007 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/text/PanelTextParameterConfig.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/text/PanelTextParameterConfig.java
@@ -21,7 +21,10 @@ package kr.syeyoung.dungeonsguide.features.text;
import kr.syeyoung.dungeonsguide.config.types.AColor;
import kr.syeyoung.dungeonsguide.gui.MPanel;
import kr.syeyoung.dungeonsguide.gui.elements.MEditableAColor;
+import kr.syeyoung.dungeonsguide.gui.elements.MPanelScaledGUI;
+import kr.syeyoung.dungeonsguide.gui.elements.MScrollablePanel;
import kr.syeyoung.dungeonsguide.gui.elements.MToggleButton;
+import kr.syeyoung.dungeonsguide.utils.RenderUtils;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.Gui;
@@ -43,12 +46,15 @@ public class PanelTextParameterConfig extends MPanel {
private final MEditableAColor backgroundColor;
private final MToggleButton shadow;
+ private MScrollablePanel mScrollablePanel;
+ private MPanelScaledGUI rendering;
+
@Override
public void onBoundsUpdate() {
}
@Override
public Dimension getPreferredSize() {
- return new Dimension(400, 120);
+ return new Dimension(400, getPanelBound().height + 20);
}
public PanelTextParameterConfig(final StyledTextProvider feature) {
@@ -59,7 +65,6 @@ public class PanelTextParameterConfig extends MPanel {
currentColor.setColor(new AColor(0xff555555, true));
currentColor.setEnableEdit(false);
currentColor.setSize(new Dimension(15, 10));
- currentColor.setBounds(new Rectangle(275 , 14, 15, 10));
currentColor.setOnUpdate(new Runnable() {
@Override
public void run() {
@@ -72,7 +77,6 @@ public class PanelTextParameterConfig extends MPanel {
backgroundColor.setColor(new AColor(0xff555555, true));
backgroundColor.setEnableEdit(false);
backgroundColor.setSize(new Dimension(15, 10));
- backgroundColor.setBounds(new Rectangle(415 , 14, 15, 10));
backgroundColor.setOnUpdate(new Runnable() {
@Override
public void run() {
@@ -83,7 +87,6 @@ public class PanelTextParameterConfig extends MPanel {
add(backgroundColor);
shadow = new MToggleButton();
shadow.setSize(new Dimension(20, 10));
- shadow.setBounds(new Rectangle(275 , 30, 20, 10));
shadow.setOnToggle(new Runnable() {
@Override
public void run() {
@@ -93,6 +96,139 @@ public class PanelTextParameterConfig extends MPanel {
});
add(shadow);
+ mScrollablePanel = new MScrollablePanel(3);
+ mScrollablePanel.setHideScrollBarWhenNotNecessary(true);
+ add(mScrollablePanel);
+
+ mScrollablePanel.add(rendering = new MPanelScaledGUI() {
+ @Override
+ public void render(int absMousex, int absMousey, int relMousex0, int relMousey0, float partialTicks, Rectangle scissor) {
+ super.render(absMousex, absMousey, relMousex0, relMousey0, partialTicks, scissor);
+
+ List<StyledText> texts = feature.getDummyText();
+ Map<String, TextStyle> styles = feature.getStylesMap();
+ List<StyledTextRenderer.StyleTextAssociated> calc = StyledTextRenderer.drawTextWithStylesAssociated(texts, 0,0, getEffectiveDimension().width, styles, StyledTextRenderer.Alignment.LEFT);
+ boolean bool =scissor.contains(absMousex, absMousey);
+ for (StyledTextRenderer.StyleTextAssociated calc3: calc) {
+ if (selected.contains(calc3.getStyledText().getGroup())) {
+ Gui.drawRect(calc3.getRectangle().x, calc3.getRectangle().y, calc3.getRectangle().x + calc3.getRectangle().width, calc3.getRectangle().y + calc3.getRectangle().height, 0x4244A800);
+ } else if (bool && calc3.getRectangle().contains(relMousex0, relMousey0)) {
+ for (StyledTextRenderer.StyleTextAssociated calc2 : calc) {
+ if (calc2.getStyledText().getGroup().equals(calc3.getStyledText().getGroup()))
+ Gui.drawRect(calc2.getRectangle().x, calc2.getRectangle().y, calc2.getRectangle().x + calc2.getRectangle().width, calc2.getRectangle().y + calc2.getRectangle().height, 0x55777777);
+ }
+ }
+ }
+ }
+
+
+ private int lastX;
+ private int lastY;
+ private boolean dragStart = false;
+ @Override
+ public void mouseClicked(int absMouseX, int absMouseY, int relMouseX, int relMouseY, int mouseButton) {
+ List<StyledText> texts = feature.getDummyText();
+ Map<String, TextStyle> styles = feature.getStylesMap();
+ boolean existed = selected.isEmpty();
+ boolean found = false;
+ List<StyledTextRenderer.StyleTextAssociated> calc = StyledTextRenderer.calculate(texts, 0,0, styles);
+ for (StyledTextRenderer.StyleTextAssociated calc3: calc) {
+ if (calc3.getRectangle().contains(relMouseX, relMouseY)) {
+ if (Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT)) {
+ if (!selected.contains(calc3.getStyledText().getGroup()))
+ selected.add(calc3.getStyledText().getGroup());
+ else
+ selected.remove(calc3.getStyledText().getGroup());
+ } else {
+ selected.clear();
+ selected.add(calc3.getStyledText().getGroup());
+ }
+ found = true;
+ }
+ }
+
+ if (!found && !(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT)) && parent.getLastAbsClip().contains(absMouseX * getScale(), absMouseY* getScale())) {
+ selected.clear();
+ dragStart = true;
+ lastX = absMouseX;
+ lastY = absMouseY;
+ }
+ currentColor.setEnableEdit(selected.size() != 0);
+ PanelTextParameterConfig.this.backgroundColor.setEnableEdit(selected.size() != 0);
+ if (existed != selected.isEmpty()) {
+ if (selected.size() != 0) {
+ currentColor.setColor(styles.get(selected.iterator().next()).getColor());
+ PanelTextParameterConfig.this.backgroundColor.setColor(styles.get(selected.iterator().next()).getBackground());
+ shadow.setEnabled(styles.get(selected.iterator().next()).isShadow());
+ } else {
+ currentColor.setColor(new AColor(0xff555555, true));
+ PanelTextParameterConfig.this.backgroundColor.setColor(new AColor(0xff555555, true));
+ shadow.setEnabled(false);
+ }
+ }
+
+ if (selected.size() == 1) {
+ currentColor.setColor(styles.get(selected.iterator().next()).getColor());
+ PanelTextParameterConfig.this.backgroundColor.setColor(styles.get(selected.iterator().next()).getBackground());
+ shadow.setEnabled(styles.get(selected.iterator().next()).isShadow());
+ }
+ }
+
+ @Override
+ public void mouseReleased(int absMouseX, int absMouseY, int relMouseX, int relMouseY, int state) {
+ dragStart = false;
+ }
+
+ @Override
+ public void mouseClickMove(int absMouseX, int absMouseY, int relMouseX, int relMouseY, int clickedMouseButton, long timeSinceLastClick) {
+ if (dragStart) {
+ int dx= absMouseX - lastX;
+ int dy= absMouseY - lastY;
+ int actualOFFX = (int) (dx / getScale());
+ int actualOFFY = (int) (dy / getScale());
+ lastX =(int) (actualOFFX * getScale())+lastX;
+ lastY =(int) (actualOFFY * getScale())+lastY;
+ mScrollablePanel.getScrollBarX().addToCurrent(-actualOFFX);
+ mScrollablePanel.getScrollBarY().addToCurrent(-actualOFFY);
+ }
+ }
+
+ @Override
+ public Dimension getPreferredSize() {
+ List<StyledTextRenderer.StyleTextAssociated> calc = StyledTextRenderer.calculate(feature.getDummyText(), 0,0, feature.getStylesMap());
+ int w = 0, h = 0;
+ for (StyledTextRenderer.StyleTextAssociated styleTextAssociated : calc) {
+ int endX = styleTextAssociated.getRectangle().x + styleTextAssociated.getRectangle().width;
+ int endY = styleTextAssociated.getRectangle().y + styleTextAssociated.getRectangle().height;
+ if (endX > w) w = endX;
+ if (endY > h) h = endY;
+ }
+ return new Dimension((int) (w * getScale()),(int) (h * getScale()));
+ }
+
+ @Override
+ public void resize(int parentWidth, int parentHeight) {
+ setBounds(new Rectangle(new Point(0,0), getPreferredSize()));
+ }
+
+
+ @Override
+ public void mouseScrolled(int absMouseX, int absMouseY, int relMouseX0, int relMouseY0, int scrollAmount) {
+ if ( parent.getLastAbsClip().contains(absMouseX * getScale(), absMouseY* getScale())) {
+ double scale = rendering.getScale();
+ if (scrollAmount > 0) {
+ scale += 0.1;
+ } else if (scrollAmount < 0) {
+ scale -= 0.1;
+ }
+ if (scale < 0.1) scale = 0.1f;
+ if (scale > 5) scale = 5.0f;
+ rendering.setScale(scale);
+ mScrollablePanel.setBounds(new Rectangle(new Point(5,5),getPanelBound()));
+ }
+ }
+ });
+
}
@@ -103,35 +239,12 @@ public class PanelTextParameterConfig extends MPanel {
GlStateManager.pushMatrix();
- int width = 200, height = 100;
- Gui.drawRect(0,0,getBounds().width, getBounds().height, 0xFF444444);
+ Dimension dim = getPanelBound();
+ int width = dim.width, height = dim.height;
+ Gui.drawRect(0,0,getBounds().width, getBounds().height, RenderUtils.blendAlpha(0x141414, 0.12f));
Gui.drawRect(4,4,width+6, height+6, 0xFF222222);
- Gui.drawRect(5,5,width+5, height+5, 0xFF555555);
- Rectangle clip = new Rectangle(scissor.x + 5, scissor.y + 5, width, height);
- clip(clip.x, clip.y, clip.width, clip.height);
-
- GlStateManager.pushMatrix();
- GlStateManager.translate(offsetX + 5, offsetY + 5, 0);
- GlStateManager.scale(scale, scale, 0);
-
-
- List<StyledText> texts = feature.getDummyText();
- Map<String, TextStyle> styles = feature.getStylesMap();
- List<StyledTextRenderer.StyleTextAssociated> calc = StyledTextRenderer.drawTextWithStylesAssociated(texts, 0,0, getBounds().width, styles, StyledTextRenderer.Alignment.LEFT);
- boolean bool =clip.contains(absMousex, absMousey);
- for (StyledTextRenderer.StyleTextAssociated calc3: calc) {
- if (selected.contains(calc3.getStyledText().getGroup())) {
- Gui.drawRect(calc3.getRectangle().x, calc3.getRectangle().y, calc3.getRectangle().x + calc3.getRectangle().width, calc3.getRectangle().y + calc3.getRectangle().height, 0x4244A800);
- } else if (bool && calc3.getRectangle().contains((relMousex0-5 -offsetX) / scale , (relMousey0 - 5 - offsetY) / scale)) {
- for (StyledTextRenderer.StyleTextAssociated calc2 : calc) {
- if (calc2.getStyledText().getGroup().equals(calc3.getStyledText().getGroup()))
- Gui.drawRect(calc2.getRectangle().x, calc2.getRectangle().y, calc2.getRectangle().x + calc2.getRectangle().width, calc2.getRectangle().y + calc2.getRectangle().height, 0x55777777);
- }
- }
- }
- clip(scissor.x, scissor.y, scissor.width, scissor.height);
+ Gui.drawRect(5,5,width+5, height+5, RenderUtils.blendAlpha(0x141414, 0.15f));
- GlStateManager.popMatrix();
GlStateManager.translate(5, height + 7, 0);
FontRenderer fr = Minecraft.getMinecraft().fontRendererObj;
@@ -147,96 +260,25 @@ public class PanelTextParameterConfig extends MPanel {
fr.drawString("Selected Groups: "+selected, 0, 0, 0xFFBFBFBF);
GlStateManager.popMatrix();
fr.drawString("Text Color: ", 0, 10, 0xFFFFFFFF);
- fr.drawString("Background Color: ", 100, 10, 0xFFFFFFFF);
- fr.drawString("Shadow: ", 0, 26, 0xFFFFFFFF);
+ fr.drawString("Background Color: ", 0, 20, 0xFFFFFFFF);
+ fr.drawString("Shadow: ", 0, 39, 0xFFFFFFFF);
GlStateManager.popMatrix();
}
- private int offsetX = 0;
- private int offsetY = 0;
- private float scale = 1;
-
- private int lastX;
- private int lastY;
- private boolean dragStart = false;
- @Override
- public void mouseClicked(int absMouseX, int absMouseY, int relMouseX, int relMouseY, int mouseButton) {
- List<StyledText> texts = feature.getDummyText();
- Map<String, TextStyle> styles = feature.getStylesMap();
- boolean existed = selected.isEmpty();
- boolean found = false;
- List<StyledTextRenderer.StyleTextAssociated> calc = StyledTextRenderer.calculate(texts, 0,0, styles);
- for (StyledTextRenderer.StyleTextAssociated calc3: calc) {
- if (calc3.getRectangle().contains((relMouseX-5 -offsetX) / scale , (relMouseY - 5 - offsetY) / scale)) {
- if (Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT)) {
- if (!selected.contains(calc3.getStyledText().getGroup()))
- selected.add(calc3.getStyledText().getGroup());
- else
- selected.remove(calc3.getStyledText().getGroup());
- } else {
- selected.clear();
- selected.add(calc3.getStyledText().getGroup());
- }
- found = true;
- }
- }
-
- if (!found && !(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT)) && relMouseX >= 5 && relMouseX <= 205 && relMouseY >= 5 && relMouseY <= 105) {
- selected.clear();
- dragStart = true;
- lastX = absMouseX;
- lastY = absMouseY;
- }
- currentColor.setEnableEdit(selected.size() != 0);
- backgroundColor.setEnableEdit(selected.size() != 0);
- if (existed != selected.isEmpty()) {
- if (selected.size() != 0) {
- currentColor.setColor(styles.get(selected.iterator().next()).getColor());
- backgroundColor.setColor(styles.get(selected.iterator().next()).getBackground());
- shadow.setEnabled(styles.get(selected.iterator().next()).isShadow());
- } else {
- currentColor.setColor(new AColor(0xff555555, true));
- backgroundColor.setColor(new AColor(0xff555555, true));
- shadow.setEnabled(false);
- }
- }
-
- if (selected.size() == 1) {
- currentColor.setColor(styles.get(selected.iterator().next()).getColor());
- backgroundColor.setColor(styles.get(selected.iterator().next()).getBackground());
- shadow.setEnabled(styles.get(selected.iterator().next()).isShadow());
- }
- }
-
- @Override
- public void mouseReleased(int absMouseX, int absMouseY, int relMouseX, int relMouseY, int state) {
- dragStart = false;
+ private Dimension getPanelBound(){
+// return new Dimension((getBounds().width-25)/2, 100);
+ return new Dimension(150,100);
}
@Override
- public void mouseClickMove(int absMouseX, int absMouseY, int relMouseX, int relMouseY, int clickedMouseButton, long timeSinceLastClick) {
- if (dragStart) {
- offsetX += absMouseX - lastX;
- offsetY += absMouseY - lastY;
- lastX = absMouseX;
- lastY = absMouseY;
-
- if (offsetX < 0) offsetX = 0;
- if (offsetY < 0) offsetY =0;
- }
- }
+ public void setBounds(Rectangle bounds) {
+ super.setBounds(bounds);
- @Override
- public void mouseScrolled(int absMouseX, int absMouseY, int relMouseX0, int relMouseY0, int scrollAmount) {
- if ( relMouseX0 >= 5 && relMouseX0 <= 205 && relMouseY0 >= 5 && relMouseY0 <= 105) {
- if (scrollAmount > 0) {
- scale += 0.1;
- } else if (scrollAmount < 0) {
- scale -= 0.1;
- }
- if (scale < 0.1) scale = 0.1f;
- if (scale > 5) scale = 5.0f;
- }
+ Dimension dim = getPanelBound();
+ currentColor.setBounds(new Rectangle(75+dim.width , 14, 15, 10));
+ backgroundColor.setBounds(new Rectangle(110+dim.width , 24, 15, 10));
+ shadow.setBounds(new Rectangle(75+dim.width , 43, 30, 10));
+ mScrollablePanel.setBounds(new Rectangle(5,5,dim.width,dim.height));
}
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/text/TextHUDFeature.java b/src/main/java/kr/syeyoung/dungeonsguide/features/text/TextHUDFeature.java
index 0aecc0e6..bb1f2d1c 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/text/TextHUDFeature.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/text/TextHUDFeature.java
@@ -26,6 +26,8 @@ import kr.syeyoung.dungeonsguide.config.guiconfig.nyu.MParameterEdit;
import kr.syeyoung.dungeonsguide.config.guiconfig.nyu.RootConfigPanel;
import kr.syeyoung.dungeonsguide.config.guiconfig.location.GuiGuiLocationConfig;
import kr.syeyoung.dungeonsguide.config.types.AColor;
+import kr.syeyoung.dungeonsguide.config.types.TypeConverter;
+import kr.syeyoung.dungeonsguide.config.types.TypeConverterRegistry;
import kr.syeyoung.dungeonsguide.features.AbstractFeature;
import kr.syeyoung.dungeonsguide.features.FeatureParameter;
import kr.syeyoung.dungeonsguide.features.GuiFeature;
@@ -177,6 +179,11 @@ public abstract class TextHUDFeature extends GuiFeature implements StyledTextPro
}
@Override
+ public void onParameterReset() {
+ stylesMap = null;
+ }
+
+ @Override
public void loadConfig(JsonObject jsonObject) {
super.loadConfig(jsonObject);
StyledTextRenderer.Alignment alignment;
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MButton.java b/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MButton.java
index ff8061e7..6f147472 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MButton.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MButton.java
@@ -24,9 +24,11 @@ import kr.syeyoung.dungeonsguide.utils.cursor.EnumCursor;
import lombok.Getter;
import lombok.Setter;
import net.minecraft.client.Minecraft;
+import net.minecraft.client.audio.PositionedSoundRecord;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.renderer.GlStateManager;
+import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL14;
@@ -53,7 +55,8 @@ public class MButton extends MPanel {
Dimension bounds = getSize();
int bg = background;
- if (!enabled) {
+ if (getTooltipsOpen() > 0) {
+ } else if (!enabled) {
bg = disabled;
} else if (isclicked) {
bg = clicked;
@@ -80,10 +83,11 @@ public class MButton extends MPanel {
boolean isclicked = false;
@Override
public void mouseClicked(int absMouseX, int absMouseY, int relMouseX, int relMouseY, int mouseButton) {
- if (lastAbsClip.contains(absMouseX, absMouseY)) {
+ if (lastAbsClip.contains(absMouseX, absMouseY) && getTooltipsOpen() == 0) {
isclicked = true;
if (onActionPerformed != null)
onActionPerformed.run();
+ Minecraft.getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.create(new ResourceLocation("gui.button.press"), 1.0F));
}
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MModal.java b/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MModal.java
new file mode 100644
index 00000000..71a13c93
--- /dev/null
+++ b/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MModal.java
@@ -0,0 +1,87 @@
+/*
+ * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
+ * Copyright (C) 2021 cyoung06
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package kr.syeyoung.dungeonsguide.gui.elements;
+
+import kr.syeyoung.dungeonsguide.gui.MPanel;
+import kr.syeyoung.dungeonsguide.utils.RenderUtils;
+import lombok.Getter;
+import lombok.Setter;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.FontRenderer;
+import net.minecraft.client.gui.Gui;
+import net.minecraft.client.renderer.GlStateManager;
+
+import java.awt.*;
+
+public class MModal extends MTooltip {
+ private MPanel modalContent = new MPanel();
+
+ @Getter @Setter
+ private String title = "Default Title";
+
+ public MModal() {
+ super.add(modalContent);
+ }
+
+ @Override
+ public void resize(int parentWidth, int parentHeight) {
+ super.resize(parentWidth, parentHeight);
+ setBounds(new Rectangle(0,0, parentWidth, parentHeight));
+ }
+
+ @Getter @Setter
+ private Dimension modalSize = new Dimension(300,200);
+
+
+ @Override
+ public void setBounds(Rectangle bounds) {
+ super.setBounds(bounds);
+ Dimension effDim = getEffectiveDimension();
+
+ modalContent.setBounds(new Rectangle((effDim.width - modalSize.width)/2, (effDim.height - modalSize.height)/2 + 16, modalSize.width, modalSize.height-16));
+ }
+
+ @Override
+ public void render(int absMousex, int absMousey, int relMousex0, int relMousey0, float partialTicks, Rectangle scissor) {
+ RenderUtils.drawGradientRect(0, 0, bounds.width, bounds.height, -1072689136, -804253680);
+ Dimension effDim = getEffectiveDimension();
+ int x = (effDim.width-modalSize.width)/2;
+ int y = (effDim.height - modalSize.height)/2;
+ GlStateManager.translate(x,y, 0);
+ RenderUtils.drawRoundedRectangle(0,0,modalSize.width, modalSize.height, 10, Math.PI/8, RenderUtils.blendAlpha(0x141414, 0.20f));
+ Gui.drawRect(0,15, modalSize.width, 16, 0xFF02EE67);
+ Gui.drawRect(0,16,modalSize.width, 26, RenderUtils.blendAlpha(0x141414, 0.1f));
+ RenderUtils.drawRoundedRectangle(0,16,modalSize.width, modalSize.height-16, 10, Math.PI/8, RenderUtils.blendAlpha(0x141414, 0.1f));
+
+ GlStateManager.enableTexture2D();
+
+ FontRenderer fr = Minecraft.getMinecraft().fontRendererObj;
+ fr.drawString(title, 10,(16-fr.FONT_HEIGHT)/2, -1);
+ }
+
+ @Override
+ public void add(MPanel child) {
+ modalContent.add(child);
+ }
+
+ @Override
+ public void remove(MPanel panel) {
+ modalContent.remove(panel);
+ }
+}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MModalConfirmation.java b/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MModalConfirmation.java
new file mode 100644
index 00000000..238392ed
--- /dev/null
+++ b/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MModalConfirmation.java
@@ -0,0 +1,88 @@
+/*
+ * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
+ * Copyright (C) 2021 cyoung06
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package kr.syeyoung.dungeonsguide.gui.elements;
+
+import kr.syeyoung.dungeonsguide.gui.MPanel;
+import kr.syeyoung.dungeonsguide.utils.RenderUtils;
+import lombok.Getter;
+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 MModalConfirmation extends MModal {
+ private String content;
+ private Runnable callBackYes;
+ private Runnable callBackNo;
+ @Getter
+ private MButton yes, no;
+ public MModalConfirmation(String title, String content, Runnable callBackYes, Runnable callBackNo) {
+ super();
+ setTitle(title);
+ this.content = content;
+ this.callBackYes = callBackYes;
+ this.callBackNo = callBackNo;
+ this.yes = new MButton();
+ this.no = new MButton();
+ yes.setText("Yes"); no.setText("No");
+ no.setBackground(RenderUtils.blendAlpha(0x141414, 0.15f));
+ no.setHover(RenderUtils.blendAlpha(0x141414, 0.17f));
+ yes.setOnActionPerformed(() -> {
+ close();
+ if (callBackYes != null) callBackYes.run();
+ });
+ no.setOnActionPerformed(() -> {
+ close();
+ if (callBackNo != null) callBackNo.run();
+ });
+ yes.setBackground(RenderUtils.blendAlpha(0x141414, 0.15f));
+ yes.setHover(RenderUtils.blendAlpha(0x141414, 0.17f));
+
+ add(new ConfirmationContent());
+ }
+
+ public class ConfirmationContent extends MPanel {
+ public ConfirmationContent() {
+ add(yes); add(no);
+ }
+
+ @Override
+ public void resize(int parentWidth, int parentHeight) {
+ setBounds(new Rectangle(0,0,parentWidth, parentHeight));
+ System.out.println("Resized to "+parentWidth+"-"+parentHeight);
+ }
+
+ @Override
+ public void render(int absMousex, int absMousey, int relMousex0, int relMousey0, float partialTicks, Rectangle scissor) {
+ GlStateManager.translate(5,5,0);
+ FontRenderer fr = Minecraft.getMinecraft().fontRendererObj;
+ GL11.glDisable(GL11.GL_SCISSOR_TEST);
+ fr.drawSplitString(content, 0,0, ConfirmationContent.this.bounds.width-10, -1);
+ }
+
+ @Override
+ public void setBounds(Rectangle bounds) {
+ super.setBounds(bounds);
+ yes.setBounds(new Rectangle(10,bounds.height-25,(bounds.width-30)/2, 15));
+ no.setBounds(new Rectangle(yes.getBounds().x + yes.getBounds().width + 10,bounds.height-25,(bounds.width-30)/2, 15));
+ }
+ }
+}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MRootPanel.java b/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MRootPanel.java
index d1d96a35..4172acb8 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MRootPanel.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MRootPanel.java
@@ -36,6 +36,7 @@ public class MRootPanel extends MPanel {
public void openTooltip(MTooltip mPanel) {
mPanel.setRoot(this);
tooltips.add(mPanel);
+ mPanel.resize(getBounds().width, getBounds().height);
add(mPanel);
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MTextField.java b/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MTextField.java
index b61837a4..827dc3e8 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MTextField.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MTextField.java
@@ -125,7 +125,7 @@ public class MTextField extends MPanel {
Rectangle actualField = new Rectangle(1, 3,getBounds().width - 2, getBounds().height - 6);
if (!actualField.contains(relMouseX, relMouseY)) return;
if (!lastAbsClip.contains(absMouseX, absMouseY)) return;
-
+ if (getTooltipsOpen() > 0) return;
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MToggleButton.java b/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MToggleButton.java
index 5709906f..3c223d84 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MToggleButton.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/gui/elements/MToggleButton.java
@@ -24,9 +24,11 @@ import kr.syeyoung.dungeonsguide.utils.cursor.EnumCursor;
import lombok.Getter;
import lombok.Setter;
import net.minecraft.client.Minecraft;
+import net.minecraft.client.audio.PositionedSoundRecord;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.renderer.GlStateManager;
+import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL14;
@@ -74,8 +76,9 @@ public class MToggleButton extends MPanel {
@Override
public void mouseClicked(int absMouseX, int absMouseY, int relMouseX, int relMouseY, int mouseButton) {
- if (onToggle != null && lastAbsClip.contains(absMouseX, absMouseY)) {
+ if (onToggle != null && lastAbsClip.contains(absMouseX, absMouseY) && getTooltipsOpen() == 0) {
enabled = !enabled;
+ Minecraft.getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.create(new ResourceLocation("gui.button.press"), 1.0F));
onToggle.run();
}
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/utils/RenderUtils.java b/src/main/java/kr/syeyoung/dungeonsguide/utils/RenderUtils.java
index e9518d64..685b8489 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/utils/RenderUtils.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/utils/RenderUtils.java
@@ -55,6 +55,35 @@ public class RenderUtils {
public static boolean allowScrolling;
public static int scrollX = 0;
+ public static void drawGradientRect(int left, int top, int right, int bottom, int startColor, int endColor)
+ {
+ float f = (float)(startColor >> 24 & 255) / 255.0F;
+ float f1 = (float)(startColor >> 16 & 255) / 255.0F;
+ float f2 = (float)(startColor >> 8 & 255) / 255.0F;
+ float f3 = (float)(startColor & 255) / 255.0F;
+ float f4 = (float)(endColor >> 24 & 255) / 255.0F;
+ float f5 = (float)(endColor >> 16 & 255) / 255.0F;
+ float f6 = (float)(endColor >> 8 & 255) / 255.0F;
+ float f7 = (float)(endColor & 255) / 255.0F;
+ GlStateManager.disableTexture2D();
+ GlStateManager.enableBlend();
+ GlStateManager.disableAlpha();
+ GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
+ GlStateManager.shadeModel(7425);
+ Tessellator tessellator = Tessellator.getInstance();
+ WorldRenderer worldrenderer = tessellator.getWorldRenderer();
+ worldrenderer.begin(7, DefaultVertexFormats.POSITION_COLOR);
+ worldrenderer.pos((double)right, (double)top, (double)0).color(f1, f2, f3, f).endVertex();
+ worldrenderer.pos((double)left, (double)top, (double)0).color(f1, f2, f3, f).endVertex();
+ worldrenderer.pos((double)left, (double)bottom, (double)0).color(f5, f6, f7, f4).endVertex();
+ worldrenderer.pos((double)right, (double)bottom, (double)0).color(f5, f6, f7, f4).endVertex();
+ tessellator.draw();
+ GlStateManager.shadeModel(7424);
+ GlStateManager.disableBlend();
+ GlStateManager.enableAlpha();
+ GlStateManager.enableTexture2D();
+ }
+
public static void drawRect(int left, int top, int right, int bottom, AColor color)
{
if (left < right)