Skip to content

Commit 39e7cca

Browse files
authored
Fix Barrier Placeholders (#1949)
1 parent 10ef4ae commit 39e7cca

File tree

3 files changed

+23
-15
lines changed

3 files changed

+23
-15
lines changed

src/main/java/de/hysky/skyblocker/skyblock/ItemPickupWidget.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import de.hysky.skyblocker.skyblock.tabhud.widget.ComponentBasedWidget;
1010
import de.hysky.skyblocker.skyblock.tabhud.widget.component.SeparatorComponent;
1111
import de.hysky.skyblocker.utils.Formatters;
12+
import de.hysky.skyblocker.utils.ItemUtils;
1213
import de.hysky.skyblocker.utils.Location;
1314
import de.hysky.skyblocker.utils.NEURepoManager;
1415
import de.hysky.skyblocker.utils.scheduler.Scheduler;
@@ -22,6 +23,8 @@
2223
import net.minecraft.network.chat.HoverEvent;
2324
import net.minecraft.world.item.ItemStack;
2425
import net.minecraft.world.item.Items;
26+
import org.jspecify.annotations.Nullable;
27+
2528
import java.util.Set;
2629
import java.util.regex.Matcher;
2730
import java.util.regex.Pattern;
@@ -61,13 +64,13 @@ public static ItemPickupWidget getInstance() {
6164
* Searches the NEU REPO for the item linked to the name
6265
*/
6366
private static ItemStack getItem(String itemName) {
64-
if (NEURepoManager.isLoading() || !ItemRepository.filesImported()) return new ItemStack(Items.BARRIER);
67+
if (NEURepoManager.isLoading() || !ItemRepository.filesImported()) return ItemUtils.getNamedPlaceholder(itemName);
6568
return NEURepoManager.getItemByName(itemName)
6669
.stream()
6770
.findFirst()
6871
.map(NEUItem::getSkyblockItemId)
6972
.map(ItemRepository::getItemStack)
70-
.orElseGet(() -> new ItemStack(Items.BARRIER));
73+
.orElseGet(() -> ItemUtils.getNamedPlaceholder(itemName));
7174
}
7275

7376
/**
@@ -190,7 +193,7 @@ public void updateContent() {
190193
* @param entry ChangeData to check
191194
* @return formatted name from ChangeData
192195
*/
193-
private String checkNextItem(ChangeData entry) {
196+
private @Nullable String checkNextItem(ChangeData entry) {
194197
//check the item has not expired
195198
if (entry.lastChange + SkyblockerConfigManager.get().uiAndVisuals.itemPickup.lifeTime * 1000L < System.currentTimeMillis()) {
196199
return null;

src/main/java/de/hysky/skyblocker/skyblock/garden/visitor/VisitorHelper.java

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
import net.minecraft.world.inventory.AbstractContainerMenu;
4242
import net.minecraft.world.inventory.Slot;
4343
import net.minecraft.world.item.ItemStack;
44-
import net.minecraft.world.item.Items;
4544

4645
public class VisitorHelper extends AbstractWidget {
4746
private static final Set<Visitor> activeVisitors = new HashSet<>();
@@ -56,7 +55,6 @@ public class VisitorHelper extends AbstractWidget {
5655
private static final int ICON_SIZE = 16;
5756
private static final int LINE_HEIGHT = 3;
5857
private static final int PADDING = 4;
59-
private static final ItemStack BARRIER = new ItemStack(Items.BARRIER);
6058
private static final Object2LongMap<Component> copiedTimestamps = new Object2LongOpenHashMap<>();
6159

6260
// Used to prevent adding the visitor again after the player clicks accept or refuse.
@@ -154,14 +152,14 @@ private static void updateItems() {
154152
private static ItemStack getCachedItem(String itemName) {
155153
String cleanName = ChatFormatting.stripFormatting(itemName);
156154
return cachedItems.computeIfAbsent(cleanName, name -> {
157-
if (NEURepoManager.isLoading() || !ItemRepository.filesImported()) return null;
155+
if (NEURepoManager.isLoading() || !ItemRepository.filesImported()) return ItemUtils.getNamedPlaceholder(itemName);
158156

159157
return NEURepoManager.getItemByName(itemName)
160158
.stream()
161159
.findFirst()
162160
.map(NEUItem::getSkyblockItemId)
163161
.map(ItemRepository::getItemStack)
164-
.orElse(BARRIER);
162+
.orElseGet(() -> ItemUtils.getNamedPlaceholder(itemName));
165163
});
166164
}
167165

@@ -204,15 +202,13 @@ public void renderWidget(GuiGraphics context, int mouseX, int mouseY, float delt
204202
int yPosition = y + index * (LINE_HEIGHT + textRenderer.lineHeight);
205203

206204
ItemStack cachedStack = getCachedItem(itemName.getString());
207-
if (cachedStack != null) {
208-
context.pose().pushMatrix();
209-
context.pose().translate(iconX, yPosition + (float) textRenderer.lineHeight / 2 - ICON_SIZE * 0.95f / 2);
210-
context.pose().scale(0.95f, 0.95f);
211-
context.renderItem(cachedStack, 0, 0);
212-
context.pose().popMatrix();
213-
}
205+
context.pose().pushMatrix();
206+
context.pose().translate(iconX, yPosition + (float) textRenderer.lineHeight / 2 - ICON_SIZE * 0.95f / 2);
207+
context.pose().scale(0.95f, 0.95f);
208+
context.renderItem(cachedStack, 0, 0);
209+
context.pose().popMatrix();
214210

215-
MutableComponent name = cachedStack != null ? cachedStack.getHoverName().copy() : itemName.copy();
211+
MutableComponent name = cachedStack.getHoverName().copy();
216212
MutableComponent itemText = SkyblockerConfigManager.get().farming.visitorHelper.showStacksInVisitorHelper && totalAmount >= 64
217213
? name.append(" x" + (totalAmount / 64) + " stacks + " + (totalAmount % 64))
218214
: name.append(" x" + totalAmount);

src/main/java/de/hysky/skyblocker/utils/ItemUtils.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -635,4 +635,13 @@ public static SkyblockItemRarity getItemRarity(ItemStack stack) {
635635
return info.item().isPresent() && info.item().get().equals("PET_ITEM_TIER_BOOST") ? info.rarity().next() : info.rarity();
636636
}
637637
}
638+
639+
/**
640+
* Gets a placeholder Barrier {@link ItemStack}, used to display items that could not be found in the item repository.
641+
*/
642+
public static ItemStack getNamedPlaceholder(String itemName) {
643+
ItemStack stack = new ItemStack(Items.BARRIER);
644+
stack.set(DataComponents.CUSTOM_NAME, Component.literal(itemName));
645+
return stack;
646+
}
638647
}

0 commit comments

Comments
 (0)