红石中继站
    • 资源
    • 新帖
    • 版块
    • 热门
    • 登录

    我找deepseek问如何在MC服务器部署deepseek,有没有开发者看看他纯扯淡还是真能跑?

    编程开发
    deepseek ai 服务器
    5
    5
    246
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 混乱Chaos混
      混乱Chaos
      最后由 编辑 · 日本

      以下是他给的步骤:
      在《我的世界》中实现与DeepSeek对话需要结合Minecraft插件开发和API调用,以下是分步部署方案:


      第一步:环境准备

      1. 服务器端

        • 安装Java 17+运行环境
        • 部署支持插件的服务端(推荐选择):
          • PaperMC(高性能优化版): https://papermc.io
          • Spigot/Bukkit(经典插件框架)
      2. 开发工具

        • IDE:IntelliJ IDEA(推荐)或 Eclipse
        • 构建工具:Maven或Gradle
        • 插件开发库:Spigot API / Paper API

      第二步:插件开发

      1. 创建基础插件

      // 示例:主类注册事件监听
      public class DeepSeekPlugin extends JavaPlugin {
          @Override
          public void onEnable() {
              getServer().getPluginManager().registerEvents(new ChatListener(), this);
              getLogger().info("DeepSeek对话插件已激活");
          }
      }
      

      2. 实现聊天监听

      public class ChatListener implements Listener {
          @EventHandler(priority = EventPriority.NORMAL)
          public void onPlayerChat(AsyncPlayerChatEvent event) {
              if (event.getMessage().startsWith("!deepseek ")) {
                  String query = event.getMessage().substring(10
      

      第三步:API通信核心实现

      1. 添加HTTP请求依赖(Maven配置)

      <dependency>
          <groupId>org.apache.httpcomponents</groupId>
          <artifactId>httpclient</artifactId>
          <version>4.5.13</version>
      </dependency>
      

      2. 实现DeepSeek API调用(示例)

      public class DeepSeekAPI {
          private static final String API_URL = "https://api.deepseek.com/v1/chat/completions";
          private final String apiKey;
      
          public DeepSeekAPI(String apiKey) {
              this.apiKey = apiKey;
          }
      
          public String getResponse(String prompt) throws IOException {
              try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
                  HttpPost httpPost = new HttpPost(API_URL);
                  
                  // 构建JSON请求体
                  JSONObject json = new JSONObject();
                  json.put("model", "deepseek-chat");
                  json.put("messages", new JSONArray().put(new JSONObject()
                      .put("role", "user")
                      .put("content", prompt)));
      
                  // 设置请求头
                  httpPost.setHeader("Content-Type", "application/json");
                  httpPost.setHeader("Authorization", "Bearer " + apiKey);
                  httpPost.setEntity(new StringEntity(json.toString()));
      
                  // 执行请求并解析响应
                  try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
                      String responseBody = EntityUtils.toString(response.getEntity());
                      JSONObject responseJson = new JSONObject(responseBody);
                      return responseJson.getJSONArray("choices")
                          .getJSONObject(0)
                          .getJSONObject("message")
                          .getString("content");
                  }
              }
          }
      }
      

      第四步:完整插件集成

      1. 配置API密钥(plugin.yml)

      name: DeepSeekChat
      version: 1.0
      main: com.yourpackage.DeepSeekPlugin
      api-version: 1.17
      commands:
        deepseek:
          description: 与DeepSeek对话
      

      2. 异步处理改造(防止阻塞主线程)

      @EventHandler
      public void onPlayerChat(AsyncPlayerChatEvent event) {
          if (event.getMessage().startsWith("!deepseek ")) {
              event.setCancelled(true); // 取消原始聊天广播
              
              Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
                  try {
                      String response = new DeepSeekAPI(plugin.getConfig().getString("api-key"))
                          .getResponse(event.getMessage().substring(10));
                      
                      // 同步返回消息到游戏内
                      Bukkit.getScheduler().runTask(plugin, () -> 
                          event.getPlayer().sendMessage("§bDeepSeek §7» §f" + response));
                  } catch (Exception e) {
                      event.getPlayer().sendMessage("§c请求失败: " + e.getMessage());
                  }
              });
          }
      }
      

      第五步:部署配置

      1. 创建配置文件 config.yml
      api-key: "your_deepseek_api_key_here"
      rate-limit: 5 # 每秒请求限制
      
      1. 插件加载配置
      public void onEnable() {
          saveDefaultConfig();
          reloadConfig();
      }
      

      关键注意事项

      1. API密钥安全

        • 通过config.yml存储密钥,切勿硬编码在代码中
        • 设置服务器ops.json权限控制
      2. 异步处理

        • 必须使用runTaskAsynchronously避免阻塞主线程
        • 游戏内消息回传需切换回主线程(runTask)
      3. 错误处理

      try {
          // API调用代码
      } catch (IOException e) {
          getLogger().log(Level.SEVERE, "API通信失败", e);
      } catch (JSONException e) {
          getLogger().warning("API响应解析异常");
      }
      

      高级扩展建议

      1. 添加冷却时间限制
      CooldownManager cooldowns = new CooldownManager(30); // 30秒冷却
      
      if (cooldowns.checkCooldown(player)) {
          player.sendMessage("§c请等待 " + cooldowns.getRemaining(player) + "秒后再使用");
          return;
      }
      
      1. 支持多语言响应
      // 在API请求中添加语言参数
      json.put("language", getConfig().getString("language", "zh-CN"));
      
      1. 日志记录
      new BukkitRunnable() {
          public void run() {
              logToDatabase(player.getName(), query, response);
          }
      }.runTaskAsynchronously(plugin);
      

      完成以上步骤后,通过mvn clean package构建插件,将生成的.jar文件放入服务器的plugins目录并重启服务器即可使用。

      1 条回复 最后回复 回复 引用
      • OrzMikuO
        OrzMiku
        最后由 编辑 · 陕西省

        没在胡扯,会插件开发的话,改改能跑起来

        LunarFox 基础整合包
        无事东风走过,扬起回忆如昨。

        1 条回复 最后回复 回复 引用
        • louyukaiL
          louyukai
          最后由 编辑 · 浙江省

          感觉很不错啊,该有的功能都有了,但还有改进空间
          比如API_URL应该可以在config中配置,不应该硬编码在代码里,便于适配和切换第三方API;API Key也应该支持配置多条

          1 条回复 最后回复 回复 引用
          • wsseieieiW
            wsseieiei
            最后由 编辑 · 北京市

            照着它说的做一下就知道了(
            我去试试
            emm……deepseek的api不能充值了……

            Proletarier aller Länder, vereinigt euch!

            > 雷石东直放站

            1 条回复 最后回复 回复 引用
            • BaimoQilinB
              BaimoQilin
              最后由 编辑 · 江苏省

              看起来问题不大。如果cursor的composer能用r1这样的自定义模型就好啦……

              还有哦,AI生成插件可以试试看这个 https://www.mczwlt.net/resource/52c7tw1m

              46c17763-0664-4ed0-ade0-ee04496be41e-image.png

              初二在读 | LLM/AI 爱好者
              GitHub CyniaAI 系列开源 LLM Agents 项目维护者
              Hypiworld 机械筑梦腐竹 现已停运,另见 #492

              个人主页 | GitHub主页 | 微信公众号 | 日志随笔 | 知乎专栏

              ✨ 用冰冷的理性温暖世界

              我的最新文章: 评“煤炭压力版”事件:观研报告网们敲响的 LLM 信息污染警钟 | 评“姚北实验学校食堂惊现活蛆”事件 | BukkitGPT 开发日志: 添加 AI 编辑现有 Bukkit 插件的功能 | ...

              1 条回复 最后回复 回复 引用
              • 第一个帖子
                最后一个帖子
                "Minecraft" 以及 "我的世界" 为 Mojang Synergies AB 的商标,本站与 Mojang 以及 Microsoft 没有从属关系
                © 2024-2025 红石中继站 版权所有 本站原创图文内容版权属于原创作者,未经许可不得转载
                侵权投诉邮箱:[email protected]
                由 长亭雷池WAF 提供安全检测与防护 由 WAFPRO 提供 SCDN 安全加速
                苏公网安备32050902102328号 苏ICP备2023043601号-8