首页 Home.

  • 一个 Minecraft 插件开发者绕不开的困境 写过 Bukkit 插件的人都遇到过这种情况:你想改的逻辑就在那里,源码摆在 Spigot 仓库里,每个人都看得到,但你改不动。 服务端给你的接口是一套事件 API。当某件事发生时——玩家加入、方块破坏、实体受伤——你能监听到一个事件对象,能取消、能

  • Minecraft 插件开发中,数据持久化是个绕不过去的问题。玩家数据要存、配置要存、状态要存,但插件的运行环境决定了你不可能引入 Hibernate 这种重量级框架——类加载隔离、JAR 体积、运行时依赖冲突,每一个都是坑。 database-ptc-object 是 TabooLib 框架中的对

  • 第一章我们搞清楚了 OpenGL 的底层原理——GPU 管线 矩阵变换 纹理采样这些对吧。但是 Minecraft 是怎么把那些 OpenGL 概念组装成一个能跑的渲染系统的呢?本文就带大家了解一下 Blaze3D。 我把朋友的笔记结合最新的 MC 客户端源码重新整理了一遍,补充了必要的前置知识,尽

  • 我把朋友的笔记结合最新的 MC 客户端源码重新整理了一遍,补充了必要的前置知识,尽量让没上过图形学课的同学也能跟上。 https://blog.fxmarkbrown.top/post/179 1.1 GPU 与图形渲染基础 这一切的一切都得从

  • 上一篇把命令路由从 on_message.lua 搬回 Go 之后,飞书群里的查询命令一直稳定运行。这篇讲一个让我调了半天的问题:按人查提交记录。 需求:在群里查某人今天做了什么 场景很直白。产品在飞书群里发一条 查询 @Ray_Hughes 昨日,机器人应该回一张卡片,列出昨天这个人在哪些分支推了

  • 上一篇说到把 Node 插件框架换成了 Lua 基座之后,所有命令分发都收敛到 on_message.lua 一个文件里。开始几条命令时一切都好,写到第十条就开始难受——一长串 if cmd == "..." elseif cmd == "...",参数解析散在各处,产品别名 resolve 在多个

  • 上一篇文章写了 responsevent——一个 Go 事件调度器 + Node.js 子进程插件的框架。设计上很漂亮:拓扑排序的插件链、stdin/stdout 的 JSON 协议、权限隔离、RPC 能力注入。做完之后用了一段时间,发现一个问题:部署摩擦没有变小,只是从「改 Go 代码」变成了「写

  • https://github.com/FxRayHughes/responsevent 做 CI/CD 机器人类工具的时候,总会遇到一个问题:核心逻辑用 Go 写得很稳,但每次要加一个新的自动化规则——比如飞书群里回复特定消息、GitLab issue 关闭后自动整理内容——都得改 Go 代码、重新

  • 一套面向 Bukkit 服务端的变量与积分管理框架。 起点 服务器里所有"数值"都需要被记下来。金币、体力、连击数、签到状态、VIP 等级、自定义计数器,本质都是 (玩家, 键, 值) 这一组关系。各种插件各自实现一套,又会出现重复的存储层、重复的过期逻辑、重复的 PAPI 接入。 AbolethP

  • 前言 写前端工具链的人都熟悉这套组合 Vite + Vitest + ESLint + Prettier + tsc 对吧 但是把它们装到一起 各管各的版本 各管各的配置 是不是有点烦? 本文记录用 Vite+ 重写一个纯浏览器端的图像生成工具的过程 顺带把 GPT-Image-2 这套 OpenA