📔
AttributeExtension
  • AttributeExtension
  • 属性执行效果教程
    • 实体对象说明&变量值说明
    • 更多属性效果关键词
  • 付费版 — 额外功能
    • 关键词
    • 数据储存
  • 更新记录
由 GitBook 提供支持
在本页
  • 作者屁话
  • 条件关键词列表
  • 特殊关键词列表
  • 关键词列表
  • attribute 与 update 关键词的区别在哪?

这有帮助吗?

  1. 属性执行效果教程

更多属性效果关键词

2020/11/07 日 1.1.0 版本内容更新

上一页实体对象说明&变量值说明下一页付费版 — 额外功能

最后更新于4年前

这有帮助吗?

作者屁话

虽然现在关键词不多,但大部分效果都可以做出,当前提你要会~ 关键词后期也会慢慢更新增加,所以问题不大哈哈哈

下文所提到的 变量值 均为 value 关键词所计算后的变量名,例如 "value test [{attacker 生命力}]" 那么 test 就是变量值 以下关键词格式中出现的 "变量值" 为 value 关键词所设 变量名 格式可以是 {v:变量名} 或 变量名 ()

条件关键词列表

关键词

格式

说明

chance

chance 变量值,是否继续执行(true/false) [跳转]

触发几率

cd

cd 秒 [跳转]

触发冷却时间

cd if (1.1.0)

cd if [跳转]

premise

premise 变量值 运算符 变量值 满足要求,未满足要求(true/false) [跳转]

条件

type (1.0.4)

type 对象 [类型,类型,...] [跳转]

对象类型判断

permission(1.0.7)

permission 对象 是否需要全部一样(true/false) [权限,权限2...] [跳转]

判断权限

type类型列表: 判断类关键词无法使用 attacker-r:半径范围,排除触发者,排除被触发者 范围获取对象

#[跳转] 这个部分可有可无,格式为 "~[行数]" 可以跳转到 run 列表内的指定一行
#具体例子 [判断攻击者物理伤害最大值是否满足1000] 并执行对应关键词

run:
0  - "value maxDamage [{attacker 物理伤害[1]}]"
1  - "premise maxDamage >= 1000 true,false ~4"
2  - "message attacker [我满足 1000 点物理伤害要求,我当前最大物理伤害 {v:maxDamage}]"
3  - "end"
4  - "message attacker [不满足 1000 点物理伤害要求,我当前最大物理伤害 {v:maxDamage}]"

#以上例子使用了 premise 条件关键词
#如果满足 premise 的要求则返回 true 继续按顺序执行,但在第3行有这 "end" 关键词则停止了接下来的
#执行
#如果不满足 premise 的要求则返回 false 如果没有[跳转]则停止执行,如果有[跳转]则会跳转至设置的
#那行,例如我上面写了 ~4 那么就会跳到第4行开始执行,跳过2,3行的执行

特殊关键词列表

关键词

格式

说明

end

end

结束执行

message

message 对象 [内容]

发送消息

title

title 对象 [大标题,小标题,淡入,显示,淡出]

给指定对象发送TITLE消息 (支持value变量)

sound

sound 对象 [音效类型,音量,音调]

发送音效

lightning(1.0.3)

lightning 对象

触发一次雷击特效,无伤害

command(1.0.3)

command 对象 [指令,指令,...]

触发指令

random(1.0.4)

random [跳转行数,跳转行数,...]

随机跳转到指定行数

message / title / command 关键词都可以使用 {v:变量名} {e:对象} 等变量 {e:对象} 获取指定对象的名字 例如 "command entity [fly,say &f{e:attacker}说: &eAP牛逼]"

关键词列表

关键词

格式

说明

cancelled

cancelled 对象

取消指定对象本次属性

attack

对指定对象造成一次伤害

heal

heal 对象 变量值

为指定对象触发一次治疗

damage

damage <add/take/set> <变量值> <是否无视防御属性抵消 (true/false)>

本次攻击伤害变动

