Commit Graph
414 Commits
Author SHA1 Message Date
youpaishidifu c3d2f81e9e 添加/mscode命令:支持粘贴Microsoft OAuth授权码(公共客户端流程) 2026-07-17 14:02:08 +08:00
youpaishidifu f8b44dd97b 修复自动登录安全漏洞:移除verifyPremiumAsync自动登录路径
问题:离线模式服务器中,所有玩家UUID都是离线格式。
旧代码通过Mojang API检查名字是否存在,如果存在就autoLogin。
这意味着盗版客户端只要用正版玩家的名字就能跳过登录。

修复:
- 移除verifyViaPhpBackend和fetchMojangUuid
- 离线UUID玩家一律视为非正版,需手动登录或OAuth验证
- 保留3条安全的自动登录路径:
  1. 检查点0: isVerifiedPremiumPlayer (OAuth验证)
  2. 检查点1: hasJavaLogin (5分钟内重连)
  3. 检查点2: isWebLoginVerified (Web密码验证)
2026-07-17 11:06:03 +08:00
youpaishidifu ab4fe441fe 新增Microsoft OAuth正版验证功能
1. PHP端新增minecraft_auth.php,实现完整的Microsoft OAuth流程
   - 支持Microsoft账号登录验证
   - 获取Minecraft Profile(UUID、用户名)
   - 验证状态持久化到SQLite
   - 生成可点击的授权URL

2. Java端新增/mslogin和/正版命令
   - 调用PHP后端获取授权URL
   - 显示可点击链接给玩家
   - 轮询PHP检查验证状态
   - 验证成功后自动登录

3. 修改VerificationManager,集成PHP后端验证
   - 优先通过PHP验证(支持Microsoft OAuth)
   - PHP不可用时降级到Mojang API
   - 支持已验证正版玩家自动登录

4. 新增verifiedPremiumPlayers内存存储
   - 服务器重启前有效
   - 支持快速重连无需重复验证
   - 下线时保留验证状态

5. 新增plugin.yml命令定义
   - /mslogin: 英文版正版验证
   - /正版: 中文版正版验证
2026-07-17 10:22:31 +08:00
youpaishidifu 317d1fdbcc 注释快速补单日志减少噪音 2026-07-16 15:38:52 +08:00
youpaishidifu 7ba43d820a 修复领地权限拦截:豁免VISITOR(领地授权成员)在非安全权限检查 2026-07-16 14:37:56 +08:00
youpaishidifu a5edbfe314 修复: Java doGet超时30秒+poller详细日志
- doGet超时从10秒增加到30秒,确保poller有足够时间
- poller调用添加耗时统计和详细日志
- 修复pullPendingTransactions中的语法错误
- 解决: Java调用poller超时导致补单失败
2026-07-15 20:25:01 +08:00
youpaishidifu e791548e87 doTransactionPollCheck添加高频补单触发器(15秒间隔)
- WebManager: doTransactionPollCheck每~5秒触发poller_online.php(限流15秒)
- 解决补单延迟(原PollC~30-60秒才触发)

关闭 #1059
2026-07-15 18:01:06 +08:00
youpaishidifu 501aa40677 feat: Web在线充值(recharge)分支 — 支付平台0.01元测试到账
- processWebTransaction 新增 type=recharge/pay_recharge 专用分支
- 支付成功后 addBonds 发放债券 + 游戏内即时通知
- 复用现有 ~5s 轮询 + ackTransaction 防重 + confirmed_transactions 双保险
2026-07-14 20:55:04 +08:00
youpaishidifu 181c2acb34 chore: 关闭背包翻译的INFO日志刷屏
- 移除MaterialTranslator.translate()和translateWithFallback()中的info日志
- 保留warning仅用于翻译源异常降级场景
- 控制台不再被每条物品的翻译缓存/命中日志淹没
- 旧版: Sdf1_login.jar.old.9
2026-07-14 19:00:19 +08:00
youpaishidifu bf0688b291 feat: 背包备份物品名走官方翻译+机翻兜底
- translateMaterial() 由硬编码替换为 MaterialTranslator.translate()
- 与领地方块记录系统一致: 优先查 zh_cn.json 官方翻译, 机翻兜底
- 旧版: Sdf1_login.jar.old.8
2026-07-14 18:48:15 +08:00
youpaishidifu 765fbd74c1 fix: 交易拉取即贴标导致自己跳过处理
根因: ackTransaction()将txId加入confirmedTxIds内存set,
processWebTransaction()检查到set包含该ID就跳过处理。
交易还没处理就被自己标记的内存set跳过了。

