diff --git a/src/main/java/codechicken/nei/HUDRenderer.java b/src/main/java/codechicken/nei/HUDRenderer.java index dd4a09a8..66a5c51e 100644 --- a/src/main/java/codechicken/nei/HUDRenderer.java +++ b/src/main/java/codechicken/nei/HUDRenderer.java @@ -42,13 +42,11 @@ public class HUDRenderer implements IKeyStateTracker { && mc.objectMouseOver != null && mc.objectMouseOver.typeOfHit == MovingObjectType.BLOCK) { World world = mc.theWorld; - ItemStack[] items = ItemInfo.getIdentifierItems(world, mc.thePlayer, mc.objectMouseOver) - .toArray(new ItemStack[0]); + final List items = ItemInfo.getIdentifierItems(world, mc.thePlayer, mc.objectMouseOver); - if (items.length == 0) return; - - ItemStack stack = StackInfo.getItemStackWithMinimumDamage(items); + if (items.isEmpty()) return; + final ItemStack stack = StackInfo.getItemStackWithMinimumDamage(items.toArray(new ItemStack[0])); renderOverlay(stack, ItemInfo.getText(stack, world, mc.thePlayer, mc.objectMouseOver), getPositioning()); } } diff --git a/src/main/java/codechicken/nei/api/ItemInfo.java b/src/main/java/codechicken/nei/api/ItemInfo.java index 56b3b616..b3204695 100644 --- a/src/main/java/codechicken/nei/api/ItemInfo.java +++ b/src/main/java/codechicken/nei/api/ItemInfo.java @@ -421,30 +421,38 @@ public class ItemInfo { Block mouseoverBlock = world.getBlock(x, y, z); ArrayList items = new ArrayList<>(); - ArrayList handlers = new ArrayList<>(); + if (highlightIdentifiers.containsKey(null)) handlers.addAll(highlightIdentifiers.get(null)); if (highlightIdentifiers.containsKey(mouseoverBlock)) handlers.addAll(highlightIdentifiers.get(mouseoverBlock)); + for (IHighlightHandler ident : handlers) { - ItemStack item = ident.identifyHighlight(world, player, hit); + final ItemStack item = ident.identifyHighlight(world, player, hit); if (item != null) items.add(item); } - if (items.size() > 0) return items; + if (!items.isEmpty()) return items; - ItemStack pick = mouseoverBlock.getPickBlock(hit, world, x, y, z, player); - if (pick != null) items.add(pick); + try { + final ItemStack pick = mouseoverBlock.getPickBlock(hit, world, x, y, z, player); + if (pick != null) items.add(pick); + } catch (Exception ignored) {} + + if (!items.isEmpty()) return items; + + if (mouseoverBlock instanceof IShearable shearable) { + if (shearable.isShearable(new ItemStack(Items.shears), world, x, y, z)) { + items.addAll(shearable.onSheared(new ItemStack(Items.shears), world, x, y, z, 0)); + } + } + + if (!items.isEmpty()) return items; try { items.addAll(mouseoverBlock.getDrops(world, x, y, z, world.getBlockMetadata(x, y, z), 0)); } catch (Exception ignored) {} - if (mouseoverBlock instanceof IShearable) { - IShearable shearable = (IShearable) mouseoverBlock; - if (shearable.isShearable(new ItemStack(Items.shears), world, x, y, z)) - items.addAll(shearable.onSheared(new ItemStack(Items.shears), world, x, y, z, 0)); - } - if (items.size() == 0) items.add(0, new ItemStack(mouseoverBlock, 1, world.getBlockMetadata(x, y, z))); + if (items.isEmpty()) items.add(new ItemStack(mouseoverBlock, 1, world.getBlockMetadata(x, y, z))); return items; }