summaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorJ10a1n15 <45315647+j10a1n15@users.noreply.github.com>2024-03-12 19:59:55 +0100
committerGitHub <noreply@github.com>2024-03-12 19:59:55 +0100
commit4352ffb08d4bfffc06adad2a068f375ab9874333 (patch)
treeb8ce745fca8ab82ffa04f6ab87334139a6b7192b /src/main/java
parenteb863d60e82b5541a9f42d2608f61cb97ada209b (diff)
downloadskyhanni-4352ffb08d4bfffc06adad2a068f375ab9874333.tar.gz
skyhanni-4352ffb08d4bfffc06adad2a068f375ab9874333.tar.bz2
skyhanni-4352ffb08d4bfffc06adad2a068f375ab9874333.zip
Feature: CustomScoreboard (#893)
Co-authored-by: Thunderblade73 <85900443+Thunderblade73@users.noreply.github.com> Co-authored-by: Thunderblade73 <gaidermarkus@gmail.com> Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com>
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt16
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/Storage.java37
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/core/config/gui/GuiPositionEditor.kt2
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/dev/DevConfig.java5
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/gui/GUIConfig.java6
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/gui/customscoreboard/AlignmentConfig.java20
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/gui/customscoreboard/BackgroundConfig.java66
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/gui/customscoreboard/CustomScoreboardConfig.java65
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/gui/customscoreboard/DisplayConfig.java96
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/gui/customscoreboard/InformationFilteringConfig.java23
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/gui/customscoreboard/MayorConfig.java17
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/gui/customscoreboard/PartyConfig.java23
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/gui/customscoreboard/TitleAndFooterConfig.java32
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/misc/MiscConfig.java2
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/ArrowType.kt9
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/BitsAPI.kt200
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/FameRanks.kt26
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/GuiEditManager.kt15
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/HypixelData.kt3
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/MaxwellAPI.kt152
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/MayorAPI.kt121
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/MayorElection.kt79
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/Mayors.kt105
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/PartyAPI.kt4
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/PurseAPI.kt14
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/QuiverAPI.kt256
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/ScoreboardData.kt18
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/SlayerAPI.kt2
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/ArrowTypeJson.java14
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/FameRankJson.java24
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/ItemsJson.java3
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/MaxwellPowersJson.java10
-rw-r--r--src/main/java/at/hannibal2/skyhanni/events/GuiPositionMovedEvent.kt3
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/bingo/BingoAPI.kt2
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/event/diana/DianaAPI.kt6
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/garden/contest/FarmingContestAPI.kt2
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/garden/farming/GardenCropSpeed.kt4
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/CustomScoreboard.kt130
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/CustomScoreboardUtils.kt53
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/RenderBackground.kt87
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/ScoreboardElements.kt635
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/ScoreboardEvents.kt498
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/ScoreboardPattern.kt404
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/gui/customscoreboard/UnknownLinesHandler.kt156
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/inventory/MaxPurseItems.kt4
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/minion/MinionXp.kt4
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/misc/ServerRestartTitle.kt21
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/misc/compacttablist/TabListReader.kt4
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/misc/compacttablist/TabListRenderer.kt4
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/rift/area/stillgorechateau/RiftBloodEffigies.kt23
-rw-r--r--src/main/java/at/hannibal2/skyhanni/mixins/hooks/GuiIngameHook.kt9
-rw-r--r--src/main/java/at/hannibal2/skyhanni/test/DebugCommand.kt4
-rw-r--r--src/main/java/at/hannibal2/skyhanni/test/SkyHanniDebugsAndTests.kt2
-rw-r--r--src/main/java/at/hannibal2/skyhanni/test/command/ErrorManager.kt3
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/CollectionUtils.kt27
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt6
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/NumberUtil.kt12
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/RenderUtils.kt61
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/SimpleTimeMark.kt2
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/TabListData.kt7
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/TimeUtils.kt34
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/shader/ShaderManager.kt6
62 files changed, 3524 insertions, 154 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt b/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt
index 6c05aadbd..d7d68ba78 100644
--- a/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt
+++ b/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt
@@ -11,12 +11,14 @@ import at.hannibal2.skyhanni.config.SackData
import at.hannibal2.skyhanni.config.commands.Commands.init
import at.hannibal2.skyhanni.data.ActionBarData
import at.hannibal2.skyhanni.data.ActionBarStatsData
+import at.hannibal2.skyhanni.data.BitsAPI
import at.hannibal2.skyhanni.data.BlockData
import at.hannibal2.skyhanni.data.BossbarData
import at.hannibal2.skyhanni.data.ChatManager
import at.hannibal2.skyhanni.data.CropAccessoryData
import at.hannibal2.skyhanni.data.EntityData
import at.hannibal2.skyhanni.data.EntityMovementData
+import at.hannibal2.skyhanni.data.FameRanks
import at.hannibal2.skyhanni.data.FriendAPI
import at.hannibal2.skyhanni.data.GardenComposterUpgradesData
import at.hannibal2.skyhanni.data.GardenCropMilestones
@@ -30,7 +32,8 @@ import at.hannibal2.skyhanni.data.ItemClickData
import at.hannibal2.skyhanni.data.ItemRenderBackground
import at.hannibal2.skyhanni.data.ItemTipHelper
import at.hannibal2.skyhanni.data.LocationFixData
-import at.hannibal2.skyhanni.data.MayorElection
+import at.hannibal2.skyhanni.data.MaxwellAPI
+import at.hannibal2.skyhanni.data.MayorAPI
import at.hannibal2.skyhanni.data.MinecraftData
import at.hannibal2.skyhanni.data.OtherInventoryData
import at.hannibal2.skyhanni.data.OwnInventoryData
@@ -38,6 +41,7 @@ import at.hannibal2.skyhanni.data.PartyAPI
import at.hannibal2.skyhanni.data.PetAPI
import at.hannibal2.skyhanni.data.ProfileStorageData
import at.hannibal2.skyhanni.data.PurseAPI
+import at.hannibal2.skyhanni.data.QuiverAPI
import at.hannibal2.skyhanni.data.RenderData
import at.hannibal2.skyhanni.data.SackAPI
import at.hannibal2.skyhanni.data.ScoreboardData
@@ -284,6 +288,8 @@ import at.hannibal2.skyhanni.features.misc.TpsCounter
import at.hannibal2.skyhanni.features.misc.compacttablist.AdvancedPlayerList
import at.hannibal2.skyhanni.features.misc.compacttablist.TabListReader
import at.hannibal2.skyhanni.features.misc.compacttablist.TabListRenderer
+import at.hannibal2.skyhanni.features.gui.customscoreboard.CustomScoreboard
+import at.hannibal2.skyhanni.features.gui.customscoreboard.ScoreboardPattern
import at.hannibal2.skyhanni.features.misc.discordrpc.DiscordRPCManager
import at.hannibal2.skyhanni.features.misc.items.AuctionHouseCopyUnderbidPrice
import at.hannibal2.skyhanni.features.misc.items.EstimatedItemValue
@@ -445,7 +451,6 @@ class SkyHanniMod {
loadModule(GetFromSackAPI)
loadModule(UpdateManager)
loadModule(CropAccessoryData())
- loadModule(MayorElection())
loadModule(GardenComposterUpgradesData())
loadModule(ActionBarStatsData)
loadModule(GardenCropMilestoneInventory())
@@ -464,6 +469,7 @@ class SkyHanniMod {
loadModule(GardenBestCropTime())
loadModule(ActionBarData)
loadModule(TrackerManager)
+ loadModule(ScoreboardPattern)
loadModule(UtilsPatterns)
loadModule(PetAPI)
loadModule(BossbarData)
@@ -485,7 +491,12 @@ class SkyHanniMod {
loadModule(RiftAPI)
loadModule(SackAPI)
loadModule(BingoAPI)
+ loadModule(FameRanks)
loadModule(FishingAPI)
+ loadModule(MaxwellAPI)
+ loadModule(QuiverAPI)
+ loadModule(BitsAPI)
+ loadModule(MayorAPI)
loadModule(SkillAPI)
loadModule(IsFishingDetection)
loadModule(LorenzUtils)
@@ -748,6 +759,7 @@ class SkyHanniMod {
loadModule(DungeonFinderFeatures())
loadModule(PabloHelper())
loadModule(FishingBaitWarnings())
+ loadModule(CustomScoreboard())
loadModule(RepoPatternManager)
loadModule(PestSpawn())
loadModule(PestSpawnTimer)
diff --git a/src/main/java/at/hannibal2/skyhanni/config/Storage.java b/src/main/java/at/hannibal2/skyhanni/config/Storage.java
index 597d3a7eb..95286550c 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/Storage.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/Storage.java
@@ -1,5 +1,6 @@
package at.hannibal2.skyhanni.config;
+import at.hannibal2.skyhanni.data.FameRank;
import at.hannibal2.skyhanni.api.SkillAPI;
import at.hannibal2.skyhanni.data.model.ComposterUpgrade;
import at.hannibal2.skyhanni.features.bingo.card.goals.BingoGoal;
@@ -78,6 +79,9 @@ public class Storage {
@Expose
public Map<UUID, PlayerSpecific> players = new HashMap<>();
+ @Expose
+ public String currentFameRank = null;
+
public static class PlayerSpecific {
@Expose
@@ -147,6 +151,39 @@ public class Storage {
public String currentPet = "";
@Expose
+ public MaxwellPowerStorage maxwell = new MaxwellPowerStorage();
+
+ public static class MaxwellPowerStorage {
+ @Expose
+ public String currentPower = null;
+
+ @Expose
+ public int magicalPower = -1;
+ }
+
+ @Expose
+ public ArrowsStorage arrows = new ArrowsStorage();
+
+ public static class ArrowsStorage {
+ @Expose
+ public String currentArrow = null;
+
+ @Expose
+ public Map<NEUInternalName, Float> arrowAmount = new HashMap<>();
+ }
+
+ @Expose
+ public BitsStorage bits = new BitsStorage();
+
+ public static class BitsStorage {
+ @Expose
+ public int bits = -1;
+
+ @Expose
+ public int bitsToClaim = -1;
+ }
+
+ @Expose
public Map<LorenzVec, MinionConfig> minions = new HashMap<>();
public static class MinionConfig {
diff --git a/src/main/java/at/hannibal2/skyhanni/config/core/config/gui/GuiPositionEditor.kt b/src/main/java/at/hannibal2/skyhanni/config/core/config/gui/GuiPositionEditor.kt
index f6765ca2b..88264e994 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/core/config/gui/GuiPositionEditor.kt
+++ b/src/main/java/at/hannibal2/skyhanni/config/core/config/gui/GuiPositionEditor.kt
@@ -19,6 +19,7 @@
package at.hannibal2.skyhanni.config.core.config.gui
import at.hannibal2.skyhanni.config.core.config.Position
+import at.hannibal2.skyhanni.data.GuiEditManager
import at.hannibal2.skyhanni.data.GuiEditManager.Companion.getAbsX
import at.hannibal2.skyhanni.data.GuiEditManager.Companion.getAbsY
import at.hannibal2.skyhanni.data.GuiEditManager.Companion.getDummySize
@@ -216,6 +217,7 @@ class GuiPositionEditor(private val positions: List<Position>, private val borde
val elementHeight = position.getDummySize(true).y
grabbedX += position.moveX(mouseX - grabbedX, elementWidth)
grabbedY += position.moveY(mouseY - grabbedY, elementHeight)
+ GuiEditManager.handleGuiPositionMoved(position.internalName)
}
}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/dev/DevConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/dev/DevConfig.java
index 89170c027..3b5200c39 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/features/dev/DevConfig.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/dev/DevConfig.java
@@ -44,6 +44,11 @@ public class DevConfig {
@ConfigEditorBoolean
public boolean worldEdit = false;
+ @Expose
+ @ConfigOption(name = "Bow Sound distance", desc = "The distance in blocks where the sound of shooting a bow will be used for the QuiverAPI.")
+ @ConfigEditorSlider(minValue = 0, maxValue = 50, minStep = 1)
+ public int bowSoundDistance = 5;
+
@ConfigOption(name = "Parkour Waypoints", desc = "")
@Accordion
@Expose
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/gui/GUIConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/gui/GUIConfig.java
index 4eeadf221..10b6cdde1 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/features/gui/GUIConfig.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/gui/GUIConfig.java
@@ -2,9 +2,11 @@ package at.hannibal2.skyhanni.config.features.gui;
import at.hannibal2.skyhanni.config.FeatureToggle;
import at.hannibal2.skyhanni.config.core.config.Position;
+import at.hannibal2.skyhanni.config.features.gui.customscoreboard.CustomScoreboardConfig;
import at.hannibal2.skyhanni.data.GuiEditManager;
import com.google.gson.annotations.Expose;
import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.Category;
import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
import io.github.moulberry.moulconfig.annotations.ConfigEditorButton;
import io.github.moulberry.moulconfig.annotations.ConfigEditorKeybind;
@@ -29,6 +31,10 @@ public class GUIConfig {
public float globalScale = 1F;
@Expose
+ @Category(name = "Custom Scoreboard", desc = "Custom Scoreboard Settings")
+ public CustomScoreboardConfig customScoreboard = new CustomScoreboardConfig();
+
+ @Expose
@ConfigOption(name = "Modify Visual Words", desc = "")
@Accordion
public ModifyWordsConfig modifyWords = new ModifyWordsConfig();
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/gui/customscoreboard/AlignmentConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/gui/customscoreboard/AlignmentConfig.java
new file mode 100644
index 000000000..a5a8170f3
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/gui/customscoreboard/AlignmentConfig.java
@@ -0,0 +1,20 @@
+package at.hannibal2.skyhanni.config.features.gui.customscoreboard;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class AlignmentConfig {
+ // TODO: Switch to Dropdowns with multiple different alignment ways in the future
+ // Horizontal: Left, Center, Right
+ // Vertical: Top, Center, Bottom
+ @Expose
+ @ConfigOption(name = "Align to the right", desc = "Align the scoreboard to the right side of the screen.")
+ @ConfigEditorBoolean
+ public boolean alignRight = true;
+
+ @Expose
+ @ConfigOption(name = "Align to the center vertically", desc = "Align the scoreboard to the center of the screen vertically.")
+ @ConfigEditorBoolean
+ public boolean alignCenterVertically = true;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/gui/customscoreboard/BackgroundConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/gui/customscoreboard/BackgroundConfig.java
new file mode 100644
index 000000000..3b4924511
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/gui/customscoreboard/BackgroundConfig.java
@@ -0,0 +1,66 @@
+package at.hannibal2.skyhanni.config.features.gui.customscoreboard;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorInfoText;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class BackgroundConfig {
+ @Expose
+ @ConfigOption(
+ name = "Enabled",
+ desc = "Show a background behind the scoreboard."
+ )
+ @ConfigEditorBoolean
+ public boolean enabled = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Background Color",
+ desc = "The color of the background."
+ )
+ @ConfigEditorColour
+ public String color = "0:102:0:0:0";
+
+ @Expose
+ @ConfigOption(
+ name = "Background Border Size",
+ desc = "The size of the border around the background."
+ )
+ @ConfigEditorSlider(
+ minValue = 0,
+ maxValue = 20,
+ minStep = 1
+ )
+ public int borderSize = 5;
+
+ @Expose
+ @ConfigOption(
+ name = "Rounded Corner Smoothness",
+ desc = "The smoothness of the rounded corners."
+ )
+ @ConfigEditorSlider(
+ minValue = 0,
+ maxValue = 30,
+ minStep = 1
+ )
+ public int roundedCornerSmoothness = 10;
+
+ @Expose
+ @ConfigOption(
+ name = "Use Custom Background Image",
+ desc = "Put that image into a resource pack, using the path \"skyhanni/scoreboard.png\"."
+ )
+ @ConfigEditorBoolean
+ public boolean useCustomBackgroundImage = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Custom Background",
+ desc = "Add an image named \"scoreboard.png\" to your texture pack at \"\\assets\\skyhanni\\scoreboard.png.\" Activate the texture pack in Minecraft, then reload the game."
+ )
+ @ConfigEditorInfoText
+ public String useless;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/gui/customscoreboard/CustomScoreboardConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/gui/customscoreboard/CustomScoreboardConfig.java
new file mode 100644
index 000000000..4941caf5c
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/gui/customscoreboard/CustomScoreboardConfig.java
@@ -0,0 +1,65 @@
+package at.hannibal2.skyhanni.config.features.gui.customscoreboard;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import at.hannibal2.skyhanni.features.gui.customscoreboard.ScoreboardElement;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDraggableList;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class CustomScoreboardConfig {
+ @Expose
+ @ConfigOption(
+ name = "Enabled",
+ desc = "Show a custom scoreboard instead of the vanilla one."
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Appearance",
+ desc = "Drag text to change the appearance of the advanced scoreboard." // supporting both custom & advanced search
+ )
+ @ConfigEditorDraggableList()
+ public List<ScoreboardElement> scoreboardEntries = new ArrayList<>(ScoreboardElement.getEntries());
+
+ @Expose
+ @ConfigOption(name = "Display Options", desc = "")
+ @Accordion
+ public DisplayConfig displayConfig = new DisplayConfig();
+
+ @Expose
+ @ConfigOption(name = "Information Filtering", de