You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spigot 1.21.4如何检测玩家点击方块(解决Material无法导入问题)

解决Spigot 1.21.4中检测玩家点击讲台的问题

一、修复Cannot resolve symbol "Material"错误

这个报错通常是项目依赖配置错误或未正确导入类导致的,按以下步骤解决:

  1. 确认导入语句
    在事件处理类顶部添加正确的导入:
import org.bukkit.Material;
  1. 检查项目依赖
    确保构建工具(Gradle/Maven)引入了Spigot 1.21.4的API依赖:
  • Gradle配置示例:
repositories {
    mavenCentral()
    maven { url 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' }
}

dependencies {
    compileOnly 'org.spigotmc:spigot-api:1.21.4-R0.1-SNAPSHOT'
}
  • Maven配置示例:
<repositories>
    <repository>
        <id>spigotmc-repo</id>
        <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>org.spigotmc</groupId>
        <artifactId>spigot-api</artifactId>
        <version>1.21.4-R0.1-SNAPSHOT</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

二、实现玩家点击讲台的检测逻辑

Spigot 1.21.4仍可通过PlayerInteractEvent实现检测,只需将目标方块类型改为LECTERN(讲台对应的Material枚举值),同时建议增加右键动作判断(符合玩家点击讲台的常规操作):

import org.bukkit.Material;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.entity.Player;

public class LecternClickListener implements Listener {

    @EventHandler
    public void onPlayerInteract(PlayerInteractEvent event) {
        Player player = event.getPlayer();
        // 跳过未点击方块的情况
        if (event.getClickedBlock() == null) {
            return;
        }

        // 仅处理右键点击动作
        if (event.getAction().isRightClick()) {
            Material blockType = event.getClickedBlock().getType();
            // 判断是否点击讲台
            if (blockType == Material.LECTERN) {
                // 执行自定义逻辑
                player.sendMessage("你点击了讲台!");
            }
        }
    }
}

三、确保事件注册生效

在插件主类的onEnable()方法中注册事件监听器:

import org.bukkit.plugin.java.JavaPlugin;

public class YourPluginMain extends JavaPlugin {

    @Override
    public void onEnable() {
        getServer().getPluginManager().registerEvents(new LecternClickListener(), this);
    }
}

内容的提问来源于stack exchange,提问作者Adrian Buder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 08:27:14