aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/skyblock/crimson/kuudra/ArrowPoisonWarning.java
blob: 7c3c634a0b84ff1c3a118f957b450ba897111589 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package de.hysky.skyblocker.skyblock.crimson.kuudra;

import java.util.function.Supplier;

import de.hysky.skyblocker.config.SkyblockerConfig;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.config.configs.CrimsonIsleConfig;
import de.hysky.skyblocker.skyblock.crimson.kuudra.Kuudra.KuudraPhase;
import de.hysky.skyblocker.utils.ItemUtils;
import de.hysky.skyblocker.utils.Utils;
import de.hysky.skyblocker.utils.render.RenderHelper;
import de.hysky.skyblocker.utils.render.title.Title;
import net.minecraft.client.MinecraftClient;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.item.BowItem;
import net.minecraft.item.ItemStack;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;

public class ArrowPoisonWarning {
	private static final Supplier<CrimsonIsleConfig.Kuudra> CONFIG = () -> SkyblockerConfigManager.get().crimsonIsle.kuudra;
	private static final int THREE_SECONDS = 20 * 3;
	private static final Title NONE_TITLE = new Title(Text.translatable("skyblocker.crimson.kuudra.noArrowPoison").formatted(Formatting.GREEN));
	private static final Title LOW_TITLE = new Title(Text.translatable("skyblocker.crimson.kuudra.lowArrowPoison").formatted(Formatting.GREEN));

	public static void tryWarn(int newSlot) {
		//Exclude skyblock menu
		if (Utils.isInKuudra() && CONFIG.get().noArrowPoisonWarning && Kuudra.phase == KuudraPhase.DPS && newSlot != 8) {
			MinecraftClient client = MinecraftClient.getInstance();
			PlayerInventory inventory = client.player.getInventory();
			ItemStack heldItem = inventory.getStack(newSlot);

			if (heldItem.getItem() instanceof BowItem) {
				boolean hasToxicArrowPoison = false;
				int arrowPoisonAmount = 0;

				for (int i = 0; i < inventory.size(); ++i) {
					ItemStack stack = inventory.getStack(i);
					String itemId = ItemUtils.getItemId(stack);

					if (itemId.equals("TOXIC_ARROW_POISON")) {
						hasToxicArrowPoison = true;
						arrowPoisonAmount += stack.getCount();
					}
				}

				if (!hasToxicArrowPoison) {
					RenderHelper.displayInTitleContainerAndPlaySound(NONE_TITLE, THREE_SECONDS);
				} else if (arrowPoisonAmount < CONFIG.get().arrowPoisonThreshold) {
					RenderHelper.displayInTitleContainerAndPlaySound(LOW_TITLE, THREE_SECONDS);
				}
			}
		}
	}
}