aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorAaron <51387595+AzureAaron@users.noreply.github.com>2024-08-24 03:12:49 -0400
committerGitHub <noreply@github.com>2024-08-24 15:12:49 +0800
commitbe406952913c8440ae6061beea82c5a76ef58504 (patch)
treeac6decccd5ac1bb1822c68b38fcd06314efad9b9 /src/main/java
parent186763f6870fa2bf78512171dabaed70430b97e7 (diff)
downloadSkyblocker-be406952913c8440ae6061beea82c5a76ef58504.tar.gz
Skyblocker-be406952913c8440ae6061beea82c5a76ef58504.tar.bz2
Skyblocker-be406952913c8440ae6061beea82c5a76ef58504.zip
Slot Text and Item Protection support for the PV (#954)
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/de/hysky/skyblocker/mixins/InGameHudMixin.java5
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/ItemProtection.java5
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextManager.java8
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/BackpackPreview.java3
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/profileviewer/inventory/Inventory.java23
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/profileviewer/inventory/PlayerInventory.java23
6 files changed, 48 insertions, 19 deletions
diff --git a/src/main/java/de/hysky/skyblocker/mixins/InGameHudMixin.java b/src/main/java/de/hysky/skyblocker/mixins/InGameHudMixin.java
index fffd74f9..5dfc3922 100644
--- a/src/main/java/de/hysky/skyblocker/mixins/InGameHudMixin.java
+++ b/src/main/java/de/hysky/skyblocker/mixins/InGameHudMixin.java
@@ -41,9 +41,6 @@ import java.util.regex.Pattern;
public abstract class InGameHudMixin {
@Unique
private static final Supplier<Identifier> SLOT_LOCK_ICON = () -> SkyblockerConfigManager.get().general.itemProtection.slotLockStyle.tex;
-
- @Unique
- private static final Identifier ITEM_PROTECTION = Identifier.of(SkyblockerMod.NAMESPACE, "textures/gui/item_protection.png");
@Unique
private static final Pattern DICER_TITLE_BLACKLIST = Pattern.compile(".+? DROP!");
@@ -71,7 +68,7 @@ public abstract class InGameHudMixin {
//item protection
if (ItemProtection.isItemProtected(player.getInventory().main.get(index))) {
RenderSystem.enableBlend();
- context.drawTexture(ITEM_PROTECTION, x, y, 0, 0, 16, 16, 16, 16);
+ context.drawTexture(ItemProtection.ITEM_PROTECTION_TEX, x, y, 0, 0, 16, 16, 16, 16);
RenderSystem.disableBlend();
}
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/ItemProtection.java b/src/main/java/de/hysky/skyblocker/skyblock/item/ItemProtection.java
index 7e04652c..9a6fea7f 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/item/ItemProtection.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/ItemProtection.java
@@ -2,6 +2,8 @@ package de.hysky.skyblocker.skyblock.item;
import com.mojang.brigadier.Command;
import com.mojang.brigadier.CommandDispatcher;
+
+import de.hysky.skyblocker.SkyblockerMod;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.utils.Constants;
import de.hysky.skyblocker.utils.ItemUtils;
@@ -18,9 +20,12 @@ import net.minecraft.command.CommandRegistryAccess;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.text.Text;
+import net.minecraft.util.Identifier;
+
import org.lwjgl.glfw.GLFW;
public class ItemProtection {
+ public static final Identifier ITEM_PROTECTION_TEX = Identifier.of(SkyblockerMod.NAMESPACE, "textures/gui/item_protection.png");
public static KeyBinding itemProtection;
public static void init() {
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextManager.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextManager.java
index eb3d211d..8eb26acf 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextManager.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextManager.java
@@ -4,6 +4,7 @@ import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.skyblock.bazaar.BazaarHelper;
import de.hysky.skyblocker.skyblock.chocolatefactory.ChocolateFactorySolver;
import de.hysky.skyblocker.skyblock.item.slottext.adders.*;
+import de.hysky.skyblocker.skyblock.profileviewer.ProfileViewerScreen;
import de.hysky.skyblocker.utils.Utils;
import de.hysky.skyblocker.utils.container.SlotTextAdder;
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
@@ -11,6 +12,7 @@ import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents;
import net.fabricmc.fabric.api.client.screen.v1.ScreenKeyboardEvents;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawContext;
+import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.ingame.HandledScreen;
import net.minecraft.client.option.KeyBinding;
import net.minecraft.client.util.math.MatrixStack;
@@ -55,8 +57,8 @@ public class SlotTextManager {
public static void init() {
ScreenEvents.AFTER_INIT.register((client, screen, width, height) -> {
- if (screen instanceof HandledScreen<?> handledScreen && Utils.isOnSkyblock()) {
- onScreenChange(handledScreen);
+ if ((screen instanceof HandledScreen<?> && Utils.isOnSkyblock()) || screen instanceof ProfileViewerScreen) {
+ onScreenChange(screen);
ScreenEvents.remove(screen).register(ignored -> currentScreenAdders.clear());
}
ScreenKeyboardEvents.afterKeyPress(screen).register((screen1, key, scancode, modifiers) -> {
@@ -73,7 +75,7 @@ public class SlotTextManager {
});
}
- private static void onScreenChange(HandledScreen<?> screen) {
+ private static void onScreenChange(Screen screen) {
for (SlotTextAdder adder : adders) {
if (adder.isEnabled() && adder.test(screen)) {
currentScreenAdders.add(adder);
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/BackpackPreview.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/BackpackPreview.java
index 3fb52b3a..199f9c9e 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/BackpackPreview.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/BackpackPreview.java
@@ -42,7 +42,6 @@ import java.util.stream.Collectors;
public class BackpackPreview {
private static final Logger LOGGER = LoggerFactory.getLogger(BackpackPreview.class);
- private static final Identifier ITEM_PROTECTION = Identifier.of(SkyblockerMod.NAMESPACE, "textures/gui/item_protection.png");
private static final Identifier TEXTURE = Identifier.ofVanilla("textures/gui/container/generic_54.png");
private static final Pattern ECHEST_PATTERN = Pattern.compile("Ender Chest.*\\((\\d+)/\\d+\\)");
private static final Pattern BACKPACK_PATTERN = Pattern.compile("Backpack.*\\(Slot #(\\d+)\\)");
@@ -167,7 +166,7 @@ public class BackpackPreview {
if (ItemProtection.isItemProtected(currentStack)) {
RenderSystem.enableBlend();
- context.drawTexture(ITEM_PROTECTION, itemX, itemY, 0, 0, 16, 16, 16, 16);
+ context.drawTexture(ItemProtection.ITEM_PROTECTION_TEX, itemX, itemY, 0, 0, 16, 16, 16, 16);
RenderSystem.disableBlend();
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/inventory/Inventory.java b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/inventory/Inventory.java
index dad4e7cb..6d9adfda 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/inventory/Inventory.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/inventory/Inventory.java
@@ -1,8 +1,12 @@
package de.hysky.skyblocker.skyblock.profileviewer.inventory;
import com.google.gson.JsonObject;
+import com.mojang.blaze3d.systems.RenderSystem;
+
import de.hysky.skyblocker.config.SkyblockerConfigManager;
+import de.hysky.skyblocker.skyblock.item.ItemProtection;
import de.hysky.skyblocker.skyblock.item.ItemRarityBackgrounds;
+import de.hysky.skyblocker.skyblock.item.slottext.SlotTextManager;
import de.hysky.skyblocker.skyblock.profileviewer.ProfileViewerPage;
import de.hysky.skyblocker.skyblock.profileviewer.inventory.itemLoaders.ItemLoader;
import it.unimi.dsi.fastutil.ints.IntIntPair;
@@ -72,7 +76,9 @@ public class Inventory implements ProfileViewerPage {
int endIndex = Math.min(startIndex + itemsPerPage, containerList.size());
List<Text> tooltip = Collections.emptyList();
for (int i = 0; i < endIndex - startIndex; i++) {
- if (containerList.get(startIndex + i) == ItemStack.EMPTY) continue;
+ ItemStack stack = containerList.get(startIndex + i);
+ if (stack.isEmpty()) continue;
+
int column = i % dimensions.rightInt();
int row = i / dimensions.rightInt();
@@ -80,14 +86,21 @@ public class Inventory implements ProfileViewerPage {
int y = rootYAdjusted + 18 + row * 18;
if (SkyblockerConfigManager.get().general.itemInfoDisplay.itemRarityBackgrounds) {
- ItemRarityBackgrounds.tryDraw(containerList.get(startIndex + i), context, x, y);
+ ItemRarityBackgrounds.tryDraw(stack, context, x, y);
+ }
+
+ if (ItemProtection.isItemProtected(stack)) {
+ RenderSystem.enableBlend();
+ context.drawTexture(ItemProtection.ITEM_PROTECTION_TEX, x, y, 0, 0, 16, 16, 16, 16);
+ RenderSystem.disableBlend();
}
- context.drawItem(containerList.get(startIndex + i), x, y);
- context.drawItemInSlot(textRenderer, containerList.get(startIndex + i), x, y);
+ context.drawItem(stack, x, y);
+ context.drawItemInSlot(textRenderer, stack, x, y);
+ SlotTextManager.renderSlotText(context, textRenderer, null, stack, i, x, y);
if (mouseX > x - 2 && mouseX < x + 16 + 1 && mouseY > y - 2 && mouseY < y + 16 + 1) {
- tooltip = containerList.get(startIndex + i).getTooltip(Item.TooltipContext.DEFAULT, CLIENT.player, CLIENT.options.advancedItemTooltips ? TooltipType.ADVANCED : TooltipType.BASIC);
+ tooltip = stack.getTooltip(Item.TooltipContext.DEFAULT, CLIENT.player, CLIENT.options.advancedItemTooltips ? TooltipType.ADVANCED : TooltipType.BASIC);
}
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/inventory/PlayerInventory.java b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/inventory/PlayerInventory.java
index cf88bf0b..980eb52e 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/inventory/PlayerInventory.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/inventory/PlayerInventory.java
@@ -1,8 +1,12 @@
package de.hysky.skyblocker.skyblock.profileviewer.inventory;
import com.google.gson.JsonObject;
+import com.mojang.blaze3d.systems.RenderSystem;
+
import de.hysky.skyblocker.config.SkyblockerConfigManager;
+import de.hysky.skyblocker.skyblock.item.ItemProtection;
import de.hysky.skyblocker.skyblock.item.ItemRarityBackgrounds;
+import de.hysky.skyblocker.skyblock.item.slottext.SlotTextManager;
import de.hysky.skyblocker.skyblock.profileviewer.ProfileViewerPage;
import de.hysky.skyblocker.skyblock.profileviewer.inventory.itemLoaders.InventoryItemLoader;
import it.unimi.dsi.fastutil.ints.IntIntPair;
@@ -61,7 +65,9 @@ public class PlayerInventory implements ProfileViewerPage {
private void drawContainerItems(DrawContext context, int rootX, int rootY, IntIntPair dimensions, int startIndex, int endIndex, int mouseX, int mouseY) {
for (int i = 0; i < endIndex - startIndex; i++) {
- if (containerList.get(startIndex + i) == ItemStack.EMPTY) continue;
+ ItemStack stack = containerList.get(startIndex + i);
+ if (stack.isEmpty()) continue;
+
int column = i % dimensions.rightInt();
int row = i / dimensions.rightInt();
@@ -69,14 +75,21 @@ public class PlayerInventory implements ProfileViewerPage {
int y = (rootY + 18 + row * 18) + (dimensions.leftInt() > 1 && row + 1 == dimensions.leftInt() ? 4 : 0);
if (SkyblockerConfigManager.get().general.itemInfoDisplay.itemRarityBackgrounds) {
- ItemRarityBackgrounds.tryDraw(containerList.get(startIndex + i), context, x, y);
+ ItemRarityBackgrounds.tryDraw(stack, context, x, y);
+ }
+
+ if (ItemProtection.isItemProtected(stack)) {
+ RenderSystem.enableBlend();
+ context.drawTexture(ItemProtection.ITEM_PROTECTION_TEX, x, y, 0, 0, 16, 16, 16, 16);
+ RenderSystem.disableBlend();
}
- context.drawItem(containerList.get(startIndex + i), x, y);
- context.drawItemInSlot(textRenderer, containerList.get(startIndex + i), x, y);
+ context.drawItem(stack, x, y);
+ context.drawItemInSlot(textRenderer, stack, x, y);
+ SlotTextManager.renderSlotText(context, textRenderer, null, stack, i, x, y);
if (mouseX > x - 2 && mouseX < x + 16 + 1 && mouseY > y - 2 && mouseY < y + 16 + 1) {
- tooltip = containerList.get(startIndex + i).getTooltip(Item.TooltipContext.DEFAULT, CLIENT.player, CLIENT.options.advancedItemTooltips ? TooltipType.ADVANCED : TooltipType.BASIC);
+ tooltip = stack.getTooltip(Item.TooltipContext.DEFAULT, CLIENT.player, CLIENT.options.advancedItemTooltips ? TooltipType.ADVANCED : TooltipType.BASIC);
}
}
}