attribute

attribute 源 对象 [属性,属性,...] 持续时间["0"为永久,支持变量值]

增加属性,源可以为任意字符,别重 复就可以

update(1.0.3)

update 对象 attribute [属性 值,属性 值,...]

更新玩家指定属性的属性值

attribute-set

(1.0.6)

attribute-set 对象 [属性 值,属性 值,...]

设置此次事件指定对象的指定属性的属性值

关键词 attribute / update 与 message 的 [] 内的内容容支持使用 {v:变量名} {e:对象} 来获取变量值及对象名字

#具体例子
#生命吸取值=被攻击者最大生命力的百分之10%
#提高攻击者本次伤害,提高的伤害值来自 物理伤害最大值的百分之50%
#并提高攻击者100点生命力,同时降低被攻击者100点生命力,持续10秒,并发送对应消息
#该效果冷却 20 秒

run:
  - "cd 20"
  - "value vDamage [{attacker 物理伤害[1]}/2]"
  - "value vHealth [{entity 生命力}*10/100]"
  - "damage add vDamage"
  - "attribute A生命提升 attacker [生命力: {v:vHealth}] 10"
  - "attribute B生命降低 entity [生命力: -{v:vHealth}] 10"
  - "message attacker [&6伤害提高了{v:maxDamage}点伤害,并吸取了对方10%生命力持续10秒]"
  - "message attacker [&6对方吸取了你10%点生命力持续10秒,并额外承受了{v:maxDamage}点伤害]"

attribute 与 update 关键词的区别在哪?

相对于 attribute 关键词 update 关键词更适合 RUNTIME 类型,他不会出现属性无限循环叠加的问题,属性更新后就自动清除 update 此次所增加的属性,这个 update 关键词也只适用于 RUNTIME 类型 例如 "update entity attribute [生命力 100,物理伤害 -100]" 就可以增加 100 点生命力并扣除 100 点伤害。

#例如做一个 "生命力加成" 的属性
#假设自身体有 100 点生命力,然后 "生命力加成" 有 50% 所以最终额外加成 50 点生命力
AttributeExtension:
  test1:
    key: "生命力加成"
    placeholder: "test4"
    run:
      - "value defaultHealth [{entity 生命力[1]}]"
      - "value addtiton [{entity 生命力加成}]"
      - "value value [{value defaultHealth}*{value addtiton}/100]"
      # 额外加成 50 点生命力
      - "update entity attribute [生命力 {v:value}]"
    type: "RUNTIME"
    
    
#那如果把 update 改成 attribute 关键词会出现什么问题?
AttributeExtension:
  test1:
    key: "生命力加成"
    placeholder: "test4"
    run:
      # 每次 attribute 加上的额外加成生命力,这里的 {entity 生命力[1]} 同样会读取到
      - "value defaultHealth [{entity 生命力[1]}]"
      - "value addtiton [{entity 生命力加成}]"
      - "value value [{value defaultHealth}*{value addtiton}/100]"
      # 第一次的计算值是 "100 * 50 = 50"
      # 第二次的计算值是 "150 * 50 = 75"
      # 以此类推,你会发现生命力一直循环则往上叠加,无限循环叠加就是这个
      - "attribute 生命力加成 entity [生命力 {v:value}] 0"
    type: "RUNTIME"
    
    
# update 关键词会在更新属性时自动释放(清除)上次所增加的值,所以不会出现疯狂叠加的问题
#
# attribute 是不是一定会出现这种问题?
# 不是,如果你设了 cd冷却 及 attribute持续时间(time) 那么只要 cd 跟 time 时间不同就不会有问题
# 例如 "冷却10秒 持续时间8秒" 是不会出现这种问题的,但 "冷却10秒 持续时间10秒" 这样是会出问题的

请查看更新内容

attack 对象 变量值 (额外内容,请查看更新内容)

1.0.8
https://bukkit.windit.net/javadoc/org/bukkit/entity/EntityType.html
1.1.0
1.0.8