From 136255bb19686dd9b59f38113ca856647466286c Mon Sep 17 00:00:00 2001
From: apple502j <33279053+apple502j@users.noreply.github.com>
Date: Sun, 13 Nov 2022 23:46:30 +0900
Subject: [PATCH] Item Group API: Expose shouldShowOpRestrictedItems (#2637)

---
 .../api/itemgroup/v1/FabricItemGroupEntries.java     | 12 +++++++++++-
 .../fabric/mixin/itemgroup/ItemGroupMixin.java       |  2 +-
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/fabric-item-group-api-v1/src/main/java/net/fabricmc/fabric/api/itemgroup/v1/FabricItemGroupEntries.java b/fabric-item-group-api-v1/src/main/java/net/fabricmc/fabric/api/itemgroup/v1/FabricItemGroupEntries.java
index 2f5e1d472..231d04dae 100644
--- a/fabric-item-group-api-v1/src/main/java/net/fabricmc/fabric/api/itemgroup/v1/FabricItemGroupEntries.java
+++ b/fabric-item-group-api-v1/src/main/java/net/fabricmc/fabric/api/itemgroup/v1/FabricItemGroupEntries.java
@@ -38,11 +38,14 @@ public class FabricItemGroupEntries implements ItemGroup.Entries {
 	private final List<ItemStack> displayStacks;
 	private final List<ItemStack> searchTabStacks;
 
+	private final boolean showOpRestrictedItems;
+
 	@ApiStatus.Internal
-	public FabricItemGroupEntries(FeatureSet enabledFeatures, List<ItemStack> displayStacks, List<ItemStack> searchTabStacks) {
+	public FabricItemGroupEntries(FeatureSet enabledFeatures, List<ItemStack> displayStacks, List<ItemStack> searchTabStacks, boolean showOpRestrictedItems) {
 		this.enabledFeatures = enabledFeatures;
 		this.displayStacks = displayStacks;
 		this.searchTabStacks = searchTabStacks;
+		this.showOpRestrictedItems = showOpRestrictedItems;
 	}
 
 	/**
@@ -52,6 +55,13 @@ public class FabricItemGroupEntries implements ItemGroup.Entries {
 		return enabledFeatures;
 	}
 
+	/**
+	 * @return Whether to show items restricted to operators, such as command blocks.
+	 */
+	public boolean shouldShowOpRestrictedItems() {
+		return showOpRestrictedItems;
+	}
+
 	/**
 	 * @return The stacks that will be shown in the tab in the creative mode inventory. This list can be modified.
 	 */
diff --git a/fabric-item-group-api-v1/src/main/java/net/fabricmc/fabric/mixin/itemgroup/ItemGroupMixin.java b/fabric-item-group-api-v1/src/main/java/net/fabricmc/fabric/mixin/itemgroup/ItemGroupMixin.java
index e889c0aad..1e8e9ad07 100644
--- a/fabric-item-group-api-v1/src/main/java/net/fabricmc/fabric/mixin/itemgroup/ItemGroupMixin.java
+++ b/fabric-item-group-api-v1/src/main/java/net/fabricmc/fabric/mixin/itemgroup/ItemGroupMixin.java
@@ -74,7 +74,7 @@ abstract class ItemGroupMixin implements IdentifiableItemGroup, FabricItemGroup
 		// Convert the entries to lists
 		var mutableDisplayStacks = new LinkedList<>(displayStacks);
 		var mutableSearchTabStacks = new LinkedList<>(searchTabStacks);
-		var entries = new FabricItemGroupEntries(enabledFeatures, mutableDisplayStacks, mutableSearchTabStacks);
+		var entries = new FabricItemGroupEntries(enabledFeatures, mutableDisplayStacks, mutableSearchTabStacks, operatorEnabled);
 
 		final Event<ItemGroupEvents.ModifyEntries> modifyEntriesEvent = ItemGroupEventsImpl.getModifyEntriesEvent(getId());