From 835b9559134bb6e05cc61a917c7a4c0ebe00ffab Mon Sep 17 00:00:00 2001 From: Glicz <67753196+GliczDev@users.noreply.github.com> Date: Thu, 1 May 2025 03:43:51 +0200 Subject: [PATCH] Add a method on InventoryView to get the MenuType (#12193) Since there is a new (better) way to create views for players using MenuType, it would be nice to also be able to get it back from InventoryView after creating. --- build-data/paper.at | 1 + .../java/org/bukkit/inventory/InventoryView.java | 13 +++++++++++++ .../craftbukkit/inventory/CraftContainer.java | 5 +++++ .../craftbukkit/inventory/CraftInventoryView.java | 6 ++++++ 4 files changed, 25 insertions(+) diff --git a/build-data/paper.at b/build-data/paper.at index cd262bbbf9..d84006cd15 100644 --- a/build-data/paper.at +++ b/build-data/paper.at @@ -512,6 +512,7 @@ public net.minecraft.world.flag.FeatureFlagRegistry names public net.minecraft.world.food.FoodData exhaustionLevel public net.minecraft.world.food.FoodData foodLevel public net.minecraft.world.food.FoodData saturationLevel +public net.minecraft.world.inventory.AbstractContainerMenu menuType public net.minecraft.world.inventory.AbstractContainerMenu quickcraftSlots public net.minecraft.world.inventory.AbstractContainerMenu quickcraftStatus public net.minecraft.world.inventory.AbstractContainerMenu quickcraftType diff --git a/paper-api/src/main/java/org/bukkit/inventory/InventoryView.java b/paper-api/src/main/java/org/bukkit/inventory/InventoryView.java index 46f5f50171..5c5906421d 100644 --- a/paper-api/src/main/java/org/bukkit/inventory/InventoryView.java +++ b/paper-api/src/main/java/org/bukkit/inventory/InventoryView.java @@ -2,6 +2,7 @@ package org.bukkit.inventory; import org.bukkit.entity.HumanEntity; import org.bukkit.event.inventory.InventoryType; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -321,4 +322,16 @@ public interface InventoryView { */ @Deprecated(since = "1.21.1") // Paper public void setTitle(@NotNull String title); + + /** + * Gets the menu type of the inventory view if applicable. + *
+ * Some inventory types do not support a menu type. In such cases, this method
+ * returns null. This typically applies to inventories belonging to entities
+ * like players or animals (e.g., a horse).
+ *
+ * @return the menu type of the inventory view or null if not applicable
+ */
+ @ApiStatus.Experimental
+ @Nullable MenuType getMenuType();
}
diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java
index 1ce328bed5..c00ddfe414 100644
--- a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java
+++ b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java
@@ -95,6 +95,11 @@ public class CraftContainer extends AbstractContainerMenu {
this.title = title;
}
+ @Override
+ public MenuType getMenuType() {
+ return CraftMenuType.minecraftToBukkit(getNotchInventoryType(inventory));
+ }
+
}, player, id);
}
diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryView.java b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryView.java
index e9fd57b9e1..5039d87d7f 100644
--- a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryView.java
+++ b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryView.java
@@ -94,6 +94,12 @@ public class CraftInventoryView