修复: ackTransaction()不再写confirmedTxIds,
仅写PHP confirmed_transactions表。
confirmedTxIds仅在confirmTransaction()处理完后才写入。
旧版: Sdf1_login.jar.old.7
2026-07-14 17:03:12 +08:00
youpaishidifu d2180cec1c feat: 告示牌放置/编辑监控记录
1. land_block_log表新增detail列(已有数据库ALTER兼容)
2. DatabaseManager新增recordLandBlockWithDetail方法
3. LandRecordManager新增recordSignEdit方法,记录sign_place/sign_edit动作+内容
4. AreaProtection.onSignChange()延迟1tick记录(等事件处理完)
5. 回声碎片显示告示牌内容: 玩家XXX在HH:MM放置/编辑告示牌 [内容]
2026-07-14 16:47:57 +08:00
youpaishidifu 9ccda3f541 fix: ack_transaction补tx_type + 告示牌权限豁免授权成员
1. WebManager.ackTransaction()增加txType参数, bodyJson发送tx_id+tx_type
2. AreaProtection.onSignChange(): 白名单内授权成员跳过denySignEdit检查
   PermissionLevel无MEMBER枚举, 授权成员=白名单VISITOR, 通过isPlayerWhitelisted判定
2026-07-14 15:32:52 +08:00
youpaishidifu 401fa2453a fix(area-gui): 告示牌权限动态名称:允许/禁止编辑告示牌 2026-07-14 12:55:40 +08:00
youpaishidifu 6946cfef6d feat(area-gui): CLI/GUI菜单添加禁止编辑告示牌权限条目 2026-07-14 12:42:49 +08:00
youpaishidifu 89fa765351 fix(web): 拉取交易即刻贴标ack,防止SSL断路器后重复扣费 2026-07-14 11:27:46 +08:00
youpaishidifu a118aac18c feat(land): 添加告示牌编辑独立权限和红石状态记录 2026-07-14 10:39:59 +08:00
youpaishidifu da4299cc2f 分离登录备份和自动备份显示:backup/back命令分两组列出,L前缀=登录备份,A前缀=自动备份 2026-07-13 18:16:33 +08:00
youpaishidifu 112f992fda 修复getInventoryBackups/getInventoryBackupById查错表:inventory_backups→inv_backup_auto,导致自动备份数据查不到 2026-07-13 17:57:11 +08:00
youpaishidifu 3674e1e950 修复backup子命令权限:仅OP/插件管理员/控制台可执行,支持查询他人备份 2026-07-13 17:04:46 +08:00
youpaishidifu abdd3ad7c7 修复滚动备份日志追踪+告示牌编辑权限控制 2026-07-13 16:51:35 +08:00
youpaishidifu a3c8cec664 官方翻译纯同步模式:移除异步刷新分支,部署脚本附带上传zh_cn.json缓存 2026-07-13 15:56:22 +08:00
youpaishidifu 5a0166e90c 修复官方翻译首次部署时空map问题:缓存不存在时改为同步下载,确保init返回前map就绪 2026-07-13 15:31:59 +08:00
youpaishidifu 6c6cc94905 翻译链路日志:OfficialTranslations.lookUp + MaterialTranslator.translate/translateWithFallback 每步打印日志,跟踪翻译路径 2026-07-13 15:18:56 +08:00
youpaishidifu f5a5b28f61 添加官方中文翻译源:从Mojang API下载zh_cn.json作为优先翻译,机翻兜底 2026-07-13 15:02:59 +08:00
youpaishidifu e3b459a00c 修复容器记录仅显示打开:补充存入(put)+拿取(take)差量记录,容器类型纳入翻译 2026-07-13 14:38:50 +08:00
youpaishidifu 3ef7fbdb7a 修复容器记录+翻译集成:记录移到权限检查前,queryAndPrint异步批量翻译输出中英双语 2026-07-13 14:12:47 +08:00
youpaishidifu 3795dd90eb 修复CLI菜单权限显示:管理员只显示玩家发光,隐藏全部权限配置 2026-07-13 13:56:44 +08:00
youpaishidifu 513e4c56ad 修复拾取/丢弃权限:per-player独立授权键名映射(allowPickup↔denyPickup) 2026-07-13 13:43:16 +08:00
youpaishidifu 8138b97b59 领地记录物品名多源翻译:有道+简心+Google三级降级 2026-07-13 13:15:01 +08:00
youpaishidifu 697b1069a2 PVP四项改进:回声碎片CLI入口/击杀≥10奖励盔甲药水/世界击杀纳入总榜/选装前无敌 2026-07-13 12:28:13 +08:00
youpaishidifu c7cdb60b47 修复边框粒子卡死主线程:动态密度控制+粒子总量上限 2026-07-13 12:00:27 +08:00
youpaishidifu 7489c60286 新增领地方块/容器记录系统(回声碎片)与背包滚动自动备份
- 新增 land_block_log、land_container_log、inv_backup_auto 三张表
- LandRecordManager:领地内方块破坏/放置、容器打开/拿取自动记录;回声碎片工具右键/左键查询坐标历史记录
- AreaGUIManager 主菜单新增回声碎片按钮(位置33)
- InventoryAutoBackup:每15分钟滚动备份在线玩家背包(每人保留3份),跳过PVP竞技场/练习场
- 每日定时清理超过7天的领地记录
- AreaProtection 钩子接入记录;注册 /landrec 命令
2026-07-13 10:26:05 +08:00
youpaishidifu 8ce2e727bb 领地改名和入场退场消息接入URL过滤逻辑
- 领地改名:输入新名字前先检测URL,包含链接则拒绝且不计入改名次数
- 入场/退场消息:设置消息前先检测URL,包含链接则拒绝且不保存
- 复用ChatFilterManager.extractUrls()统一过滤逻辑
2026-07-13 09:43:21 +08:00
youpaishidifu e7402985d5 修复封禁广播Long拆箱NPE + syncBans/syncAdmins改POST避免URL超长
- handleBanCommand中long expireMs→Long expireMs,避免null拆箱异常
- syncBans/syncAdmins从httpGet改为httpPost,防止55条封禁数据URL过长
- sync.php已部署含sync_bans/sync_admins case的版本到线上
2026-07-13 00:35:09 +08:00
youpaishidifu c0ab91edba R23-2: 封禁同步彻底修复 - syncBans独立hash+控制台ban监听+插件ban即时同步PHP 2026-07-12 23:45:59 +08:00
youpaishidifu 529b83666c R23: 修复4项问题 - 改名冷却逻辑(仅达上限才提示冷却) + 拦截原版/ban、/ban-ip命令广播封禁警告 2026-07-12 23:08:32 +08:00
youpaishidifu 569611c40f 新增3个功能:领地改名冷却、封禁名单联控、封禁广播警告
1. 领地改名冷却机制:1小时限5次,自然滚动窗口
   - AreaProtection: renameLand/renameCooldownMap/getRenameCooldown/getRemainingRenames
   - CLI: /protect cli rename <领地名> 交互式输入
   - GUI: Name Tag按钮(slot 33)显示冷却状态
   - 改名更新DB+内存+触发PHP同步

