aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt6
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/Bingo.java9
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/bingo/BingoCardTips.kt79
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/jsonobjects/BingoJson.java18
4 files changed, 108 insertions, 4 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt b/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt
index 162e62e2f..02997ea82 100644
--- a/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt
+++ b/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt
@@ -11,10 +11,7 @@ import at.hannibal2.skyhanni.features.bazaar.BazaarApi
import at.hannibal2.skyhanni.features.bazaar.BazaarBestSellMethod
import at.hannibal2.skyhanni.features.bazaar.BazaarCancelledBuyOrderClipboard
import at.hannibal2.skyhanni.features.bazaar.BazaarOrderHelper
-import at.hannibal2.skyhanni.features.bingo.BingoCardDisplay
-import at.hannibal2.skyhanni.features.bingo.BingoNextStepHelper
-import at.hannibal2.skyhanni.features.bingo.CompactBingoChat
-import at.hannibal2.skyhanni.features.bingo.MinionCraftHelper
+import at.hannibal2.skyhanni.features.bingo.*
import at.hannibal2.skyhanni.features.chat.ChatFilter
import at.hannibal2.skyhanni.features.chat.PlayerDeathMessages
import at.hannibal2.skyhanni.features.chat.playerchat.PlayerChatFilter
@@ -270,6 +267,7 @@ class SkyHanniMod {
loadModule(InquisitorWaypointShare)
loadModule(TrevorFeatures())
loadModule(TrevorSolver)
+ loadModule(BingoCardTips())
init()
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/Bingo.java b/src/main/java/at/hannibal2/skyhanni/config/features/Bingo.java
index 4e973d7f7..c70346516 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/features/Bingo.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/Bingo.java
@@ -32,6 +32,15 @@ public class Bingo {
public Property<Boolean> hideCommunityGoals = Property.of(false);
@Expose
+ @ConfigOption(
+ name = "Show Guide",
+ desc = "Show tips and difficulty for bingo goals inside the bingo card inventory. " +
+ "§7(§ePowdered by Bingo Splash Community§7)"
+ )
+ @ConfigEditorBoolean
+ public boolean bingoSplashGuide = true;
+
+ @Expose
public Position bingoCardPos = new Position(10, 10, false, true);
}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/bingo/BingoCardTips.kt b/src/main/java/at/hannibal2/skyhanni/features/bingo/BingoCardTips.kt
new file mode 100644
index 000000000..769872409
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/features/bingo/BingoCardTips.kt
@@ -0,0 +1,79 @@
+package at.hannibal2.skyhanni.features.bingo
+
+import at.hannibal2.skyhanni.SkyHanniMod
+import at.hannibal2.skyhanni.events.GuiContainerEvent
+import at.hannibal2.skyhanni.events.RepositoryReloadEvent
+import at.hannibal2.skyhanni.utils.InventoryUtils
+import at.hannibal2.skyhanni.utils.ItemUtils.name
+import at.hannibal2.skyhanni.utils.LorenzColor
+import at.hannibal2.skyhanni.utils.LorenzUtils
+import at.hannibal2.skyhanni.utils.RenderUtils.highlight
+import at.hannibal2.skyhanni.utils.StringUtils.removeColor
+import at.hannibal2.skyhanni.utils.jsonobjects.BingoJson
+import at.hannibal2.skyhanni.utils.jsonobjects.BingoJson.BingoTip
+import net.minecraft.inventory.ContainerChest
+import net.minecraftforge.event.entity.player.ItemTooltipEvent
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
+
+class BingoCardTips {
+ private var tips: Map<String, BingoTip> = emptyMap()
+
+ @SubscribeEvent
+ fun onRepoReload(event: RepositoryReloadEvent) {
+ event.getConstant<BingoJson>("Bingo")?.let {
+ tips = it.bingo_tips
+ }
+ }
+
+ @SubscribeEvent
+ fun onItemTooltipLow(event: ItemTooltipEvent) {
+ if (!isEnabled()) return
+ if (InventoryUtils.openInventoryName() != "Bingo Card") return
+
+ val itemName = event.itemStack?.name ?: return
+ tips[itemName.removeColor()]?.let {
+ val difficulty = Difficulty.valueOf(it.difficulty.uppercase())
+ event.toolTip[0] = event.toolTip[0] + " §7(" + difficulty.displayName + "§7)"
+
+ var index = event.toolTip.indexOf("§5§o§7Reward") - 1
+ event.toolTip.add(index++, "")
+ event.toolTip.add(index++, "§eGuide:")
+ for (line in it.note) {
+ event.toolTip.add(index++, line)
+ }
+ }
+ }
+
+ @SubscribeEvent
+ fun onBackgroundDrawn(event: GuiContainerEvent.BackgroundDrawnEvent) {
+ if (!isEnabled()) return
+ if (InventoryUtils.openInventoryName() != "Bingo Card") return
+
+ val guiChest = event.gui
+ val chest = guiChest.inventorySlots as ContainerChest
+
+ for (slot in chest.inventorySlots) {
+ if (slot == null) continue
+ if (slot.slotNumber != slot.slotIndex) continue
+ if (slot.stack == null) continue
+
+ val itemName = slot.stack.name ?: continue
+
+ tips[itemName.removeColor()]?.let {
+ val difficulty = Difficulty.valueOf(it.difficulty.uppercase())
+ slot highlight difficulty.color.addOpacity(120)
+ }
+ }
+ }
+
+ fun isEnabled() = LorenzUtils.inSkyBlock && SkyHanniMod.feature.bingo.bingoCard.bingoSplashGuide
+
+ enum class Difficulty(rawName: String, val color: LorenzColor) {
+ EASY("Easy", LorenzColor.GREEN),
+ MEDIUM("Medium", LorenzColor.YELLOW),
+ HARD("Hard", LorenzColor.RED),
+ ;
+
+ val displayName = color.getChatColor() + rawName
+ }
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/jsonobjects/BingoJson.java b/src/main/java/at/hannibal2/skyhanni/utils/jsonobjects/BingoJson.java
new file mode 100644
index 000000000..472993c46
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/utils/jsonobjects/BingoJson.java
@@ -0,0 +1,18 @@
+package at.hannibal2.skyhanni.utils.jsonobjects;
+
+import com.google.gson.annotations.Expose;
+
+import java.util.List;
+import java.util.Map;
+
+public class BingoJson {
+ @Expose
+ public Map<String, BingoTip> bingo_tips;
+
+ public static class BingoTip {
+ @Expose
+ public String difficulty;
+ @Expose
+ public List<String> note;
+ }
+}