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: & < > " ' ' 等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 |
|
youpaishidifu
|
69868a4c5c
|
修复PHP添加增益效果后游戏内等级错误:applyFieldToAreaConfig的give_effects改用parseEffectsString替代已损坏的parseJsonArray
|
2026-07-12 11:41:26 +08:00 |
|
youpaishidifu
|
4888bb414e
|
修复: syncLandData权限hash漏算permissions导致成员权限变更不触发同步
perms hash 段原仅含 land_id/player_name/role,未包含 permissions 字段内容,
导致游戏内修改成员权限后 hash 不变、不触发 syncPermissions 推送到 PHP。
现把 permissions 内容加入 hash 计算(含 | 分隔符),成员权限变更可正确同步。
|
2026-07-12 10:29:43 +08:00 |
|
youpaishidifu
|
912bd62201
|
R16: 修复回调重试+SSL降级: callbackAddVisitorToPHP失败时尝试HTTP降级
|
2026-07-11 18:10:21 +08:00 |
|
youpaishidifu
|
0bd4d454c3
|
R15: PHP添加成员改为Java验证后入库(参考改领地主流程)
- add_visitor处理先验证玩家是否存在(login.db),存在则入库+回调PHP成功,不存在则回调PHP失败
- 新增callbackAddVisitorToPHP方法回调PHP添加成员结果
|
2026-07-11 15:53:00 +08:00 |
|
youpaishidifu
|
bf32e528f1
|
R14: 修复Java→PHP权限同步缺失(hash不含权限数据导致跳过同步)
- syncLandData hash加入权限数据特征,确保权限变化时触发同步
|
2026-07-11 15:10:51 +08:00 |
|
youpaishidifu
|
5ef86ddfe8
|
R13: 修复addvisitor校验+PHP权限同步完整流程
- /protect addvisitor 命令添加玩家真实性校验(login.db检查)
- addvisitor/handleAddMemberInput 同时写入area_land_permissions表
- perm_change handler 确保玩家加入areaPlayerWhitelist(解决PHP同步不显示问题)
- PHP端handleChangeVisitorRole 新成员改走add_visitor流程(确保Java白名单同步)
|
2026-07-11 14:19:01 +08:00 |
|
youpaishidifu
|
e08a6bc4c7
|
修复领地权限系统4大bug:DB列缺失+成员不同步+管理员继承+login.db校验
1. AreaProtection.updateVisitorPermFromWeb: INSERT语句去掉不存在的land_name/synced_at列,修复"table area_land_permissions has no column named land_name"
2. AreaProtection.removePlayerFromAreaWhitelist: 移除成员时同步删除area_land_permissions记录,确保admin身份一并清除,不再继承
3. AreaProtection.removeLandMember: GUI移除成员也同步删除area_land_permissions
4. AreaProtection.insertLandPermission: 新增公共方法,PHP添加成员时写入权限表
5. AreaProtection.handlePendingAddMemberInput: 添加成员前校验login.db(DatabaseManager.userExists),拒绝不存在的玩家
6. WebManager: 新增add_visitor/remove_visitor变更类型处理,PHP添加/移除成员后Java自动同步白名单+权限表
|
2026-07-11 13:36:26 +08:00 |
|
youpaishidifu
|
5ec61a1d2e
|
修复PHP→Java权限同步断裂:内存缓存不刷新+syncLandData改POST
1. AreaProtection.updateLandFieldFromWeb: 新增applyFieldToAreaConfig()直接更新内存AreaConfig(原reloadAreaConfigFromDb只重载area_config全局表,不碰area_lands领地权限)
2. WebManager.syncLandData: GET改POST(JSON body)解除URL长度限制
3. WebManager.syncLandData: hash补全遗漏字段(9个)确保所有变更能触发同步
|
2026-07-11 12:21:32 +08:00 |
|
youpaishidifu
|
8c1e1a89bd
|
修复PHP↔Java领地同步断裂:GET改POST+补全hash漏检字段
根因:syncLandData用GET发送全部领地JSON到sync.php,超URL长度限制→静默失败→PHP永远收不到Java的权限/效果变更。
1. WebManager.syncLandData: 领地同步从httpGet改为httpPost(JSON body),解除URL长度限制
2. WebManager.syncLandData: hash补全遗漏字段(allow_visitor_teleport/confiscate_items/deny_use_items/punish_commands/peace_whitelist/mode_exempt/enable_announce/announce_template/txt_content),确保这些字段变更能触发同步
3. PHP sync.php syncLands(): 已兼容POST JSON body(getParam从php://input读取)
|
2026-07-11 11:57:22 +08:00 |
|
youpaishidifu
|
bc155526ab
|
止住效果解析刷屏:加强JSON解析、去除残留反斜杠、同一名称只警告一次
1. AreaProtection.resolveEffectType: 解析前去除首尾空白/引号/反斜杠,识别\试炼之兆等残留转义名
2. AreaProtection.splitToList/parseEffectsString: 用正则提取JSON字符串并unescape \ " \/ \b \f \n \r \t 及 \uXXXX
3. 新增UNKNOWN_EFFECT_WARNINGS集合,同一名称只打印一次[防护]无法识别效果,避免控制台持续刷屏
|
2026-07-11 11:11:59 +08:00 |
|
youpaishidifu
|
4ae1589883
|
修复Web通信禁用仍轮询+PVP远程武器与击杀奖励+修复splitToList编译错误
1. WebManager: 5个合并定时器(A/B/C/D/E)新增enabled运行时守卫,Web通信关闭后立即停止请求web配置地址;reloadWebConfig支持运行时启停定时器
2. PVPTestManager: 测试场新增弓/弩二选一(默认弓)默认装备,完成一波击杀发放16牛排补血
3. PVPArenaManager: 正式场新增弓/弩二选一(默认弓)默认装备+GUI切换,每2次杀敌发放16牛排补血
4. AreaProtection: 修复splitToList中[\""未结束字符串字面量导致的编译失败
|
2026-07-11 01:04:32 +08:00 |
|
youpaishidifu
|
9121bb069d
|
修复PHP权限同步游戏:1.updateLandFieldFromWeb白名单补充is_public_building/allow_visitor_teleport;2.updateVisitorPermFromWeb支持PHP显式角色切换(admin↔member↔visitor)
|
2026-07-10 23:16:32 +08:00 |
|
youpaishidifu
|
d306431c55
|
修复两大关键bug:1.saveAreaToDb参数绑定从位置32开始整体偏移一位导致权限保存到错误列(权限回滚根因);2.onDisable取消所有定时任务解决async task未关闭警告
|
2026-07-10 21:32:08 +08:00 |
|
youpaishidifu
|
0354156eec
|
新增载具乘坐拦截:VehicleEnterEvent处理器,层级为L2实体交互→L3骑乘(denyMount),与放置/破坏权限统一
|
2026-07-10 21:01:19 +08:00 |
|
youpaishidifu
|
aa8b7ce47a
|
修复实体破坏防护:新增载具与悬挂物权威破坏事件拦截(VehicleDestroyEvent/HangingBreakEvent),统一 L1破坏总开关→L2实体交互 层级,区域取法统一为实体坐标优先
|
2026-07-10 19:55:56 +08:00 |
|
youpaishidifu
|
483acbdbb6
|
修复领地权限系统:新增实体交互二级权限,并修复领地数据保存因重复列导致落库失败的问题
|
2026-07-10 19:08:18 +08:00 |
|
youpaishidifu
|
0775f2e84d
|
fix(core): restore PHP sync disabled for debugging; root cause confirmed as INSERT OR REPLACE id change
|
2026-07-10 15:29:03 +08:00 |
|
youpaishidifu
|
ebd26ee123
|
fix(core): saveAreaToDb 的 INSERT OR REPLACE 导致自增 id 变更,切断 area_land_permissions.land_id 引用
|
2026-07-10 15:22:47 +08:00 |
|
youpaishidifu
|
0ff274896a
|
修复测试场/back返回不刷怪:startTest未写入chosenDiff/chosenEquip;注释领地PHP同步排查权限强制同步bug
|
2026-07-10 13:42:23 +08:00 |
|
youpaishidifu
|
f345f60ac0
|
修复PVP测试场强制选装:进入测试世界必须选装备,关闭2次GUI遣返主世界;/back禁止传送至测试世界
|
2026-07-10 13:17:00 +08:00 |
|
youpaishidifu
|
babbe8936a
|
修复: PVP/测试场护甲穿戴顺序修正+强制穿戴到装备槽
- PVPTestManager.giveEquip: ARMOR_SETS[头盔,胸甲,护腿,靴子] 反转为 setArmorContents 期望的 [靴子,护腿,胸甲,头盔]
- PVPArenaManager.equipFullSet: addItem → setArmorContents,护甲自动穿戴到装备槽而非放在物品栏
|
2026-07-10 12:52:44 +08:00 |
|
youpaishidifu
|
0e0d6c6247
|
修复: 领地管理员永不被PHP perm_change降级 + 测试场KEEP_INVENTORY=false
- AreaProtection.updateVisitorPermFromWeb: admin角色永远保留, perm_change只更新permissions JSON不动role
- PVPTestManager: KEEP_INVENTORY从true改为false, onPlayerDeath不再直接clearInventory, 改由onRespawn统一还原
|
2026-07-10 12:18:46 +08:00 |
|
youpaishidifu
|
c6d0222c1e
|
修复: setPlayerPermJson保留已有角色+PVP测试场死亡清空装备
- AreaProtection.setPlayerPermJson: ON CONFLICT替代INSERT+UPDATE两步, 新行默认visitor(非member), 已有行仅更新permissions保留role
- PVPTestManager: 新增onPlayerDeath清空测试装备掉落+setKeepInventory(false), 死亡界面不再显示测试装备
防止玩家死亡后快速重连/返回时携带测试场装备
|
2026-07-10 11:58:23 +08:00 |
|
youpaishidifu
|
2bdb577c89
|
修复: 领地权限拦截船/矿车等实体放置和破坏
|
2026-07-10 11:23:10 +08:00 |
|
youpaishidifu
|
b29284bb1b
|
修复: Java端调整访客权限误降级管理员+PVP/测试场装备隔离
- AreaProtection.updateVisitorPermFromWeb: 拦截PHP发来member角色时降级admin
- Web/api/sync.php: syncPermissions ON CONFLICT替代INSERT OR REPLACE防角色降级
- Web/api/land_api.php: handleSyncPermissions同上
- PVPTestManager: respawn立即恢复背包, join时空降检测恢复
- PVPArenaManager: 入场立即备份清空背包, respawn时恢复+送出PVP世界
|
2026-07-10 10:58:55 +08:00 |
|
youpaishidifu
|
97d96d747d
|
测试场GUI改直选式+领地权限降级拦截与全链路日志+backup保留3份修复
- PVPTestManager: openGUI/handleClick 重写为直选式(武器/护甲/难度/场景/食物直接点选),对齐正式场 PVPArenaManager
- AreaProtection: updateVisitorPermFromWeb 加端到端 info 日志(land/player/localRole/effectiveRole),追踪已授权用户被同步访客问题
- land_api 联动: handleChangeVisitorRole 修复$permRow未定义,新增 admin/member 降级为 visitor 的拦截
- WebManager: perm_change 路由按 changeData 是否含 player 区分 target/player
- DatabaseManager: 背包备份由子查询LIMIT改为先查后删,修复仅保留最新一份
|
2026-07-10 01:33:38 +08:00 |
|
youpaishidifu
|
2c9aa6bd8e
|
修复领地主调整访客权限时管理员身份丢失:Web端perm_change现同步role到本地,且updateVisitorPermFromWeb不降级已授权管理员
|
2026-07-10 00:15:53 +08:00 |
|
youpaishidifu
|
89b3167d67
|
修复附魔书显示名罗马数字V解析失败:ROMAN_PAT无法匹配单独V,导致锋利V等五级附魔书被发成一级
|
2026-07-09 23:21:27 +08:00 |
|
youpaishidifu
|
2e869a1c94
|
修复测试场和平模式不刷怪:测试场难度提为非和平改为权威helper(创建/开始/离场三处调用),不再依赖startTest入口
|
2026-07-09 23:15:08 +08:00 |
|
youpaishidifu
|
9d8d70f63f
|
修复竞技场断线重进绕过公平限制(上线遣返出生点);backup命令放开控制台执行(支持指定玩家);测试场装备自由选武器/护甲档位;食物shift点击±16
|
2026-07-09 22:59:48 +08:00 |
|
youpaishidifu
|
e03db026b9
|
修复PVP竞技场/测试场掉线覆盖主背包:主备份改保留最近3份且竞技场内跳过写入,新增/sdf1_login backup玩家自助还原(最近3份任选)
|
2026-07-09 22:29:02 +08:00 |
|
youpaishidifu
|
36b8192dc9
|
测试场装备对齐主场(可调熟牛肉/去金苹果)并禁止玩家互殴,只能打练习生物
|
2026-07-09 22:28:56 +08:00 |
|
youpaishidifu
|
2c12bbde8b
|
PVP装备系统改版:铁剑+铁斧+可选盾牌+可选附魔(锋利V+击退II),移除护甲;PVP竞技场首位玩家定死附魔后续仅可调盾牌与熟牛肉数量;测试场全员自由选
|
2026-07-09 21:59:11 +08:00 |
|
youpaishidifu
|
9b725791aa
|
封堵容器管理禁用时访客越权开箱
onInventoryOpen 在 denyContainer=false 时直接放行所有人,
导致完全无领地权限的外部玩家也能开箱。
现于 denyContainer 判定前拦截 getPermissionLevel 返回 null 的未授权玩家,
一律禁止访问容器;VISITOR 成员行为不变。
|
2026-07-09 20:58:02 +08:00 |
|
youpaishidifu
|
0b8feab3e5
|
修复领地管理员越权:setadmin改为限领地+OP认全局
- 根因:/protect setadmin|unsetadmin 给玩家加全局 ScoreboardTag(areaProtectAdminTag),使其在所有领地拥有管理员权限(跨领地越权);而 isAreaAdmin 又不认 OP,导致 OP 反而无全局权限
- 修复1: isAreaAdmin(Player) 增加 player.isOp() 判定,OP 即真正的全局领地管理员
- 修复2: setadmin/unsetadmin 改为限领地: /protect setadmin <领地名> <玩家> 仅在该领地写 role='admin'(DB),不再授予全局标签;unsetadmin 同理并兼容清除旧版遗留的全局标签
- getPermissionLevel 第3步 isLandAdmin(ac.name,...) 本就限领地,无需改动;GUI toggleAdmin 路径(归属校验+限领地)本就干净
- 注释更新:领地管理员严格按领地限定,绝不跨领地生效
|
2026-07-09 20:45:27 +08:00 |
|
youpaishidifu
|
4c100a0c9f
|
PVP测试场:改为全清后才间隔10秒刷,全清给可点击回床链接
- 撤掉每10秒无脑刷的全局定时器,改为事件驱动:监听 EntityDeathEvent 反查练习生物所属玩家
- 玩家清空当前波次(无存活练习生物)后:发送提示 + 可点击超链接[/pvp back 返回床],并排程10秒后刷下一波
- 新增 mobOwner 反查表 + pendingRespawn 防重复排程;退场(离开/死亡/退出/跨世界)均清理 pendingRespawn
- /pvp back 子命令:在测试场先清理还原背包,再传送至床(出生点),无床则回主世界出生点
- checkAllLeft 改为无人时还原测试场难度(和平模式临时提困难语义保持)
|
2026-07-09 20:30:38 +08:00 |
|
youpaishidifu
|
5fa12cddbf
|
PVP测试场:修复和平模式刷怪 + 死循环刷怪 + 回血食物
- 和平模式修复:主世界为和平时,有人在场则临时把测试场难度提为困难(HARD),保证亡灵生物不被移除;主世界非和平则跳过
- 死循环刷怪:Bukkit runTaskTimer 每10秒一波,遍历所有在场玩家各补一波
- 单场景(近战/远程)每组3只;混合场景每组6只(3僵尸+3小白)
- 全部退场自动停刷怪并还原测试场难度为当前主世界难度
- 加单玩家存活上限(30)安全阀,防止无限堆积卡服
- 回血食物:进入即发放金苹果x16 + 熟牛肉x32
- AttributeModifier 改用非过时3参构造(String,double,Operation)
|
2026-07-09 20:15:29 +08:00 |
|
youpaishidifu
|
0ae5c8d16e
|
改用无限耐久帽子免疫太阳灼烧(替换防火效果)
- 撤销练习生物 FIRE_RESISTANCE 效果(实测仍灼烧)
- 改为给每只练习生物(僵尸/小白)戴一顶 Unbreakable 皮革帽:
原版机制下亡灵生物有帽子时太阳灼烧先耗帽耐久,帽子永不复破即永久免灼烧
- 用 Attribute.ARMOR 属性修正(-1)抵消皮革帽自带1点护甲,纯挡太阳不增加伤害减免
- 帽子 setHelmetDropChance(0) 不会被打掉
|
2026-07-09 19:56:55 +08:00 |
|
youpaishidifu
|
d7afdd2a47
|
修复PVP测试场亡灵生物白天被太阳灼烧(SUNBURN)的bug
- 生成练习生物(僵尸/小白)时挂载长时效防火(PotionEffectType.FIRE_RESISTANCE)效果
- 防火直接免疫太阳灼烧的着火伤害,亡灵生物不再白天自燃
- 仅作用于测试场练习生物,不影响玩家与其他世界
|
2026-07-09 19:46:09 +08:00 |
|
youpaishidifu
|
ac92cdb31e
|
新增PVP练习测试场(pvp_test独立世界)与完善/pvp命令补全
- 新增 PVPTestManager:首次加载预生成30x30露天FLAT世界(pvp_test),worldborder边界+玻璃围墙+关闭自然刷怪
- /pvp test 打开GUI面板选择难度(简单/中等/噩梦)与装备(近战/远程/混合)
- 开始:备份背包、发放装备、传送、生成40血僵尸/小白(近战=僵尸/远程=小白/混合=两者)
- 难度固定伤害:简单(僵尸4/小白2)、中等(僵尸4/小白3)、噩梦(僵尸8/小白7)
- 噩梦难度被玩家击中随机走位;测试场敌对生物互不攻击(取消mob→mob目标与伤害、小白箭不伤友军)
- /pvp命令补全补齐 join/leave/exit/test 一级子命令
- /pvp leave|exit 统一经 Main.leavePVP 路由(测试场优先,否则竞技场)
|
2026-07-09 19:36:29 +08:00 |
|
youpaishidifu
|
4812c093ea
|
将 /ban-ip 命令重命名为 /banip,避免与原版 ban-ip 冲突
- plugin.yml 命令名 ban-ip → banip,usage 同步更新
- Main.onCommand 分发与 doBanIp 用法提示同步改为 /banip
- ChatFilterManager 内转发原版 ban-ip 自动封禁的逻辑保持不变(本就调用原版命令)
|
2026-07-09 18:09:18 +08:00 |
|
youpaishidifu
|
9916968152
|
新增 ban-ip/tempbanip 封禁命令与 whois/who 查询命令
- 新增 /tempbanip:临时封禁IP或玩家,与 /tempban 共用实现
- 新增 /ban-ip:永久封禁IP或玩家(支持 永久/forever/perm 标识)
- /tempban 与 /tempbanip 统一支持名字或IP,无需专门区分地址类型
- 新增 /whois:玩家自查(注册时间/最近登录/登录IP/禁言状态/理由/效期),
普通玩家仅可查自己,OP或插件tag管理员或控制台可查指定玩家,
唯独控制台禁止不带参数
- 新增 /who:查看在线玩家列表,限 OP/插件管理员/控制台
- ChatFilterManager 新增 getMuteExpire 取当前仍有效的禁言到期时间戳
- 封禁与查询权限统一采用 isPrivileged(OP + 插件tag + 控制台)
|
2026-07-09 17:51:12 +08:00 |
|
youpaishidifu
|
41d8ffce3d
|
新增/tempban临时封禁、/chat mute禁言、异地登录检测与账号冻结解冻
- DurationParser: 通用时长解析(时间戳/日期/相对时长)
- /tempban: Bukkit原生封禁(1秒~10年)
- ChatFilterManager: 持久化禁言(muted_until)+loadMutes启动加载
- 异地登录检测: onJoin异步通知PHP比对IP归属(ip9.com.cn)
- freeze/unfreeze: web_admin_changes通道执行/解除Bukkit原生封禁
- PVPArenaManager: 移植PVP全服连杀/终结播报逻辑
- DatabaseManager/plugin.yml: 风控列 + tempban命令注册
|
2026-07-09 17:09:35 +08:00 |
|
youpaishidifu
|
2e417c67b3
|
调整商店出售限额为部分出售,并修复单件附魔书NBT重建
- 出售限额改为部分出售:超出限额只卖限额内部分,背包剩余不动
- sellItem/sellAllOf 引入 getMaxSellableUnits 计算可卖单位数
- 新增 removeItemsOfMaterial 按材质精确移除指定数量,保留背包剩余
- 修复单件PHP购买附魔书(itemStack为null)按商品ID权威重建NBT,避免整单退款
|
2026-07-09 13:59:11 +08:00 |
|
youpaishidifu
|
626fbcd591
|
附魔书NBT:移除空壳兜底,解析失败则整单取消并退款(含单笔购买退款)
|
2026-07-09 13:32:50 +08:00 |
|
youpaishidifu
|
e4e74f1cb8
|
修复三处Bug:附魔书NBT空壳(ID权威重建)、PVP死亡榜世界未销毁不清战机、TPA processedRequests永不清导致秒过期
|
2026-07-09 13:15:57 +08:00 |
|
youpaishidifu
|
8fd5b06960
|
修复雪球菜单可被丢弃导致永久丢失的问题
- 新增 PlayerDropItemEvent 拦截:玩家主动丢弃菜单雪球时取消丢弃并提示,雪球留在手中
- 调整 EntityPickupItemEvent:仅阻止生物(如恶魂)拾取菜单雪球,允许玩家自身拾取,避免任何掉落路径导致永久丢失
|
2026-07-09 11:17:06 +08:00 |
|
youpaishidifu
|
70bbdba16d
|
修复附魔书材料匹配失败+购物车发货失败自动退款
- ShopManager: .md加载时对附魔书ID格式(material无效但id像MENDING_I)容错默认ENCHANTED_BOOK,不再静默跳过
- WebManager dispatchItemByMaterialOrId: 增加方式3附魔书兜底(名称含附魔关键词时直接getShopStackByName)
- WebManager shop_cart: 发货跟踪failedItems列表,任一商品失败→不confirm交易+writeRefundTransaction写回PHP退款
- WebManager: 新增writeRefundTransaction方法通过sync.php写退款记录
- PHP sync.php: 新增write_shop_refund action(接收Java退款请求,恢复bond_cache+写refund交易+标记原交易refunded)
- PHP shop.php buy_cart: 扣款前验证每件商品material有效性(防止扣款后无法发货)
|
2026-07-09 10:54:35 +08:00 |
|
youpaishidifu
|
dfd8fee381
|
优化PVP世界创建:关闭结构生成+简化安全出生点,消除主线程长时卡服
- createPVPWorld: 加 c.generateStructures(false),去除村庄/神庙/矿洞等结构生成(出生点搜索时单区块十几秒卡死的主因);hill/water/cave/tree 自然地形特征不受影响
- forceSafeSpawn: 删除半径8广域扫描(289列同步区块生成),改为仅检查Minecraft已生成的(0,0)出生列,不安全才原地搭3x3小平台(O(1)零额外生成)
- 预生成半径 4->2(25区块),进一步缩短主线程占用
|
2026-07-09 00:37:12 +08:00 |
|
youpaishidifu
|
7a14457713
|
修复PVP装备确认后被误遣返及榜单残留
- onInventoryClose: 关闭事件判定同时检查 equipmentConfirmed,避免确认装备后 selectedTier 已移除导致误判未选择而遣返
- 遣返路径补 cleanupPlayerStats(player),修复回到主世界仍携带PVP榜单
- joinArena: createPVPWorld 移入 runTask 下一tick执行,/pvp join 命令即时返回,不再冻结命令线程
|
2026-07-09 00:18:49 +08:00 |
|
youpaishidifu
|
a8451a4ccf
|
修复PVP chunk预生成:异步改同步分批,消除AsyncCatcher全拦截
- preGenerateSpawnChunksAsync: runTaskAsynchronous → runTaskTimer 同步分批(每tick一行chunk)
- 原因:Paper AsyncCatcher 强制要求 chunk 操作在主线程,原异步方案导致81个区块全部失败
- 新方案:radius=4 时 9 tick 完成(每行 9 chunk),均摊不冻服,自取消用 BukkitTask[] 闭包
- 日志清理:SFTP /logs 删除50个6月旧日志,保留59个7月日志
|
2026-07-09 00:05:10 +08:00 |
|
youpaishidifu
|
2df8c44cda
|
传送请求改为纯内存存储并改用JVM运行时长计时
- TeleportManager: 移除 saveTeleportRequest 及全部 DB 读写回退,传送请求仅驻留内存
- 计时改用 ManagementFactory.getRuntimeMXBean().getUptime() 单调钟,不再依赖墙钟时间戳
- 新增 teleportRequestTypes 内存映射记录 tpa/tpahere/tpaall 类型,移除时同步清理
- DatabaseManager: 删除不再使用的 teleport_requests 表
|
2026-07-08 23:49:47 +08:00 |
|
youpaishidifu
|
46a3dc2515
|
修复传送请求过期key不对称:incoming循环/清理统一为sender:receiver,确保接收方请求能被定时器正常清理
|
2026-07-08 23:17:13 +08:00 |
|
youpaishidifu
|
9fab58afe8
|
修复:回退PVP异步创建世界(改用主线程NORMAL避免IllegalStateException崩溃),保留真实自然地形
|
2026-07-08 23:00:50 +08:00 |
|
youpaishidifu
|
33ea4292b7
|
修复PVP地形与日志:改回NORMAL真实自然地形(异步创建避免主线程卡服),ConfigManager改用Bukkit.getLogger()消除System.out警告
|
2026-07-08 22:50:58 +08:00 |
|
youpaishidifu
|
f4c5c0049a
|
修复PVP加入卡服(13s看门狗)并新增公共设施连控权限
- PVP世界改由 WorldType.FLAT 空世界+手动地形生成:createWorld 毫秒级返回,
彻底杜绝主线程13s卡服与 Chunk wait 看门狗报错;随机种子仍保证每次地形不同(防背图);
新增 forceSafeSpawn 固化安全出生点,绕开原'水→删除重建换种子'卡服链路
- 公共设施连控:领地 isPublicBuilding 启用时,所有访客自动获得 传送/容器交互/攻击敌对生物
3项权限(传送在 canTeleportToLand,容器交互在两处 denyContainer 检查,攻击敌对生物复用既有逻辑)
|
2026-07-08 20:58:41 +08:00 |
|
youpaishidifu
|
ee22930efd
|
第20轮修复:①移除WorldCreator.keepSpawnInMemory(false)(Paper26.x已移除此API,导致/pvp join NoSuchMethodError崩溃)②访客授权GUI/CLI补全传送权限(openVisitorPerm/getPermList/toggle三处均缺传送项,导致4页翻完无传送选项);AreaConfig新增allowVisitorTeleport字段+DB自动迁移ALTER TABLE+canTeleportToLand检查该字段
|
2026-07-08 20:41:09 +08:00 |
|
youpaishidifu
|
612ec7a66b
|
第19轮PVP修复:彻底移除模板世界方案(unloadWorld删目录导致无法加入),改为每次随机种子createWorld+出生点实体方块校验(水/空气等非实体则删除重来换种子),预生成区块改为异步不卡服;防背图逻辑恢复为玩家离开删世界、加入时非实体出生点自动换种子
|
2026-07-08 20:14:36 +08:00 |
|
youpaishidifu
|
b6fb3c3ab2
|
第17轮修复4问题:①PVP模板世界改为懒加载(从onEnable移除,首次/pvp join时按需生成,消除启动卡50秒)②修复模板不存在导致无法加入PVP(ensurePVPTemplates先创建成功再加列表+复制前校验目录存在+递归重试)③confirmTransaction改同步调用+本地confirmedTxIds去重+PHP超时60s→3600s三管齐下修复重启重复发货bug;PHP端pull_pending_transactions不再选中processing状态交易
|
2026-07-08 19:43:48 +08:00 |
|
youpaishidifu
|
5ed006538e
|
修复PVP战绩榜与卡服、领地传送权限:记分板改用1.21.4三参registerNewObjective,击杀事件改用DamageSource.getCausingEntity()替代已移除的getKiller();PVP世界改为模板复制避免实时生成地形卡服;领地新增传送权限控制(领地主/插件管理员/领地管理员无条件,未授权玩家需allowTeleport授权,CLI/GUI可授权);药水效果改用setBasePotionType
|
2026-07-08 19:27:11 +08:00 |
|
youpaishidifu
|
dec41c7b67
|
修复PVP加入崩溃 + 合并小票潜影盒(兼容中文标签)
1. /pvp join 崩溃(NoSuchMethodError: WorldCreator.keepSpawnInMemory):
运行时 Paper API 已移除 WorldCreator.keepSpawnInMemory(boolean),
移除该 Creator 调用,改由 reapplyWorldRules 的 World.setKeepSpawnInMemory(false)
(稳定方法)控制出生点区块不常驻,避免同步加载卡主线程,且不再抛 NoSuchMethodError。
2. 收银台不打包(塞背包)仍给小票潜影盒:
PHP(api/shop.php)推送小票时 settlement 误传中文标签(塞背包(环保单)/潜影盒打包),
导致 Java give_receipt_book 的 equals('backpack') 守卫不匹配而仍然单独发书。
修复:PHP 改传原始代码($settlement);Java 守卫同时兼容原始代码与中文标签
(含'潜影盒'/'背包'即拦截),双保险——两种结算模式均不再单独发放小票潜影盒
(打包:小票已在商品盒内;不打包:跳过发书)。
|
2026-07-08 17:34:04 +08:00 |
|
youpaishidifu
|
8b03ff4dcb
|
修复PVP崩溃/卡死 + 合并小票潜影盒 + ShopManager类缺失防护
1. PVP加入世界 WorldInitEvent 异步崩溃:createWorld 必须在主线程执行
(WorldInitEvent/WorldLoadEvent 仅允许同步触发)。改为主线程同步创建,
并通过 WorldCreator.keepSpawnInMemory(false) + 取消 reapplyWorldRules 的
setKeepSpawnInMemory(true),使 createWorld 不再同步加载出生点区块,
主线程毫秒级返回,彻底消除 Watchdog 卡死(上一版误用异步线程导致崩溃)。
移除无用的 pvpWorldCreating 异步互斥锁。
2. 收银台合并发货:打包(潜影盒)模式不再单独发放'小票潜影盒',
小票已塞入商品潜影盒内;不打包(塞背包)模式跳过发放小票书。
解决玩家拿到两个潜影盒(商品+小票 / 仅小票)的问题。
3. 构建时确保 ShopManager$1 等匿名内部类完整打入 JAR,避免 NoClassDefFoundError。
|
2026-07-08 17:06:14 +08:00 |
|
youpaishidifu
|
2f29f3beb1
|
修复PVP:选装备被误遣返 + 加入世界主线程卡死
1. 装备确认/一键装备分支关闭GUI前加 guiReopening 标记,
避免 Paper 延迟关闭事件在 selectedTier 已移除后误判为未选装备而遣返。
2. joinArena 的世界创建(Bukkit.createWorld 阻塞~8s)移到异步线程执行,
主线程仅负责传送与打开装备GUI,修复 Watchdog 卡死;
新增 pvpWorldCreating 互斥锁防止并发 /pvp join 重复创建世界。
|
2026-07-08 16:30:38 +08:00 |
|
youpaishidifu
|
2d84153571
|
订正NBT退款:移除散装退货退款路径中残留的旧签名调用,统一走OrderItem精确匹配收回实物
|
2026-07-08 15:25:57 +08:00 |
|
youpaishidifu
|
ebd35f5c1c
|
修复三处问题:1.PVP创建看门狗超时(预生成区块改异步非阻塞) 2.NBT商品快速退款仅退款(OrderItem携带NBT快照并精确匹配收回实物) 3.订单退款校验支持NBT精确计数
|
2026-07-08 15:19:00 +08:00 |
|
youpaishidifu
|
0eca13f5a1
|
修复PVP种子忽略/退款仅退钱/潜影盒小票丢失三问题
PVPArenaManager:
- PVP世界改为每次随机世界名(pvp_arena_<随机数>)+随机种子,彻底绕开Windows文件锁导致旧世界目录删不掉、复用旧小岛地形的问题
- 删除deleteExistingPVPWorldFolder,改用deleteWorldFolderIfExists(String) best-effort移入trash;15处PVP_WORLD_NAME引用改为动态pvpWorldName
- cleanupOldTrashWorlds前缀匹配改用pvp_arena_前缀
OrderManager:
- 修复管理员审批全额退款'两段处理'bug:原逻辑status提前变2导致退货分支永不可达,表现为只退钱不退货
- 改为status==0时同步收回物品(潜影盒按lore标签#orderId定位清除,普通物品按mat/qty移除)后再addBonds
WebManager:
- 修复打包发货小票落入被丢弃盒子副本:改为先addBookToShulker塞入首个潜影盒,再整体addItem进背包
|
2026-07-08 13:53:52 +08:00 |
|
youpaishidifu
|
e658aa3274
|
修复6项问题:#804菜单[玩家名]方括号占位符、#805 PVP装备选择宽限期防误遣返、#808收银台附魔书NBT重建、#809商店退货精确扣货
|
2026-07-08 12:34:44 +08:00 |
|
youpaishidifu
|
121c12c71d
|
修复3个问题:#801菜单玩家名中文占位符 #802 PVP种子被MC忽略 #803 .web.md同步PHP
#801 菜单控制台指令+玩家名变量(Main.java 两处处理器)
- 原代码只匹配英文 {player} 等模式,实际菜单用中文 {玩家名}
- 新增5种中文占位符支持:{玩家名} %玩家名% <玩家名> [玩家名] (玩家名)
- 控制台权限检测本身正常(日志确认走了console路径)
#802 PVP世界种子固定问题(PVPArenaManager.java createPVPWorld)
- creator.createWorld() 改为 Bukkit.createWorld(creator)(完整Bukkit管线更可靠处理seed)
- 新增种子验证:创建后比对期望种子 vs MC实际种子,日志明确报告是否匹配
- 种子不匹配时输出警告(Paper 26.x 已知行为,需观察 Bukkit.createWorld 是否解决)
#803 .web.md PHP专属商品同步(ShopManager.java buildCatalogJson)
- loadCategories() 继续跳过 .web.md(游戏内不加载,行为不变)
- buildCatalogJson() 新增第二遍扫描:单独读取 .web.md 文件并纳入同步JSON
- PHP 收银台现在能展示 .web.md 中的专属商品
|
2026-07-08 11:42:15 +08:00 |
|
youpaishidifu
|
7631e30e2a
|
修复: PVP显式随机种子(根除固定-5092种子) + 菜单控制台指令+玩家名变量 + 商店跳过.web.md(PHP专属商品)
- PVPArenaManager: createPVPWorld改用worldSeedRandom.nextLong()显式设定随机种子(用户实测连续多次createWorld返回相同种子-5092048402667366605);增加删除后验证日志(确认目录消失或告警)
- Main.java(两处菜单点击): 新增permType提取→控制台/console身份执行(Bukkit.getConsoleSender);玩家名变量替换{player}/%player%/<player>/[player]/(player)等所有括号形式
- ShopManager: loadCategories文件过滤器增加!.web.md条件,游戏内不加载.web.md文件(PHP端专属商品)
|
2026-07-08 10:57:46 +08:00 |
|
youpaishidifu
|
3c15e6b060
|
修复PVP地形被切小岛/出生点干预、药水NBT缺失,以及商店附魔书NBT解析
- PVPArenaManager: 删除forceTerraformSpawnArea等184行小岛死代码;新增deleteExistingPVPWorldFolder确保每次进入都是自然生成的纯净主世界(彻底消除旧版setSpawnLocation/小岛误加载);pvpEquipment与makePotion改用PotionMeta写入INSTANT_HEALTH真实治疗NBT(1.21.4 PotionType.HEALING)
- ShopManager: 新增ENCHANT_MAP与inferEnchantedBook,按中文名解析附魔等级并写入EnchantmentStorageMeta,商店附魔书现在带正确附魔NBT
|
2026-07-08 01:37:46 +08:00 |
|
youpaishidifu
|
3c3d7cdbf2
|
修复PVP世界逻辑:不再锁定出生点、去除删世界重建死循环、有玩家直接加入无人即删
|
2026-07-08 01:05:51 +08:00 |
|
youpaishidifu
|
caa58977a4
|
修复: green_discount语义从减免百分比改为折扣率(折数)——10不打折/9.9=9.9折(支付99%),命令/计算/显示文案全链路修正
|
2026-07-08 00:18:26 +08:00 |
|
youpaishidifu
|
e18587c432
|
修复: packmoney和green_discount全面支持小数(int→double,去掉Math.floor截断),PHP侧packmoney强转int改为float
|
2026-07-07 23:54:20 +08:00 |
|