更新记录
3.3.2.8 ~ 3.3.3.0 - 2024/11/12
可能有部分小变动未记录,但最主要的新增、修复、优化记录都在下方
修复 伤害反弹类 属性可能会导致双方相互无限反弹的情况
修复 移速加成 属性因负值属性导致报错问题
优化 玩家物品描述属性标签读取处理,优化相关处理
优化 AttributeManager 属性管理器中各类型属性的管理集合
新增 AttributeAPI 实体攻击方法
attackTo(entity, attacker, damage)
造成固定伤害方法:该方法
entity.damage(damage)
相比,该方法直接击杀目标击杀者会为 [attacker]建议各类真伤处理调用该方法,该方法造成的时候不会触发二次属性处理
新增 实体单体冷却中控器(针对非玩家实体) 实体死亡时将自动清除相关的冷却数据
在
AttrScriptUtils.kt
类中新增相关调用方法,可在属性脚本中调用Utils.hasEntityCooling(name, entity) 目标是否冷却中
Utils.hasEntityCooling(name, entity, time) 目标是否冷却中,未冷却则进入冷却
Utils.resetEntityCooling(name, entity) 重置目标冷却
新增 CUSTOM 自定义触发器属性类型
支持通过自定义 JavaScript 属性脚本编写该类型,脚本配置编写下面方法即可:
function runCustom(attr, caster, target, params, source, handle)
caster 触发者
target 触发目标(可为空)
params 触发器事件传入的参数
source 触发器此次事件对象
新版自带 3 种触发器,需要 SkillAPI 插件支持:
SKILL CAST(技能释放)
SKILL DAMAGE ENTITY(技能攻击非玩家实体)
SKILL DAMAGE PLAYER(技能攻击玩家实体)
注意 该类型属性需在
onLoad()
方法内调用setCustomTrigger(name: String)
方法设置该属性脚本的触发器名称,例如
setCustomTrigger("SKILL CAST")
JavaScript 用法示例:传送门
新增 CUSTOM 自定义触发器注册
附属开发者可通过
CustomTriggerComponent
类,自定义注册更多不同的触发器下面附带
SKILL CAST
属性触发器代码示例
3.3.2.7 - 2024/08/29
可能有部分小变动未记录,但最主要的新增、修复、优化记录都在下方
新增 AttrAttributeSourceAddEvent 玩家属性源新增事件
新增 AttrAttributeSourceRemoveEvent 玩家属性源移除事件
新增 %apcentral_base_<min/max>% 变量
获取某个属性值白值 (该数值不包含百分比加成属性源所加成的属性值)
新增 KILLER 属性处理类型,击杀目标时触发相关处理
支持通过自定义 JavaScript 属性脚本编写该类型,脚本配置编写下面方法即可:
function runKiller(attr, killer, entity, handle)
JavaScript 用法示例:传送门
新增 属性自定义计数器工具
可用于在属性处理中对某些数据进行计数
AttributeData.getCounter() 获取 counter 主控对象
相关方法:传送门
counter.getCounter(name, type)
counter.getCounter(name, type).resetValue()
counter.getCounter(name, type).getValue(def)
counter.getCounter(name, type).setValue(value)
counter.getCounter(name, type).updateValue(value, def)
counter.getCounter(name, type).getContent(def)
counter.getCounter(name, type).updateContent(text)
修复 清除属性源时,属性源内的生命属性值扣除不会实时作用到玩家生命值上的问题
3.3.2.0 - 2023/12/10
可能有部分小变动未记录,但最主要的新增、修复、优化记录都在下方
新增 对最新服务器版本兼容
新增 玩家属性异步更新队列
新增 MythicMobs 怪物属性加载器,计算公式运算功能
即怪物生成时自动根据怪物等级自适应属性列表中的计算公式
更新记录尾部附件:图1
新增 MythicMobs onSignal 技能触发器信号
格式为
~onSignal:AttributePlus
当玩家对实体造成伤害时触发配合
attributes.yml
中mythic-signal
配置项,可在技能处理通过占位符获取属性触发值更新记录尾部附件:图2
新增 PersistentCommand 持久化属性源命令
save
参数当该参数传入为
false
时,此次增加的数据将不储存至数据 (即重启/退出服务器后消失)新增 AttributeAPI 方法
addPersistentSourceAttribute
新增save
参数
优化 移除 JavaScript 公式计算,采用全新公式计算处理器
优化 属性处理效率 (Plugin、属性脚本),降低消耗一定程度提高处理效率
新增 AttrEntityDamageEvent 事件 (该事件可获取变动此次攻击处理最总伤害值)
新增 属性注册类、脚本属性各项方法新增
handle(AttributeHandle)
对象参数该项调整将影响到此版本前通过 插件、自定义属性脚本 所注册的属性失效,需进行修改
该版本起,你可以通过 handle 对象参数调用所有 AttributeHandle 对象内的方法
各类型主逻辑处理构造方法:
run(attr, entity) -> run(attr, entity, handle)
runAttack(attr, attacker, entity) -> runAttack(attr, attacker, entity, handle)
runDefense(attr, entity, killer) -> runDefense(attr, entity, killer, handle)
attr 对象 90% 方法调用最尾参数加上 handle 参数,例如:
attr.getDamage(attacker) -> attr.getDamage(attacker, handle)
attr.getRandomValue(attacker, "属性名") -> attr.getRandomValue(attacker, "属性名", handle)
新增 实体上一次攻击、被攻击时的时间戳记录,可通过实体 AttributeData 对象进行调用
data.getLastAttack() 上次攻击时的时间戳
data.getLastDefense() 上次被攻击时的时间戳
data.getCurrentTime() 当前时间戳 (current - time / 1000 = 间隔时间)
新增 AttributeCalculatorSource 自动运算属性源工具类
packet: org.serverct.ersha.attribute.data.AttributeCalculatorSource
可根据传入的占位符参数数据自动运算列表内属性公式,并生成 AttributeSource 对象
更新记录尾部附件:图3
修复 3.3.1.2 版本可能出现的登录假死问题
修复 可能被挂端利用异常发包导致线程数溢出问题
修复 添加/清除 玩家属性源时 属性加成值(百分比格式) 不更新问题
该版本起,增加玩家身上存在加成值的属性时将触发属性加成更新
在某种特殊的情况下,可能造成玩家属性值异常的情况 (异常调用API可能造成)
3.3.1.2 - 2023/06/23
新增 对 1.20 服务器版本兼容
新增 吸血属性触发时是否额外造成吸血伤害 (
attribute.yml
->options.vampireDamage
)重写 玩家登陆初始化属性逻辑,玩家属性初始化完成时将触发 AttrPlayerInitializeEvent 事件
重写 生命力机制处理方式,可兼容其他插件、模组所增加的生命值
修复 部分服务器可能会出现生命力突然被重置的问题、生命小概率乱跳问题
3.3.1.0 ~ 3.3.1.1 - 2023/04/24
新增 对 1.19.4 服务器版本兼容
修复 全息显示不自动清除问题
修复 属性脚本可能触发死锁问题 (极小概率)
调整 属性脚本编写格式 (3.3.1.1)
不再使用 Attr 占位符作为属性对象,改用方法内参数,旧版配置均需要修改
onLoad() -> onLoad(attr/Attr)
run(entity) -> run(attr/Attr, entity)
runAttack(attacker, entity) -> runAttack(attr/Attr, attacker, entity)
runDefense(entity, killer) -> runDefense(attr/Attr, entity, killer)
上面的参数名你可以写为 Attr 那样子你就无需修改方法内代码逻辑
旧版脚本内容 -> 新版脚本内容
3.3.0.9 - 2023-02-25
新增 玩家属性变量数据缓存功能
防止 3.3.0.8 版本的
自定义条件规则标签
功能在玩家首次登录服务器时,无法正常获取到玩家属性变量值,导致标签判断不通过
新增 玩家数据包异常检测功能
该版本在接收到大量异常操作时会将玩家踢出服务器
防止玩家利用作弊客户端发送大量异常数据包 (切换、关闭界面)
旧版本用户可将服务器核心更新至 Paper 核心,或使用新版插件
修复 属性范围值格式带空格时不读取问题,例如 "XXX - XXX" (正则毛病)
修复 属性值加成数值异常,使用 (%) 百分比加成格式时 (3.3.0.8.1)
修复 属性变量在某种情况下无法读取问题 (包括战斗力变量异常问题) (3.3.0.8.2)
优化 实时同步类与加成类属性的处理任务 (3.3.0.8.1)
3.3.0.8 - 2023-02-16
修复 某种情况下出现的玩家血量蹦迪问题
修复 旧版本使用 (%)百分比属性加成 时加成功能失效问题
修复 职业条件规则标签配置无法修改问题
修复 自定义读取格式内 @value 正则处理问题
该问题导致当标签属性值 < 10 时无法正常读取
新增 持久化属性源(属性数据)功能
该功能可以将玩家每个属性源转存持久化并可设置 失效时间或永久
该功能提供相关命令,储存方式为本地储存、数据库储存
命令
ap persistent [player] [source] [attributes] [time]
新增 开发者玩家属性操作方法 (持久化属性源)
AttributeAPI.addPersistentSourceAttribute(data,source,attributes,time)
为指定 AttributeData 玩家属性数据增加一个持久化属性源数据
AttributeAPI.takePersistentSourceAttribute(data,source)
为指定 AttributeData 玩家属性数据清除一个持久化属性源数据
新增 自定义条件规则标签
该功能支持 Kether 语法判断,自定义标签、读取格式
让普通用户也能通过配置自定义新的规则标签,不再需要写附属
如 "战力要求"、
"氪金要求"、"XXXXX" 等条件规则标签更多详细内容,请查看相关页面 自定义条件标签
3.3.0.7 - 2023-02-13
兼容 1.19.3 服务器版本核心 (修复可能出现的异常)
新增 世界切换时属性玩家属性
新增 更好的属性读取逻辑及处理
新版可以更快速高效的读取物品上的属性数据
保留旧版本读取逻辑及处理方式 (配置置设有开关项,默认使用新版)
format.yml -> original-logic-format
新增 自定义属性读取格式 (正则匹配)
该版本起支持用户通过正则自定义不同的读取格式
默认已配置的格式有,容错极高
属性标签 属性值 (属性值)
即物理伤害: 10-100 (+10)
属性标签 属性值
即 物理伤害: 10-100属性值 属性标签
即 +100-1000 物理伤害
详细内容请查看 新版读取格式相关 页面
新增 自定义规则标签读取格式 (正则匹配)
新增&优化
装备职业/装备类型
标签支持多类型限制装备职业: 剑士/法师
玩家是否拥有任意一个职业权限装备类型: 主手/副手
可穿戴在主手或副手
新增&优化
装备等级
标签处理方式自定义装备等级的 等级数据 来源,通过变量 (attribute.yml -> level-placeholder)
规则标签支持范围值限制,如
装备等级: 10-100
限制10至100级内玩家可用
优化 游戏时触发玩家属性更新的处理
修复 MythicMobs 4.X 物品配置 NBT属性读取功能 不兼容问题
3.3.0.6 - 2023-02-04
新增 自定义 NBT 列表属性加载功能
兼容所有通过 API 传入的物品数据 NBT 标签属性加载
支持自定义多 NBT 标签读取
新增
AttributeComponent
临时属性操作方法takeAttribute(Target, String, Double)
扣除指定属性值addAttribute(Target, String, Double)
新增指定属性值cancelAttribute(Target, String)
取消某个属性此次触发注意对某个属性值、触发状态操作,你必须确保 该属性在被操作属性之前 触发
否则此次修改将没有任何意义,这些操作仅在此次属性触发事件中存在
修复
AttributeAPI.takeSourceAttribute
减少生命力属性时不实时更新问题
3.3.0.5 - 2023-02-01
新增 生命同步功能 (本地/数据库储存)
修复 部分服务器存在的 满血退出、残血登录 问题
3.3.0.4 - 2023-01-29
修复 RUNTIME / UPDATE 类型属性处理异常
修复 因异步导致的 JavaScript 自定义属性触发异常问题
3.3.0.3 - 2023-01-?
用户
修复 AttributeAPI.addSourceAttribute 增加生命力属性不实时生效问题
3.3.0.2 - 2023-01-09
用户
新增 属性脚本编写异常分析功能
优化 玩家属性更新异步操作相关内容
优化 玩家
加成类(%)
属性值更新操作相关内容即使用 (%) 百分比加成格式的属性值
可使用
ap source 玩家名
命令查看加成的属性值列表该版本起
percentage-attribute(system)
属性源用于储存加成值
优化 玩家属性源查看分别显示
固定值/加成值
让玩家属性来源更加清晰 (
ap source 玩家名
)
兼容
LibsDisguises
伪装插件 (兼容伪装玩家类实体)修复 同步触发
UPDATE
类型属性时可能出现的异常问题
开发者
该版本起通过
AttributeAPI
为玩家新增属性时不再自动触发玩家属性更新
方法及事件如果需要触发一次所有
UPDATE
类属性,请调用AttributeAPI#updateAttribute
方法此次更新调整 不会对已开发的附属 造成影响
改为同步触发
syncUpdate
状态为true
的UPDATE
类型属性,即不再触发所有UPDATE
类属性syncUpdate
状态需在注册属性时使用setSyncUpdateState
方法修改,默认为false
插件自带属性
syncUpdate
默认状态为true
的有生命力、移速加成
属性
什么情况下需要将 syncUpdate
状态设为 true
呢
需要实时更新效果到玩家身上的属性,例如 生命力、移速加成
属性这一类
3.3.0.1 - 2023-01-07
用户
配置更新内容请查看 attribute.yml
兼容 对
1.8
版本的服务器进行兼容因低版本不存在某些条件将导致 蓄力、盾牌、等机制 无法使用
兼容 对
SkillAPI、Magic
技能插件再次兼容新增 技能伤害触发
攻击类、防御类
属性处理开关配置项新增 技能伤害触发属性处理黑名单配置项 (在列表内的属性名不触发)
attribute.yml (
skill-options
)
新增 限制配置内世界加载属性 (在列表内的世界不启动属性功能)
attribute.yml (
limit-attribute-worlds
)
新增 限制属性加载包含配置内描述的物品属性
attribute.yml (
limit-attribute-descriptions
)
3.3.0.0 - 2023-01-04
用户
新增
§<
及§>
过滤符用于获取描述行过滤符左边、右边的文字新增
SubAttribute
获取此次攻击强度值方法 (注册属性时可调用)方法名
getDamageIntensity()
新增
SkillExtensionAPI
扩展类 (SkillAPI)内置
setMaxMana(PlayerData, Double)
方法 (设置玩家职业最大魔法值)为什么写,因为傻逼 SkillAPI 没有这个方法,妨碍我写魔法值、魔法恢复属性
新增
SkillAPI
扩展属性脚本配置魔法值
额外提高玩家魔法值上限魔法恢复
恢复玩家魔法值有需要的用户可前往 MCBBS 帖子下载扩展
修复 变量出现多位小数点问题 (战斗力变量)
3.2.9.9 - 2022-12-17
用户
修复 实体非死亡情况下被清除造成的内存泄露
修复属性数据 内存泄露 问题,在实体非死亡而被清除的情况下会出现该问题
例如一些服务器的 技能的盔甲架 (释放技能时会生成盔甲架过后清除)
3.2.9.8 - 2022-12-17
用户
优化兼容
对 Purpur 核心 及 高版本 服务器优化兼容并对 JavaScript 部分优化处理
从该版本起高版本服务器无需额外安装 MomoJs 或 MiaoNashorn 插件
3.2.9.6 - 2022-09-25
用户
修复 MythicMobs 怪物属性加载异常问题
服务器插件数量达到一定时将可能出现该问题 (有人在 65 个插件是出现该问题)
可能导致 AttributePlus 插件在 MythicMobs 插件之前加载才会这样 (玄学问题)
3.2.9.5 - 2022-08-16
用户
修复 OTHER 类型属性最大生效值限制失效的问题
修复 OTHER 类型属性无法修改战斗力的问题
修复 部分属性标签因相关标签名后失效问题 (受影响的相关属性如下)
经验加成、蓄力加成、蓄力干扰
箭矢速度、箭术精准、箭矢穿透
破盾几率、盾牌格挡、召唤强度
调整 真实伤害处理方式改为直接扣除生命力 (防止受到原版护甲值的影响)
3.2.9.4
新增 攻击系数/防御系数配置项
修复 生命力属性可能报错的问题
3.2.9.3
修复 冰冻属性失效问题
修复 盾牌机制 (盾牌格挡属性生效问题)
兼容 MythicMobs 5.X 版本兼容
兼容 从版本 3.2.9.3 起 1.18+ 服务器版本安装 MiaoNashorn 或 MomoJs 插件即可使用 自定义属性脚本、自定义公式 功能
3.2.9.2
新增 新的脚本冷却机制(保留原先属性冷却功能)
Utils.hasCooling(String, Entity, Double)
判断是否在冷却,如果不在冷却将立即冷却并返回 true 否则返回 false
Utils.resetCooling(String, Entity)
刷新重置冷却
3.2.9.1 - 2022-05-24
用户
新增 属性生效值限制功能 (超过限制部分的属性值将无效化) (attribute.yml)
修复 3.X 版本以来存在的BUG (可能造成较高消耗 我的锅)
修复 MythicMobs 怪物生命力也被生命力属性影响问题 (导致怪物锁血)
3.2.3~3.2.8 - 2022-02-19
用户
更新 3.2.3 ~ 3.2.7 更新内容丢失 3.2.8
修复 CMI 插件前置可能造成 MythicMobs 怪物属性失效问题
修复 将遗漏的插件依赖补全
新增 更新玩家属性命令 (AP UPDATE 玩家)
新增 查看玩家属性来源列表命令 (AP SOURCE 玩家)
3.2.2 - 2021-11-23
用户
兼容 Taboolib 6.0
兼容 Minecraft 1.17+ 版本 (不出意外的话 1.18 也没问题)
开发者
修复 通过 API 为玩家添加生命力属性后 生命力 不更新问题
这么久没更新 AttributePlus 是因为新生儿 DungeonPlus 需要养,所以才那么久没更新 AttributePlus
3.2.1 - 2021-07-13
用户
新增 属性全息功能 (Hologram) 前置 HolographicDisplays
修复 插件重载后 JavaScript 脚本属性不加载问题
修复 物品攻击检测(attackDetection) 提示异常问题
3.2.0 - 2021-07-09
用户
修复 在调用 API 增加属性时可能出现卡属性的问题 (玩家所有属性都不刷新)
修复 PVP PVE防御 属性在身上没有 物理防御 属性时失效问题
调整 插件重载命令从该版本开始不会再清掉怪物身上已存在的属性
新的插件 DungeonPlus 已正式发布至 MCBBS 欢迎下载使用
3.1.9 - 2021-05-16
用户
修复 部分小问题
更新 内嵌式条件读取格式 说明 从现在开始内嵌式条件格式为 "<属性内容> / <条件>" 即 "物理伤害: 100 / Lv.100" 满足条件才会读取该行描述上的 100 物理伤害 旧版本的 [Lv.] [Gm.] 考虑到部分服务器已在所以将会保留不会移除
预告 DungeonPlus 地牢插件进度 ≈ 70% (不出意外六月中旬发布)
开发者
新增 EmbeddedCondition 内嵌读取条件组件
说明 该版本修改了 DescriptionRead 组件内的 condition 方法参数,可能会对你的插件造成影响请自行兼容更新
3.1.8 - 2021-05-03
用户 & 开发者
修复 自定义提示消息内 {属性变量} 有时显示为 0 的问题
修复 自定义公式的触发数据储存问题 (就是导致上面显示 0 的问题) 该问题影响调用了 getFormulaValue 自定义公式方法的属性 (JS/JAVA/KOTLIN)
修复 自定义公式内 {entity:属性名} 可能出现的报错问题
3.1.7 - 2021-04-23
用户
修复 defaultArmor 设为 true 后护甲值还是被清除问题
修复 怪物属性 无法刷新问题 (我的锅)
3.1.6 - 2021-04-17
用户
修复 可能攻击时可能出现的未初始化报错问题
修复 装备等级 标签加 1.0 小数点时会报错问题
预告 DungeonPlus 地牢插件将于放暑假前发布,目前进度≈ 50% AttributePlus 基本稳定,如果没有严重问题将停更几个星期,因为要加快 DungeonPlus 的进度 基本上 AttributePlus 的新功能都可以通过 API 进行开发附属,所以也没什么需要我更新的了
3.1.5 - 2021-04-03
用户
新增 原版护甲清除开关
以上配置会在 attribute.yml 配置自动生成 defaultArmor 配置项 原版护甲为百分比抵消伤害,会影响插件伤害的准确性,默认清除(false)
修复 1.16.5+ 版本玩家退出重新登录属性无法刷新并失效问题 (知道吗,就很玄
修复 高版本RGB颜色代码导致属性值读取异常问题
3.1.4 - 2021-03-20
用户
新增 装备等级限制新增对SKILLAPI职业等级的兼容
以上配置会在 attribute.yml 配置自动生成 skillLevel 配置项,默认 false
修复 多个条件判断 组件 造成的冲突问题
修复 重载插件无法修改战斗力配置问题
调整 玩家退出服务器时 不再触发属性更新等事件 (触不触发都那样)
调整 可以通过 "ap.权限名"/"权限名" 方式通过职业限制判断
3.1.3 - 2021-03-13
用户
新增 禁止物品远程攻击功能 (物品攻击检测功能)
新增 禁止物品左键攻击功能 (物品攻击检测功能)
以上配置会在 attribute.yml 配置自动生成对应配置项
修复 装备等级无法以 "装备等级 10 级" 格式生效
修复 SkillAPI 技能伤害 兼容失效 问题
修复 修复 "§|" 过滤符无法对装备等级等规则标签失效
修复 重载属性后导致 PlaceholderAPI 变量失效 问题
3.1.2 - 2021-03-08
用户
新增 新增几个 脚本API 方法
调整 配置注释与实际效果不符问题
修复 修复一个小问题
3.1.1 - 2021-03-07
用户
修复 CatServer、Mohist 属性脚本无法自定义脚本工具问题
修复 使用 API 增加的属性 无法触发规则标签(装备等级等...)限制问题
调整 从该版本起新增配置 无需自己在配置内添加配置节点 将自动生成
新增 过滤符号 &-、&-&0 等,具体作用请前往WIKI查看 过滤符相关
开发者
修复 读取组件无法卸载问题
调整 读取组件的类型处理顺序
3.1.0 - 2021-02-22
用户
兼容 JAVA版本 9 以上版本
新增 默认 清除 实体原版护甲
新增 AttributeSource#merge 属性源合并方法
修复 修复一些显示上的小问题(
3.0.9 - 2021-02-13
用户
新增 自定义属性 (通过 JavaScript 脚本编写) 可自定义调用其他插件的类方法,详细请查看 script.yml 配置
新增 script.yml 脚本配置
修复 修复末影球会对自己造成属性伤害的问题
3.0.8 - 2021-02-10
用户
修复 修复装备类型 裤子 跟 鞋子顺序相反的问题
修复 修复非 Kotlin 编写的附属使用 @AutoRegister 注释无效问题 (感谢鹦鹉
小老婆)
3.0.7 - 2021-02-09
用户
调整 修改属性默认读取方式
修复 修复 无法读取负数属性值 的问题
修复 Mohist 核心无法使用自定义公式问题
新增 配置 attribute.yml 新增 healthScale 开关,关闭后将不会将生命爱心显示压缩为两排
3.0.6 - 2021-02-06
用户
调整 将 stats.yml 内默认物品类型调整为 1.12及以下版本 可使用的类型 (太多人不看WIKI就来反馈)
其他 防止生命爱心数量(healthScale)被其他插件修改后导致一大堆爱心刷屏 (例如 SkillAPI)
3.0.5 - 2021-02-05
用户
新增 新增插件更新提醒功能
兼容 2.X 调用 AttributeAPI.class 内方法给玩家增加属性的附属 旧版本注册新属性的附属无法兼容,需重新开发
3.0.4 - 2021-02-04
用户
修复 攻击处理事件,攻击者实体可能出现的 "ClassCastException" 问题 (不小心的)
3.0.3 - 2021-02-03
用户
修复 原版伤害值不显示问题
3.0.2 - 2021-02-02
用户
修复 1.16.5 读取事件报错问题
修复 1.13.X+ GUI模式下的属性统计面板无法使用问题
注意 目前 1.16.5 属性统计面板无法使用 BOOK 模式 1.16.4 及以下可正常使用
3.0.1 - 2021-02-02
用户
修复不兼容 CatServer 与 Mohist 核心的问题
3.0.0 - 2021-02-02
用户&开发者
插件基于 Kotlin 完全重写 旧版本附属部分可能无法兼容新版插件 如果是 属性类附属 这边建议重写 如果只是简单的调用API对玩家属性的操作,那么依旧可以 继续使用
请查看文档其他页面内容,因为是完全重写就不一一列举了
最后更新于