From 079670586738ec0312c313e451c22a764dec73d2 Mon Sep 17 00:00:00 2001 From: 1robie <97293924+1robie@users.noreply.github.com> Date: Tue, 13 Oct 2026 16:59:04 +0200 Subject: [PATCH 01/19] fix: warn when ANVIL inventory is loaded below 1.21 ANVIL inventories only have a packet engine on 1.21+. On older versions they fall back to the chest engine and rename-requirements never run. Log an error at load time and document the minimum version in the README. Co-Authored-By: Claude Haiku 5.5 --- README.md | 11 +++++++++++ .../loader/container/AnvilInventoryTypeLoader.java | 7 +++++++ 2 files changed, 18 insertions(+) diff --git a/README.md b/README.md index 7600aa194..5ae850282 100644 --- a/README.md +++ b/README.md @@ -74,6 +74,17 @@ items: - "&aYou clicked the button!" ``` +### Inventory Types + +The `type` field sets the container type (default `CHEST`). + +| Type | Minimum Minecraft version | Notes | +|---|---|---| +| `CHEST` | 1.20.6 | Default. Size must be a multiple of 9. | +| `ANVIL` | 1.21 | Enables `rename-requirements`. On older versions, zMenu logs an error at load time and the menu opens as a chest, so rename requirements do not run. | + +`CRAFTING` and `PLAYER` are not supported. + ## API Usage **Maven** diff --git a/src/main/java/fr/maxlego08/menu/loader/container/AnvilInventoryTypeLoader.java b/src/main/java/fr/maxlego08/menu/loader/container/AnvilInventoryTypeLoader.java index 6515df107..b58bc544e 100644 --- a/src/main/java/fr/maxlego08/menu/loader/container/AnvilInventoryTypeLoader.java +++ b/src/main/java/fr/maxlego08/menu/loader/container/AnvilInventoryTypeLoader.java @@ -4,6 +4,7 @@ import fr.maxlego08.menu.api.button.Button; import fr.maxlego08.menu.api.exceptions.InventoryException; import fr.maxlego08.menu.api.requirement.Requirement; +import fr.maxlego08.menu.api.utils.version.MinecraftVersion; import fr.maxlego08.menu.inventory.setter.AnvilInventorySetter; import fr.maxlego08.menu.inventory.zinv.ZAnvilInventory; import fr.maxlego08.menu.zcore.logger.Logger; @@ -18,8 +19,14 @@ public class AnvilInventoryTypeLoader implements ContainerInventoryTypeLoader { + private static final String ANVIL_MIN_VERSION = "1.21"; + @Override public @NonNull AnvilInventorySetter load(@NotNull MenuPlugin menuPlugin, @NotNull Plugin plugin, @NotNull String inventoryName, @NotNull String fileName, int size, @NotNull List