2. PHP用户管理显示封禁名单(联控Java BanList)
   - WebManager.syncBans(): 收集Bukkit名字/IP封禁→推送到PHP
   - PHP: web_player_bans表 + handleSyncBans + list_bans API
   - admin.php: 用户行红色+禁图标标注被封禁玩家

3. 封禁事件公屏广播警告
   - Main.applyBan(): 封禁后自动广播
   - broadcastBanWarning(): 玩家名+IP(如IP封禁)+理由+到期时间
   - loadBanWarningMessage(): 从释放警告消息.txt随机读取标语
   - 支持永久封禁/限时封禁/IP封禁3种场景
2026-07-12 22:08:38 +08:00
youpaishidifu 61e4ec967f 修复公告消息取消功能:取消后返回主菜单而非编辑子页
cancel路径showAnnouncementManagement(p, landName, 2/3)会重新设置pending输入状态,导致取消后仍停留在等待输入状态。改为showAnnouncementManagement(p, landName, 1)返回主菜单
2026-07-12 21:07:06 +08:00
youpaishidifu 57788016a4 修复占位符括号+tag管理员CLI权限视图
1. 变量替换正则新增{}花括号支持,支持领地名和领地两种写法
2. CLI showPlayerPerm:tag管理员(isAdmin)查看管理员成员时看到完整权限编辑视图,不再简化;可切换管理员身份
2026-07-12 20:58:21 +08:00
youpaishidifu ad935cbe09 修复4个bug:权限/颜色渲染/换行符/取消功能
1. toggleAdmin:插件管理员可操作非自身领地的管理员身份
2. formatAreaMsg颜色渲染:convertHtmlTags新增activeColor追踪,标签关闭§r后自动恢复颜色码,解决<span style=color>嵌套<b><u>标签时颜色在闭合处截断的问题
3. 变量替换正则改为Pattern.compile+DOTALL,确保跨行匹配
4. handleAnnouncementInput新增取消/0支持,输入取消或0时保持原样
2026-07-12 20:32:50 +08:00
youpaishidifu ae94f8edef 插件管理员可协助管理其他领地成员权限
- GUI领地列表:tag管理员可见所有领地,点击索引修正(allManageableLands替代getLandsByOwner)
- openPlayerPerm:tag管理员(isAreaAdmin)看到完整权限编辑视图,不再简化
- CLI showPlayerPerm:设为管理员按钮对tag管理员也可用
- WebManager:新增syncAdmins(),将tag管理员名单同步到PHP的web_plugin_admins表

