[MC插件][娱乐|RPG|免费] Webers RPGItem Loader 系列教程 (二)
隔壁富贵我表哥
编辑于 2024年03月11日 14:15
收录于文集
共4篇

插件的基本结构

Weber's RPGItem Loader 插件(以下简称本插件) 是一款基于Bukkit API开发的完全免费的RPG插件。当插件置于plugins文件夹完成第一次运行之后,将会在plugins文件夹中生成WebersRPGItemLoader文件夹,并且将三个配置文件放入其中。这三个配置文件分别是 config.yml、info.yml和items.yml。

Part.1 config.yml

通常来说,当你打开config.yml文件后会包含五行配置文本。其中,

isDebug 默认为false。当设置为true时,插件会在每次发生战斗时向控制台输出相关的信息,会导致刷屏,因此如无特殊需求,请不要启用此功能。

playerOnly 默认为true。此选项是用于节约服务器性能的,当设置为true后,仅玩家参与的战斗才会计算插件的各类加成。如果你想要非玩家实体之间的战斗(例如铁傀儡打僵尸)也可以计算插件的各类加成,请设置为false。

battleEcho 默认为false。当设置为true时,服务器会在战斗时向玩家输出造成的伤害信息,会导致玩家端刷屏。

noOriginDamage 默认为false。当设置为true时,如果战斗涉及本插件内容,本插件以外的其他加成属性(包括武器自身的基本属性)将会被移除。如果你想要本插件兼容其他战斗相关插件,请设置为false。

lightBattleEcho 默认为false。当设置为true时,服务器会在战斗时向玩家输出简化版的伤害信息,可能会导致玩家端刷屏。

loreCheck 默认为false。当设置为true时,插件将会启用lore检测系统,详情请查看后续章节。

所有的配置项的关键字与其对应的设置值之间都有一个空格,如果误删空格会导致配置文件完全失效。

Part.2 info.yml

info.yml是一个包含物品描述内容的配置文件。其格式通常如下

代码块
YAML
自动换行
复制代码
描述集合的名称a:
  name: "显示的名称"
  lores:
    - "第一行lore"
    - "第二行lore"
描述集合的名称b:
  name: "显示的名称"
  lores:
    - "第一行lore"
    - "第二行lore"
复制成功

需要注意的是,所有的双引号都是英文双引号,使用中文双引号会导致报错。

描述集合的名称不允许重名

在应用描述集合后,

name这一项的内容会成为物品的名称

lores这一项的内容会成为物品的lore内容

所有的冒号和后面的内容之间都必须有一个空格

描述集合的名称左侧不允许有空格

name的左侧必须有且只有两个空格

lores的左侧必须有且只有两个空格

lores可以有任意数量的子项。

lores的子项左侧必须有且只有4个空格

lores子项的 - 符号与内容之间必须有一个空格

定义在info.yml文件中的内容仅影响应用后的文本内容,与具体属性无关!

Part.3 items.yml

items.yml的格式通常如下

代码块
YAML
自动换行
复制代码
属性集合的名称a:
  meleePower: 0
  armor: 10
  attackHeal: 0.5
  crit: 0.25
  critMul: 0.05
  currentEntityHealthDamage: 0.01
  innerName: "内名a"
属性集合的名称b:
  meleePower: 0
  armor: 12
  crit: 0.05
  critMul: 0.3
  stealHealth: 0.05
  appendDamage: 2
  innerName: "内名b"
复制成功

需要注意的是,所有的双引号都是英文双引号,使用中文双引号会导致报错。

属性集合的名称不允许重名

属性集合可以有任意多个子项,但是在每个属性集合内,子项不允许重复

需要注意的是,innerName为内名,当启用loreCheck选项后,这个innerName将作为关键词检测,lore中包含此innerName的物品将会应用这个属性集合中的属性。

对于同一玩家,innerName不会多次生效。(即如如果一名玩家身上装备了两件包含 内名b 的装备,只有其中一件装备的内名属性生效)

属性集合的名称左侧不允许有空格

属性集合的任意子项左侧必须有且只有2个空格

所有的冒号和后面的内容之间都必须有一个空格

Part.5 更改物品的描述

当你完成了第二章的配置之后,可以进入游戏来为你的装备修改描述了。

手持你准备更新描述的物品,输入/wrlLBI <描述集合名>   来为手持的装备更新描述。(描述集合名参见Part.3)

例如,我在info.yml文件中配置了一个描述集test1,我手持钻石剑并输入下述指令

代码块
Shell
自动换行
复制代码
/wrlLII test1
复制成功

这样做以后我手持的钻石剑的相关描述将会更改,但如果我不做其他操作, 这把钻石剑将是徒有其表的,也就是说,名称和描述变了,但属性仍然与钻石剑无异。

Part.6 检测NBT标签的装备配置(不适用1.7.10)

注意,1.7.10版本的游戏可以跳过本部分内容。

当你完成了Part.4的配置之后,可以进入游戏来为你的装备附加属性了。

首先确保你有使用本插件命令的权限。

手持你准备附加属性的物品,输入/wrlLBI <属性集合名>   来为手持的装备附加属性。(属性集合名参见Part.4)

例如,我在items.yml文件中配置了一个属性集CharityCore,我手持钻石剑并输入下述指令

代码块
Shell
自动换行
复制代码
/wrlLBI CharityCore
复制成功

这样做以后,即使我手中的钻石剑表面上看没有任何变化,实际上这个钻石剑已经具有了CharityCore属性集中的全部属性。

如果你结合Part.5的内容,为手中的钻石剑添加一个炫酷的描述内容,那么一个cooooool的武器就这样做好了。

Part.7 检测lore描述的装备配置(适用本插件对应的全部版本,包括1.7.10)

在启动服务器之前,请将本插件config.yml文件的loreCheck功能设置为true(参见Part.2)

loreCheck是本插件在1.7.10版本下唯一能够生效的方法。但是如果你的版本高于1.7.10,那么你可以考虑放弃本部分功能。

也就是说对于更高版本而言,本功能是可选项。

当你完成了Part.4的配置后,你可以进入游戏来为你得装备附加属性了。注意,如果要属性集在装备上生效,那么这个属性集中必须含有innerName字段。

在本插件的工作原理中,只要装备的任意lore上含有innerName,则innerName所在的属性集就会在装备上生效。

至于这个lore是如何添加的,本插件并不在意添加的过程,只要结果上lore包含innerName即可。

如果你仅安装了本插件而没有安装其他有关lore编辑的插件,那么你可以通过本插件的info.yml文件来添加lore,即如果一个描述lore的描述集对应的lores的任意子项包含innerName,再通过Part.5的方法为装备添加描述后,innerName就生效了。

需要注意的是,loreCheck支持颜色代码,但是颜色代码只能出现在innerName之前或之后,不允许出现在innerName中间。

可以让多个不同的innerName在同一件装备上生效。