# HardcoreMobs
**全新的可定制插件,用于你的Boss!**
**它能为你提供什么?**
- 可定制的Boss名称、生命值和类型!
- 自己的脚本系统,用法更灵活!
- 可定制的Boss Bar和实体装备!
- 事件脚本系统!
- PlaceholderAPI支持!
最初,这个插件是为Paper 1.16.5创建的。但我认为它在1.13及以上版本也能完美运行。
**它是如何工作的?**
- 实体配置仅通过config进行。你是编写Boss功能的人。
- Boss Bar进度是实体生命值。
- 任何时候只有一个Boss可用。但你可以生成其他Boss。
- 每个Boss都是独立的。
**Config结构如下:**
```yaml
boss:
displayName: "Test boss" # Boss的显示名称
health: 200 # Boss的生命值
type: ZOMBIE # 生成的实体类型
spawnLocation: # 生成位置原点
x: 0
y: 100
z: 0
world: world
bossBar: # Boss Bar部分,更详细的信息请参考 https://hub.spigotmc.org/javadocs/spigot/org/bukkit/boss/BossBar.html
title: "This is my boss!"
color: RED
style: SOLID
flags:
- "CREATE_FOG"
- "DARKEN_SKY"
radius: 20
equipment: # 可选。你可以为任何或所有槽位设置装备。参考 https://hub.spigotmc.org/javadocs/spigot/org/bukkit/inventory/EquipmentSlot.html
HEAD: # 这里需要放置ItemStack实例。参考其他插件的配置。
CHEST:
LEGS:
FEET:
HAND:
OFF_HAND:
BODY: #用于马和狼
SADDLE: # 马和猪
eventScripts: # 这部分很有意思
damage: # 当Boss受到伤害时触发
- ""
attack: # 当Boss攻击玩家时触发(不被[ATTACK]触发)
- ""
death: # 当Boss死亡时触发
- ""
preSpawnScript: # 当执行/hmobs spawn时触发
- ""
spawnScript: # 仅当调用[SPAWN]时触发
- ""
```
**所有脚本命令列表:**
```
[ATTACK] playerName damage - 攻击特定玩家。与“damage”事件一起使用效果更好
[DIRECT] playerName text - 向特定玩家发送消息。需要隐私时很有用。
[SET] key value - 在本地占位符系统中设置值。使用%name%来使用此值。
[CHECK] condition scriptLine - 检查条件并执行脚本命令。仅支持 !=(不等于) 和 ==(等于)
[CONSOLE] command - 以控制台身份执行命令
[BROADCAST] message - 很明显。
[PLAYERS] radius command - 在半径范围内对玩家执行命令。使用%player%访问玩家名称。
[RANDOM_PLAYER] radius command - 与PLAYERS相同,但选择一个特定的玩家。
[RANDOM] chance scriptLine - 随机执行命令。制造惊喜的好方法!
[MESSAGE] radius message - 向半径范围内的所有玩家发送消息。
[ACTIONBAR] radius message - 与MESSAGE相同,但发送到操作栏。
[SOUND] type volume pitch - 向每个玩家发送声音。关于声音类型请参考Spigot wiki。
[SOUND_GLOBAL] type volume pitch - 与SOUND相同,但在生成位置全球播放声音。
[PLAYERSOUND] radius sound volume pitch - 与SOUND相同,但使用半径。
[COOLDOWN] radius material delay(ticks) - 向半径范围内的所有玩家添加物品冷却。
[DELAY] ticks scriptLine - 在一段时间后运行脚本行。
[SPAWN] - 生成实体并调用“spawnScript”。
[EFFECT] PotionEffectType duration amplifier - 为Boss添加效果。关于效果请参考Spigot wiki。
[ANTIRELOG] radius - 在半径范围内激活玩家PVP冷却。仅在半径内有2个或更多玩家时有效。仅当安装了AntiRelog时有效。
[REPEAT] delay name - 类似于代码中的while循环。在mob死亡或插件重新加载之前运行。必须以[REPEATEND]结束。
[REPEATEND] - 很明显。
[REPEATBREAK] name - 当需要时停止REPEAT。
[FOR] count delay - 延迟指定时间的间隔,重复执行代码块“count”次。需要以 [FOREND] 结尾。
[FOREND] - 再次强调 - 很明显。
```
**本地占位符:**
```
"damage" 脚本部分:
%attacker% - 攻击Boss的玩家
%damage% - 造成的伤害数 (类型: double)
"death" 脚本部分:
%killer% - 杀死Boss的玩家
全局占位符:
%name% - Boss的显示名称
%center% - 居中文字。将此放在消息开头。仅在 [BROADCAST], [MESSAGE], 和 [ACTIONBAR] 中有效。
%player% - 显示玩家名称。仅在 [PLAYERS], [RANDOM_PLAYER], [MESSAGE], [ACTIONBAR] 中有效。
%top1% - 显示造成Boss伤害排名前1的玩家。在 [DIRECT], [SET], [CHECK], [ATTACK] 中显示为 "null"。 在其他命令中不被替换。
%top2% - 显示造成Boss伤害排名前2的玩家。在 [DIRECT], [SET], [CHECK], [ATTACK] 中显示为 "null"。 在其他命令中不被替换。
%top3% - 显示造成Boss伤害排名前3的玩家。在 [DIRECT], [SET], [CHECK], [ATTACK] 中显示为 "null"。 在其他命令中不被替换。
%top1_damage% - 显示造成Boss伤害排名前1的伤害数。在 [DIRECT], [SET], [CHECK], [ATTACK] 中显示为 "null"。 在其他命令中不被替换。
%top2_damage% - 显示造成Boss伤害排名前2的伤害数。在 [DIRECT], [SET], [CHECK], [ATTACK] 中显示为 "null"。 在其他命令中不被替换。
%top3_damage% - 显示造成Boss伤害排名前3的伤害数。在 [DIRECT], [SET], [CHECK], [ATTACK] 中显示为 "null"。 在其他命令中不被替换。
%your_key% - 显示通过 [SET] 命令设置的值。
```
# 重要提示!
**强烈建议不要使用嵌套的 [REPEAT]。最好单独运行它们。**
**你也不能在 [REPEAT] 循环中运行 [FOR] 循环。这是为了保护你的性能。**
**当你使用 PlaceholderAPI 占位符时,插件会首先查找它的占位符,然后再解析 PlaceholderAPI。**
**在一个脚本部分设置的值,在另一个脚本部分将不起作用。例如:**
```yaml
"death":
- "[SET] killed yes"
- "[BROADCAST] %center%%killed%" # 错误!
```
```yaml
"attack":
- "[SET] lastDamage %damage%"
- "[SET] lastAttacker %attacker%"
"death":
- "[BROADCAST] %center%%lastAttacker% killed boss, dealing %lastDamage% damage!" # 不完美,但很好的例子!
```
# 安装/配置方法:
1. 下载 .jar 文件。
2. 将 .jar 文件放入 "plugins" 文件夹。
3. 创建一个名为 "HardcoreMobs" 的文件夹,并在该文件夹中创建一个名为 "mobs.yml" 的文件。
4. 编辑你的 config,享受吧!
一些无用的东西:
- 我的 Discord: blxxdx_1
- [我的服务器的 Discord [RU]](https://discord.gg/56A4nTEZR7)