需要PHP端配合:land_api.php新增canManageLand/isPluginAdmin逻辑
2026-07-12 19:45:51 +08:00
youpaishidifu 9af6c0cca0 feat: GUI领地公告出入消息配置 + 增强HTML语义解码
1. GUI设置面板新增进入消息(位置19)和离开消息(位置21)编辑入口,点击关闭GUI后聊天栏输入
2. AreaCLIManager新增setPendingAnnouncementInput供GUI调用
3. 新增decodeHtmlEntities: &amp; &lt; &gt; &quot; &apos; &#39; &nbsp;等HTML实体解码
4. 新增processColorTags: 支持<span style='color:#xxx'>和<p style='color:xxx'>颜色标签
5. htmlToMc增强: 支持<strong><em><ins><del><strike>等语义标签
6. 新增convertHtmlColorToMc/convertRgbToMc: HTML颜色名/十六进制/rgb()→MC颜色代码
2026-07-12 18:41:48 +08:00
youpaishidifu 49ad056a71 fix: 退出领地立即清除效果,不再依赖5秒延时
根因:playerMarkedEffects标记不可靠(hotUpdateRegionEffects会清空、
applyRegionEffects可能跳过添加),导致离开时marked为空→无延时任务→效果残留

修复:
1. 移动退出到野外:直接从oldAc.giveEffects读取效果列表,立即removePotionEffect
2. 传送到野外:同上逻辑
3. 领地→领地跨区域仍保留5秒延时差量清理
2026-07-12 18:27:38 +08:00
youpaishidifu c0bb962a11 feat: Token泄露PHP联控作废 + 领地公告变量替换
1. Token安全防线:Java revokeToken异步调用PHP sync.php revoke_weblogin_token端点,从weblogin_tokens表删除
2. PHP新增revoke_weblogin_token action:验证SECRET_KEY后删除weblogin_tokens中的记录
3. 领地公告变量替换:支持(玩家)/(领地)及[]{}【】<>《》等括号格式
4. 默认消息:进入=欢迎(玩家)来到(领地),离开=感谢(玩家)光临(领地)
5. 公告管理菜单显示变量说明和支持的括号格式
2026-07-12 17:43:23 +08:00
youpaishidifu 0db237ed04 feat: 公屏泄露webtoken自动作废安全防线
1. 玩家在公屏发送有效的48位hex token时,立即作废该token
2. 向玩家发送安全警告,提示不应分享token
3. WebManager新增revokeToken/hasToken方法
2026-07-12 17:05:56 +08:00
youpaishidifu 5d994c0dad feat: 领地边框粒子特效 + 强制游戏模式仅管理员可用
1. 进入/离开领地时展示3秒边框粒子(青色渐变DUST_COLOR_TRANSITION + 四角END_ROD高亮)
2. /protect info执行时展示5秒领地边框粒子
3. GUI强制游戏模式开关改为仅服务器管理员可操作(领地主不可操作)
2026-07-12 16:45:22 +08:00
youpaishidifu 0ff79aa959 实现在移动事件中实时热更新增益效果:新增hotUpdateRegionEffects方法,玩家在领地内移动时每2秒自动对比效果配置,实时增删缺失/多余效果,无需退出重进 2026-07-12 14:52:49 +08:00
youpaishidifu fa4402d426 修复增益效果不生效+完善所有药水效果中英文映射:resolveEffectType改用PotionEffectType常量替代不可靠的getByName兜底,支持所有MC版本 2026-07-12 13:03:48 +08:00
youpaishidifu 2fb801a59b 修复再生效果不生效:resolveEffectType缺少再生/回复中文别名映射 2026-07-12 12:19:24 +08:00