aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorAaron <51387595+AzureAaron@users.noreply.github.com>2024-12-22 04:50:46 -0500
committerGitHub <noreply@github.com>2024-12-22 04:50:46 -0500
commitf9a6f61985ce5441b1e749a1296912c6a21e8a5f (patch)
tree914376103bed51f38afc806a9f9a47873d0183cd /src/main/java
parentce458037a13a6c1a42e772e275ac155efe577c17 (diff)
downloadSkyblocker-f9a6f61985ce5441b1e749a1296912c6a21e8a5f.tar.gz
Skyblocker-f9a6f61985ce5441b1e749a1296912c6a21e8a5f.tar.bz2
Skyblocker-f9a6f61985ce5441b1e749a1296912c6a21e8a5f.zip
Consumable Protection (#1090)
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java8
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/GeneralConfig.java3
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/ConsumableProtection.java38
3 files changed, 49 insertions, 0 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java
index f7b0fead..b041a9fe 100644
--- a/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java
+++ b/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java
@@ -323,6 +323,14 @@ public class GeneralCategory {
newValue -> config.general.itemProtection.slotLockStyle = newValue)
.controller(ConfigUtils::createEnumCyclingListController)
.build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.general.itemProtection.protectValuableConsumables"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.general.itemProtection.protectValuableConsumables.@Tooltip")))
+ .binding(defaults.general.itemProtection.protectValuableConsumables,
+ () -> config.general.itemProtection.protectValuableConsumables,
+ newValue -> config.general.itemProtection.protectValuableConsumables = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
.build())
//Wiki Lookup
diff --git a/src/main/java/de/hysky/skyblocker/config/configs/GeneralConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/GeneralConfig.java
index f2396284..912dd769 100644
--- a/src/main/java/de/hysky/skyblocker/config/configs/GeneralConfig.java
+++ b/src/main/java/de/hysky/skyblocker/config/configs/GeneralConfig.java
@@ -212,6 +212,9 @@ public class GeneralConfig {
public static class ItemProtection {
@SerialEntry
public SlotLockStyle slotLockStyle = SlotLockStyle.FANCY;
+
+ @SerialEntry
+ public boolean protectValuableConsumables = true;
}
public enum SlotLockStyle {
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/ConsumableProtection.java b/src/main/java/de/hysky/skyblocker/skyblock/item/ConsumableProtection.java
new file mode 100644
index 00000000..ce4e1514
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/ConsumableProtection.java
@@ -0,0 +1,38 @@
+package de.hysky.skyblocker.skyblock.item;
+
+import java.util.Set;
+
+import de.hysky.skyblocker.annotations.Init;
+import de.hysky.skyblocker.config.SkyblockerConfigManager;
+import de.hysky.skyblocker.utils.Utils;
+import net.fabricmc.fabric.api.event.player.UseBlockCallback;
+import net.fabricmc.fabric.api.event.player.UseItemCallback;
+import net.minecraft.entity.player.PlayerEntity;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.ActionResult;
+import net.minecraft.util.Hand;
+import net.minecraft.world.World;
+
+public class ConsumableProtection {
+ private static final Set<String> PROTECTED_CONSUMABLES = Set.of("NEW_BOTTLE_OF_JYRRE", "DARK_CACAO_TRUFFLE", "DISCRITE");
+
+ @Init
+ public static void init() {
+ UseItemCallback.EVENT.register(ConsumableProtection::onInteract);
+ //Prevents placing the items when they are player heads (counts for consuming them)
+ UseBlockCallback.EVENT.register((player, world, hand, hitResult) -> onInteract(player, world, hand));
+ }
+
+ private static ActionResult onInteract(PlayerEntity player, World world, Hand hand) {
+ if (world.isClient() && SkyblockerConfigManager.get().general.itemProtection.protectValuableConsumables && Utils.isOnSkyblock()) {
+ ItemStack stack = player.getStackInHand(hand);
+ String skyblockId = stack.getSkyblockId();
+
+ if (!skyblockId.isEmpty() && PROTECTED_CONSUMABLES.contains(skyblockId)) {
+ return ActionResult.FAIL;
+ }
+ }
+
+ return ActionResult.PASS;
+ }
+}