基本信息
我的世界Java版本
1.20.1
平台
Bukkit
运行环境
详情信息
许可证 保留所有权益/无许可证
发布于 4 days ago
更新于 5 days ago
RoleSystem
RoleSystem是一款参考了原神的角色系统,提供大致一样的系统实现。
特色功能
- GUI:大部分组件都能自定义,提供角色列表、技能信息、装备信息等。 并且允许查看他人角色信息,开发中角色隐藏。
- 角色:角色的创建、技能分配、角色升级、基础属性、武器种类。
- 技能:使用MythicMobs技能释放。多种技能触发方式,左右键、顺序按键(即为按下 右键->左键->左键)、快捷栏按键、DrawBowForce。即将兼容ArcartX以及UnrealCore的客户端按键监听。还提供了技能升级配置,动态技能数值显示。
- 血量/装备隔离:每个角色都将拥有自己的血量存储以及装备存储。
- 角色出战:可配置允许玩家同时上场多个角色,使用指定按键在战斗中进行切换,使用不同的技能和装备。
- 武器提供:支持角色绑定一种武器类型,并且在使用该角色时提供武器到指定槽位。
- 死亡复活:当玩家使用的角色死亡时,将会锁定,无法使用相关功能,需要复活该角色才能正常使用。
- 套装:可配置套装效果,提升属性。或使用mm条件检查套装改变技能。
- 属性:AttributeSystem 后续将兼容AttributePlus。
- 弓箭机制:背包无需箭矢即可拉弓,提供DrawBowForce。
- 存储:默认使用sqlite、支持mysql跨服。
内置占位符以及一些说明
展开
角色需要权限才能解锁 权限节点为 RoleSystem.Role.<角色名称> 扩折号也要删掉 权限为永久解锁 也可以使用指令进行临时解锁 /RoleSystem unlock/lock 玩家名称 角色名称 解锁的角色立即可以使用 锁定的角色如果在出战则将在下次数据刷新时无法使用
技能yml内 {PlaceholderId} 返回指定的占位符 {Level} 返回技能等级 支持lore 支持name
角色yml内 {level} 返回等级 {state} 返回状态 {health} 返回角色血量 {maxhealth} 返回角色最大血量 支持lore 支持name
Config的出战按钮 {state} 返回状态 {roleId_1} 返回第一个场上角色 以此类推 无角色返回空 支持lore 支持name
Config内的LevelInfo按钮 {materials}返回材料名称 {value}返回需要的数量 {have}返回当前拥有 format格式内有效
{level}返回角色等级 {AttributesId} 返回指定的属性值 支持lore 支持name
{isUpgrade} 返回可以是否升级 可以替换的位置有 skill的展示物品 LevelInfo的物品 支持lore和名称
血量的占位符的加载 未加载前 是默认的20生命值 需要使用角色出战 才会加载生命值 因为需要再属性插件那边获取生命值
血量的占位符更新 仅在切换角色 恢复生命值 扣除生命值 关闭角色界面时刷新
最大生命值只有切换角色和关闭角色界面时刷新 会按当时的最大生命值记录 这两的默认值是config内的Attribute.baseHealth节点配置
插件适配
MythicMobs:提供大量的内置占位符以及技能
展开
[]为必填 {}为可选 可选的如不填则获取当前角色
<role.a.[属性名称].{角色名称}> 获取角色指定属性
<role.s.[技能名称].[属性名称].{角色名称}> 获取技能指定的属性
<role.al.{角色名称}> 获取角色等级
<role.sl.[技能名称].{角色名称}> 获取技能等级
<role.id.{顺序}> 获取角色名称 顺序从0开始
<role.h.{角色名称}> 获取角色当前生命值
<role.mh.{角色名称}> 获取角色当前最大生命值
切换角色技能
roleId可选 switchCd可选(单位毫秒) 均支持mm本身占位符解析
roleId: 玩家即将切换到的角色。不填则切换到无角色,填写的角色没有将不会切换
switchCd: 切换角色的冷却时间。如不填则按默认时间。
- roleSwitch{roleId=要切换的角色id;switchCd=冷却时间}
生命值恢复技能
health必填 isAll必填 roleId可选 均支持mm本身占位符解析
health:恢复的生命值量
isAll:是否进行全队恢复
roleId:指定恢复的角色 如不填则恢复当前角色
- roleHealth{health=恢复的生命值;isAll=是否全队回复;roleId=角色名称}
套装条件
roleId可选 tag必填 value必填
roleId:检查的角色名称 不填则使用当前角色
tag:套装的名称
value:需要的数量 这里支持使用mm的对比符号 例如 > < 1to2
- suitTag{roleId=角色名称,tag=套装id;value=数量}
PlaceholderAPI:提供大量的变量支持
展开
[]为必填 {}为可选 可选的如不填则获取当前角色
%role_a_[属性名称]_{角色名称}% 获取角色指定属性
%role_s_[技能名称]_[属性名称]_{角色名称}% 获取技能指定的属性
%role_al_{角色名称}% 获取角色等级
%role_sl_[技能名称]_{角色名称}% 获取技能等级
%role_id_{顺序}% 获取角色名称 顺序从0开始
%role_h_{角色名称}% 获取角色当前生命值
%role_mh_{角色名称}% 获取角色当前最大生命值
QiuhuaItemSpace:更便捷的装备材料操作
允许角色升级、技能升级时使用指定物品空间内的材料,无需再将材料放置在背包内。
允许在gui内显示指定物品空间的物品。例如显示装备空间,快捷拿取装备配装。
配置说明
Config
Debug: false
#替换材料消耗内的money文本
MoneyTextReplacement: "&f消耗经济"
#替换部分位置的 {isUpgrade} 可以替换的位置有 skill的展示物品 LevelInfo的物品 支持lore和名称
#如果不可升级 那就会返回空白字符
AllowUpgrade: "&6可升级!"
#属性的设置
Attribute:
#使用的属性插件
type: "AttributeSystem"
#生命值的属性key 使用as属性插件的情况下 请确保玩家拥有这个属性 哪怕他只有0 因为as如果没有这个属性 会返回null 而不是0
baseHealthKey: "生命上限"
#玩家的基础血量
#因为有的属性插件获取生命值属性的时候不会计算默认拥有的20生命值 所以这里给了个自定义数值
baseHealth: 20.0
#角色系统设置
RoleSystem:
#允许上场的最大数
MaxPerson: 2
#两个角色的切换间隔
SwitchInterval: 500
#状态类型占位符
State:
notUnlocked: "未解锁"
activate: "上场"
rest: "下场"
activateDeath: "场上死亡"
restDeath: "场下死亡"
#模块 全息文字的技能注册 用于施加buff时的全息文字显示
#开启后将会注册一个对应的全息文字技能
Hologram:
#是否启用
enable: true
#所使用的全息依赖 Pou 或者 AX
type: Pou
#模块 拉弓接管 这里只支持1.20.1
#开启后 将无需使用箭也可拉弓
DrawBow:
#是否启用
enable: true
#是否需要手持武器才能触发
useArms: true
#自定义拉弓蓄力最大值 相关事件名称BowForceEvent
maxForce: 10.0
#模块 技能释放
SkillRelease:
#关掉后 仅关闭玩家主动释放技能 其他部分的技能不受影响
enable: true
#是否需要手持武器才能触发 必须开启LockArms模块才能正常工作
useArms: true
# 释放的方式 这边在示例技能内有介绍
# Combo 原版方式
# Number 原版方式
# AX ArcartX 的按键监听
type: "Combo"
#Combo释放时的长度 到这个长度就会尝试释放对应的技能
comboLength: 3
#一套Combo的最大间隔
comboIntervalMax: 1000
#两个动作的最小间隔
#这里这个间隔对于其他释放方式也有效 防止高频触发
ComboIntervalMin: 10 #最小连击间隔
#模块 QiuhuaItemSpace兼容 会检查指定仓库的材料 和扣除
#开启后不会检查物品栏
QiuhuaItemSpace:
#是否启用 关闭后下面功能均失效
enable: false
#检查的仓库
ItemSpaceId: "普通仓库"
#在界面上的部分槽位显示指定仓库的物品列表 并且支持拿取和放入
Gui:
ItemSpaceId: "普通仓库"
#是否启用 关闭后下面功能均失效
enable: false
#slot槽位禁止和已使用的重复
#显示物品的槽位列表
itemList: [15, 16, 17, 24, 25, 26, 33, 34, 35, 42, 43, 44]
#翻页的设定
Page:
#上一页
PreviousPage:
slot: 51
name: "&f上一页"
material: "PAPER"
model: "-1"
lore:
- "&f点击查看上一页"
#下一页
NextPage:
slot: 53
name: "&f下一页"
material: "PAPER"
model: "-1"
lore:
- "&f点击查看下一页"
#模块 死亡锁定
#角色死亡锁定 当玩家当前角色死亡 玩家会自动在当前位置重生 且换成可用角色
#死亡的角色无法在切换过去 需要使用指令重新激活
#上下场操作不影响 可以使用指令复活指定角色
#此功能会在开服时开启 立即重生游戏规则 以此来越过死亡界面
DeathLocking:
#是否启用 关闭后下面功能均失效 需要重启才能生效
enable: true
#当死亡后重新激活的默认血量
health: 20
#模块 套装功能
Suit:
#是否启用 套装属性 不管有没有启用都会统计套装 相关占位符也能正常使用
#启用的话 可以在suit文件内添加套装属性效果
#套装的效果只有在关闭界面时/切换角色时才会触发
enable: true
#这里用的是正则 不会去除颜色代码 同id的套装会叠加数量
condition: "&f套装: (.+)"
#模块 锁定物品槽位
#即为切换到该角色时提供一把武器在指定槽位 无法丢弃交互等
#并且会自动切换主手到该栏位
#如没角色 则提供一个指定物品
LockArms:
#是否启用 关闭后下面功能均失效 需要重启才能生效
enable: true
slot: 8
#是否移除武器上的lore
#给的武器是复制品 全部东西一致 包括nbt
#移除lore可以避免不必要的属性重复添加等
ArmsLoreRemove: true
LockItem:
name: "&f该槽位被禁用"
material: "PAPER"
model: "-1"
lore:
- "&f未装备武器"
#箱子Gui界面
InventoryGui:
#点击间隔
clickInterval: 300
#如果玩家没有打开过 那将默认打开这个页面 否则将打开玩家上次关闭的页面
DefaultPage: "示例角色"
#支持papi解析 支持papi的地方会标明
Title: "%player_name% 的角色列表"
#填充的物品 会把其他没涉及到的格子填满
FillItem:
#是否启用 关闭后下面功能均失效
enable: true
name: "&f此格子无法操作"
material: "GLASS_PANE"
model: "-1"
lore:
#角色列表
RoleList:
#角色列表的槽位 箱子界面第一个格子是0
showSlot: [1, 2, 3, 4, 5, 6, 7]
#翻页的设定
Page:
#上一页
PreviousPage:
slot: 0
name: "&f上一页"
material: "PAPER"
model: "-1"
lore:
- "&f点击查看上一页"
#下一页
NextPage:
slot: 8
name: "&f下一页"
material: "PAPER"
model: "-1"
lore:
- "&f点击查看下一页"
#武器系统
Arms:
#可以放置的槽位
slot: 19
#条件仅支持lore 如有其他特殊情况将会标明
#这里用的是正则 不会去除颜色代码
condition: "&f武器: (.+)"
#饰品
Accessories:
#饰品key 自定义的 可按格式无限添加
饰品1:
#对应槽位
slot: 20
#放入需要的lore 不会去除颜色代码
condition: "&f饰品: 饰品1"
饰品2:
slot: 28
condition: "&f饰品: 饰品2"
饰品3:
slot: 29
condition: "&f饰品: 饰品3"
饰品4:
slot: 37
condition: "&f饰品: 饰品4"
饰品5:
slot: 38
condition: "&f饰品: 饰品5"
#技能槽位 技能数量大于设置的栏位 超出的则不显示
Skill:
slot: [22, 31, 40]
#设置出战的槽位
#点击可切换他的出场状态
State:
slot: 48
#物品展示
DisplayItems:
name: "&f点击出场/下场 {state}"
material: "NETHER_STAR"
model: "-1"
lore:
- ""
- "&f当前出场列表"
- "(1) {roleId_1}"
- "(2) {roleId_2}"
#升级按钮
#lore中会在指定行数内插入消耗的材料文本
LevelInfo:
slot: 30
name: "&f当前等级 +{level} {isUpgrade}"
material: "BOOK"
model: "-1"
#材料lore的格式
format: "{materials} X {value} | 当前{have}"
#套装的格式
suitFormat: " {suitId} : {value}"
#该lore末尾会添加需要的材料 如果有一行仅包含该字符串 {roleInfo} 那他将会从这一行插入角色配置文件的InfoLore
#{suitInfo}显示套装数量
lore:
- ""
- "{roleInfo}"
- ""
#数据库
Database:
type: sqlite #sqlite或者mysql mysql才需要配置下面的部分
dataBaseName: RoleSystem #数据库名称
username: root #账户名称
password: root #密码
port: 3306 #端口
ip: 127.0.0.1 #ip
autoSave: 15 #自动保存间隔 分钟
loadDelay: 40 #加载延迟tick
Suit
#套装的名称
套装名称1:
#当数量达到时触发的 从上往下检查 当套装数量满足后就不会继续检查了
2:
- "生命上限: 10"
4:
- "生命上限: 20"
role文件夹内是角色配置 文件名称即为角色id
展开
#不可用的角色将无法点击该栏位任意位置 但依旧可以预览界面上的物品信息
DisplayItems:
name: "&f示例角色 +{level} {state} | {health}/{maxhealth}"
material: "PLAYER_HEAD"
model: "-1"
#物品为头颅时可选这个
#textura:
lore:
- ""
#是否隐藏该角色 隐藏的角色只有op可见
Hide: false
#这里是提供一个自定义的角色信息描述
InfoLore:
- ""
- "&f生命值: {生命上限}"
- ""
#等级机制
Level:
#基础等级
base: 1
#指定等级的强化消耗
Consume:
#填10 则为到达这个等级需要的材料 识别为物品名称 会去除全部颜色代码
#扣除经济则为 money 这个不能加颜色代码 代码在config里面加
10:
- "&f示例材料1::1"
- "money::100"
#超过10级 但未超过20级 就需要消耗这里的材料
#20以后就没了 那到达20级将不在可以强化
20:
- "&f示例材料1::1"
- "&f示例材料2::1"
- "money::1000"
ArmsType:
#是否启用 关闭后下面功能均失效
enable: true
#判断是否只能放入指定武器 留空 "" 则不启用
#这里用的是正则 不会去除颜色代码
#冒号后面的即为武器类型
capture: "&f武器: (.+)"
#武器类型
type: "单手剑"
#技能列表
Skills:
#这里的技能会按顺序显示在gui内
- "示例角色技能-普通攻击"
#和上面的技能列表一样 需要在技能列表添加
TriggerSkill:
#切换前
BeforeSwitch:
- "示例角色技能-普通攻击"
#切换后
AfterSwitch:
- "示例角色技能-普通攻击"
#定时任务
Task:
#间隔
任务1:
time: 20
skill:
- "示例角色技能-普通攻击"
#属性列表 升级会增加这些属性值
#预计支持as ap
Attributes:
#属性名称
生命上限:
#属性的基础值
base: 15.0
#每级增加的值
per-level: 5.0
max: 50.0
min: 10.0
攻击力:
base: 5.0
per-level: 0.7
skill文件夹内是技能配置 文件名称即为技能id
展开
#mm技能的内部名称
skillName: "示例角色技能-普通攻击"
#基础触发 这里是全局性的 不管config设置什么 这里都有效
# 原版单左键 右键 即为只按下了一次 并不是上面的鼠标连击 用于做普通攻击等 Left->左键 Right->右键
# 弓箭蓄力 DrawBow 拉弓射箭后触发的技能 弩也能触发
# 由该插件接管的拉弓蓄力 DrawBowForce 只有弓可以触发
#预计支持三套触发方式 如果不想要触发 随便设置一些字符就行了
#Combo触发方式
# 原版触发 鼠标连击 连续按顺序点击鼠标左右键 例如R->L->L 即为按下 右键->左键->左键 SR->SL->SL 携带S代表是潜行时 关于这玩意的配置在config里面有
#AX ArcartX 的按键监听
# 该按键监听需要注册 client_key 即客户端按键
# 技能那边填写 id 即为配置项内的按键唯一标识符
#Number 原版数字释放
# 原版触发 使用数字键切换栏位 可以释放对应的技能 第一个快捷栏为0开始
trigger: "LLR"
#这里仅在使用DrawBowForce的时候才填写
#大概1.3秒是原版的蓄力时间
#这里是从上往下检查的 满足了就触发 所以要时间由大到小
#比如当前蓄力为1.5 没到10 下一个是1.2 那就会触发1.2的技能
#如果没有满足的话 那就触发最上面的 skillName
force:
"蓄力技能2": 10.0
"蓄力技能1": 1.2
#展示物品
DisplayItems:
name: "&f示例角色技能-普通攻击 +{level} {isUpgrade}"
material: "ICE"
model: "-1"
#材料lore的格式
format: "{materials} X {value} | 当前{have}"
#该lore末尾会添加需要的材料
lore:
- "&f左键点击鼠标造成一次范围伤害"
- "&f每目标造成 &c{damage} &7伤害"
- ''
- '&e{cooldown} 秒冷却'
- '&9消耗 {mana} 魔力'
- ""
#等级机制
Level:
#基础等级
base: 1
#指定等级的强化消耗 这个材料支持原版的物品材质类型 需要全大写 优先检查材质 其次才是名字
Consume:
#填10 则为到达这个等级需要的材料 识别为物品名称 会去除全部颜色代码
#扣除经济则为 money
10:
- "&f示例材料1::1"
- "money::100"
#超过10级 但未超过20级 就需要消耗这里的材料
#20以后就没了 那到达20级将不在可以强化
20:
- "&f示例材料1::1"
- "&f示例材料2::1"
- "money::1000"
#自定义占位符 可在当前技能内的描述中使用
#也可以在mm中使用 <role.skill.技能名称.占位符key>
Placeholder:
#占位符key
damage:
#基础值
base: 5.0
#每级提升的
per-level: 3.0
mana:
base: 15.0
per-level: 2.0
cooldown:
base: 5.0
per-level: -0.1
max: 5.0
min: 1.0
依赖
暂时仅支持1.20.1版本
可选:AttributeSystem、QiuhuaItemSpace
必须:MythicMobs、PlaceholderAPI、Vault
指令
- /RoleSystem reload 重载所有配置 权限RoleSystem.reload
- /RoleSystem gui [玩家名称] 给指定玩家打开gui 权限RoleSystem.gui
- /RoleSystem gui [玩家1名称] [玩家2名称] 给玩家1查看玩家2的gui 权限RoleSystem.gui.targetPlayer
- /RoleSystem respawn [玩家名称] [角色名称] 给玩家复活指定角色 权限RoleSystem.respawn
- /RoleSystem unlock [玩家名称] [角色名称] 给玩家临时解锁一个角色 权限RoleSystem.unlock
- /RoleSystem lock [玩家名称] [角色名称] 给玩家临时锁定一个角色 权限RoleSystem.lock
展示
以下内容非默认配置,仅展示使用