org.bukkit.command.CommandException: Unhandled exception executing command 'sell' in plugin SellGui v2.0.3 at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[Spigot-1.12.2.jar:git-Spigot-7754231-94b0980] at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[Spigot-1.12.2.jar:git-Spigot-7754231-94b0980] at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:651) ~[Spigot-1.12.2.jar:git-Spigot-7754231-94b0980] at net.minecraft.server.v1_12_R1.PlayerConnection.handleCommand(PlayerConnection.java:1392) [Spigot-1.12.2.jar:git-Spigot-7754231-94b0980] at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:1227) [Spigot-1.12.2.jar:git-Spigot-7754231-94b0980] at net.minecraft.server.v1_12_R1.PacketPlayInChat.a(PacketPlayInChat.java:45) [Spigot-1.12.2.jar:git-Spigot-7754231-94b0980] at net.minecraft.server.v1_12_R1.PacketPlayInChat.a(PacketPlayInChat.java:1) [Spigot-1.12.2.jar:git-Spigot-7754231-94b0980] at net.minecraft.server.v1_12_R1.PlayerConnectionUtils$1.run(SourceFile:13) [Spigot-1.12.2.jar:git-Spigot-7754231-94b0980] at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_211] at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_211] at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46) [Spigot-1.12.2.jar:git-Spigot-7754231-94b0980] at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:748) [Spigot-1.12.2.jar:git-Spigot-7754231-94b0980] at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [Spigot-1.12.2.jar:git-Spigot-7754231-94b0980] at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [Spigot-1.12.2.jar:git-Spigot-7754231-94b0980] at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [Spigot-1.12.2.jar:git-Spigot-7754231-94b0980] at java.lang.Thread.run(Unknown Source) [?:1.8.0_211] Caused by: java.lang.IllegalArgumentException: No enum constant org.bukkit.Material.MINECRAFT:GOLD_INGOT at java.lang.Enum.valueOf(Unknown Source) ~[?:1.8.0_211] at org.bukkit.Material.valueOf(Material.java:1) ~[Spigot-1.12.2.jar:git-Spigot-7754231-94b0980] at haohao.main.sellgui.SellGui.createItem(SellGui.java:224) ~[?:?] at haohao.main.sellgui.SellGui.setupGUI(SellGui.java:138) ~[?:?] at haohao.main.sellgui.SellGui.openSellGUI(SellGui.java:127) ~[?:?] at haohao.main.sellgui.SellGui.onCommand(SellGui.java:112) ~[?:?] at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[Spigot-1.12.2.jar:git-Spigot-7754231-94b0980]
时间: 2025-07-11 12:48:41 浏览: 8
<think>嗯,用户遇到了一个关于Minecraft插件SellGui的异常错误,需要我来帮忙分析。首先,我得仔细看看错误日志。错误信息是“org.bukkit.command.CommandException: Unhandled exception executing command 'sell' in plugin SellGui v2.0.3”,然后下面有一堆堆栈跟踪。
关键点可能在“Caused by: java.lang.IllegalArgumentException: No enum constant org.bukkit.Material.MINECRAFT:GOLD_INGOT”。看起来插件在尝试获取Material枚举时,使用了错误的名称“MINECRAFT:GOLD_INGOT”。我记得在Spigot 1.12.2中,Material的命名可能还没有使用命名空间,比如应该是“GOLD_INGOT”而不是带有命名空间的。1.13版本之后才引入了命名空间的概念,所以如果这个插件是为更高版本设计的,在1.12.2上运行就会出现这个问题。
接下来,用户使用的插件是SellGui v2.0.3,可能这个版本不兼容1.12.2。需要确认插件是否支持1.12.2版本,或者是否有旧版本的插件可用。另外,用户可能错误配置了物品名称,比如在配置文件中将物品ID写成了带有命名空间的形式,导致插件解析错误。
解决方案方面,首先应该检查插件的配置文件,尤其是物品配置部分,看看是否有类似“MINECRAFT:GOLD_INGOT”这样的条目,改成正确的“GOLD_INGOT”。如果插件本身不支持1.12.2,可能需要寻找兼容的旧版本,或者联系开发者反馈问题。另外,用户也可以尝试更新服务器到支持命名空间的版本,比如1.13及以上,但这可能涉及其他插件的兼容性问题,需要综合考虑。
还有,查看堆栈跟踪中的具体代码行,比如SellGui.java的第224行,这提示插件在createItem方法中调用了Material.valueOf(),传入了错误的字符串。这说明插件在处理物品类型时没有正确转换命名空间,可能需要修改插件代码,但普通用户可能无法做到,所以建议优先检查配置和版本兼容性。</think>这个错误是典型的 **Minecraft 插件兼容性问题**,具体分析如下:
---
### 错误根源定位
从堆栈跟踪可看出直接原因是:
$$ \text{Caused by: java.lang.IllegalArgumentException: No enum constant org.bukkit.Material.MINECRAFT:GOLD\_INGOT} $$
表示插件尝试通过 `Material.valueOf()` 方法解析字符串 `"MINECRAFT:GOLD_INGOT"`,但 **Material 枚举中不存在该名称**。
---
### 核心问题解析
1. **Material 名称格式问题**
- 在 **Spigot 1.12.2** 版本中,物品名称应直接使用 `GOLD_INGOT`,而不是带命名空间的 `MINECRAFT:GOLD_INGOT`。
- `命名空间语法(minecraft:xxx)` 是 **1.13+ 版本引入的特性**,旧版本直接使用物品名称(如 `GOLD_INGOT`, `DIAMOND` 等)。
2. **插件兼容性**
- 插件 `SellGui v2.0.3` 可能:
- 为 **1.13+ 版本开发**,但被安装在 **1.12.2 服务器**;
- 配置文件中错误使用了带命名空间的物品名称。
---
### 解决步骤
#### 1. 检查插件版本兼容性
- 确认插件是否支持 **1.12.2**。若插件仅支持 1.13+,需寻找旧版本或更换兼容插件。
#### 2. 修复配置文件
- 打开插件配置文件(通常是 `config.yml` 或 `items.yml`),查找类似 `MINECRAFT:GOLD_INGOT` 的条目。
- 将其替换为 **1.12.2 的合法 Material 名称**,例如:
```yaml
# 错误写法
item: MINECRAFT:GOLD_INGOT
# 正确写法(1.12.2)
item: GOLD_INGOT
```
#### 3. 检查代码逻辑(开发者视角)
若你是插件开发者,需修改 `SellGui.java` 的 **第224行** 的 Material 解析逻辑:
```java
// 错误代码(包含命名空间)
Material mat = Material.valueOf("MINECRAFT:GOLD_INGOT");
// 修复代码(移除命名空间)
Material mat = Material.valueOf("GOLD_INGOT");
```
#### 4. 服务器版本升级(可选)
若依赖高版本插件,可尝试将服务器升级到 **1.13+**,但需确保其他插件兼容新版本。
---
### 扩展建议
- 使用 `/minecraft:material <名称>` 命令测试当前服务器版本支持的 Material 名称。
- 查阅 [Spigot 1.12.2 Material 列表](https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html) 确认合法名称。
通过以上操作,可解决因 **Material 名称格式不兼容** 导致的异常问题。
阅读全文
相关推荐

















