炫宙菌 发表于 2024-8-1 16:41:56

[工具|娱乐|机制]Magic——多元化的高自由度魔法技能插件[1.7-1.21]

本帖最后由 炫宙菌 于 2024-8-1 16:46 编辑





Magic颠覆性的法术插件——Reposted By 炫宙菌

前言

Magic是一款颠覆性的技能插件,可以通过独特的体制制作大量自定义技能。这些技能涵盖大量娱乐、战斗、管理方面,可以说一个个技能就能替代超多插件。作为一个纯粹的技能插件,它的表现远超Mythicmobs和SkillAPI以及姊妹插件Magicspells。目前最新版本为10.8.5,可支持1.6-1.19的多个版本。

使用须知

Magic插件是一款比较纯粹的技能制作插件,可以让玩家享受当法师的乐趣,使用法杖(wand)释放法术、进阶法术、成为法术大师本帖提及的法术、技能等词汇指的都是spell;魔力、法力指的都是mana。部分内容需要等待WIKI翻译完成后才便于放出,敬请期待。如有错别字,请指出或忽略。帖内出现的“||”是行内的分割号,用以区分指令和注解
<>为必填项,[]为选填项,()为注释项

插件功能


[*]自己制作心中所想效果的技能
[*]支持Cauldron系Mod端
[*]联动Heroes BattleArena SkillAPI等插件
[*]可直接使用SkillAPI的蓝量
[*]使用魔杖储存技能并快捷触发技能
[*]提高技能的专精等级
[*]多个技能之间灵活配合
[*]指令权限控制触发技能
[*]支持修改海量参数如速度、转速、坐标、拉力推力、距离、时效、偏移等
[*]支持多种触发方式
[*]支持所有实体、粒子、音效等
[*]支持函数配置参数
[*]支持多状态效果叠加
[*]自定义合成配方
[*]一目了然的技能配置结构
[*]独特的经验升级系统
[*]法杖丢失快速寻回
[*]内置NPC系统
[*]可配置的魔力值位置
[*]快速载入数百个技能
[*]全配置自定义
[*]被动型技能
[*]自带数百个技能
[*]自带技能图标、自定义音效纹理包且提供自动下载、自动更新Hash值
[*]资源包合成小工具
[*]制作简单易上手的魔法商店
[*]玩家通过消耗技能点更换技能粒子颜色、粒子效果
[*]一键添加所有已掌握技能到法杖
[*]粒子绘制URL图
[*]…………
Magic的魔力远远超出想象

命令·权限


当然不只是这么些,上图只是常见常用的权限,足以应付大多数情况。
全部权限:
玩家权限:
默认所有玩家都有权使用法杖和所有法术
可以通过给玩家反权限以限制:
-Magic.wand.use : 玩家不能使用法杖
-Magic.use.<wandname> : 玩家不能使用指定的法杖或魔法物品
-Magic.wand.craft : 玩家不能合成法杖
-Magic.cast.* : 玩家不能释放任何一个法术
Magic.cast.<spellname> : 玩家可以释放某一法术
默认地,玩家是不能使用任何命令的(只能通过法杖一类释放了).
Magic的权限遵从格式: "Magic.commands.<命令>.<子命令>".
例如:
Magic.commands.mskills : 玩家可以使用/mskills 技能选择器
Magic.commands.spells : 玩家可以使用/spells 命令
以此类推
管理员权限:
可能也需要限制一些物品或法杖不让管理员使用,默认情况下他们的确可以通过命令生成任何物品

Magic.commands.mgive : 可以生成物品或法杖
Magic.commands.wand : 只可以生成法杖
-Magic.create.* : 不可以生成物品或法杖
Magic.create.wand : 可以生成法杖名"wand"
Magic.create.battle : 可以生成法杖名"battle"
Magic.create.stone : 可以生成石头
Magic.create.hylianshield : 可以生成名为 hylianshield(海拉尔之盾,不知道是玩塞尔达的梗还是Mod物品名)的物品
跳过权限:
下面的权限默认OP有,可以跳过许多种检测:

Magic.bypass : 跳过大部分的限制检测
Magic.bypass_build : 跳过技能释放时的建造限制检测
Magic.bypass_break : 通过技能释放时的方块破坏限制检测
Magic.bypass_pvp : 跳过PVP限制检测
Magic.bypass_restricted : 跳过限制的材料建造检测
Magic.bypass_hidden : 玩家可以在TAB补全和技能列表里面看到隐藏的技能
Magic.override_bind: : 玩家可以使用法杖绑定给其他玩家
Magic.bypass : 玩家跳过其他权限检测
Magic.wand.override_drop : 玩家可以跳过防丢弃法杖、放在箱子里面的检测
Magic.wand.override_locked : 玩家可以更改锁定的法杖的配置
Magic.wand.override_stash : 玩家可以把绑定的法杖放进箱子
Magic.wand.use.protected : 玩家可以使用带"protected"保护标志的设定,意味着法杖无敌化
Magic.wand.use.powered : 玩家可以使用带"powered"强度标志的设定,意味着跳过某些限制
物品生成权限:
Magic.commands.mgive : 可用 /mgive 生成任意物品
Magic.commands.wand : 可用 /wand 生成法杖
Magic.create.<name> : 可用 /wand 或 /mgive获取指定的法杖。所有的法杖都是默认可用的。
-Magic.create.* : 给负的权限以限制使用/wand和/mgive的权限
法杖相关权限:
Magic.commands.wand.describe : 可用 /wand describe 来显示法杖的信息
Magic.commands.wand.add :可用 /wand add 添加法术或刷子到当前 法杖
Magic.commands.wand.add.spell.<spellname> : 玩家可以添加指定的法术到法杖上,所有法术默认是被允许添加的
Magic.commands.wand.add.material : 玩家可以添加一个材质到法杖上,默认开启
Magic.commands.wand.bind : 玩家可以设置一个绑定在自己身上的法杖(可自我绑定)
Magic.commands.wand.unbind : 玩家可以解绑法杖
Magic.commands.wand.remove : 可用 /wand remove 来从法杖上移除法术或刷子
Magic.commands.wand.create : 可用 /wand create 让一个物品变成一个空法杖
Magic.commands.wand.destroy : 可用 /wand destroy 使一个法杖变回普通物品
Magic.commands.wand.delete : 玩家可用/wand delete 来删除一个已存储的法杖模版
Magic.commands.wand.enchant : 玩家可用/wand enchant 来随机强化一个法杖
Magic.commands.wand.name : 玩家可用/wand name 以重命名
Magic.commands.wand.list : 玩家可用/wand list 可以观看所有法杖
Magic.commands.wand.save : 玩家可用/wand save 可以存储一个法杖物品为新的配置模版
Magic.commands.wand.fill : 玩家可用/wand fill 可以添加所有可添加的法术到法杖上
Magic.commands.wand.configure : 玩家可用/wand configure 以修改法杖配置
Magic.commands.wand.upgrade : 玩家可用/wand upgrade 改进法杖属性(?)
Magic.commands.wand.duplicate : 玩家可用/wand duplicate 创建法杖的副本
Magic.commands.wand.organize : 玩家可用/wand organize 重新整理法术背包
Magic.commands.wand.restore : 玩家可用/wand restore 寻回丢失的已绑定法杖
Magic.commands.wand.unlock : 玩家可用/wand unlock 解锁一个锁定的法杖
Magic.commands.wand.override : 玩家可用/wand override 修改覆盖的法术

使用 /wandp 命令的权限和 /wand 命令相同
/wandp <玩家名> <子命令> 的效果就和此玩家使用 /wand <子命令> 一样。这样可以用来控制其他玩家对法杖进行一些操作,对于其他插件管理玩家法杖十分有效.
Magic.commands.wandp.* : 玩家可以使用 /wandp命令以控制其他玩家使用法杖类命令
Mage配置:
Magic.commands.mage.debug : 玩家可为自己或他人开启debug模式
Magic.commands.mage.check : 玩家可以检查施法、破坏、建造等的权限
Magic.commands.mage.getdata : 玩家可检查施法者数据或释放的法术
Magic.commands.mage.setdata : 玩家可修改施法者数据或释放的法术
Magic.commands.mage.reset : 玩家可以完全重置施法者的数据
物品改动:
/mitem命令可以在游戏中修改 非法杖物品

Magic.commands.mitem.add : 添加附魔、属性或lore
Magic.commands.mitem.remove : 移除附魔、属性或lore
Magic.commands.mitem.describe : 显示物品的相关信息
Magic.commands.mitem.duplicate : 制造一个物品的副本
Magic.commands.mitem.destroy : 摧毁物品
Magic.commands.mitem.skull : 创建一个基于书本内附数据的自定义头颅
Magic.commands.mitem.save : 把一个物品保存为模版
Magic.commands.mitem.delete : 删除一个已保存的物品(模版)
Magic.commands.mitem.worth : 显示物品的价值(需要Vault?)
Magic.commands.mitem.type : 修改物品种类
Magic.commands.mitem.export : 导出所有的物品并命名为一个csv文件
魔法生物:
可使用魔法生物的生成和管理指令:
Magic.commands.mmob spawn :生成一个自定义的魔法生物
Magic.commands.mmob list :列出自定义魔法生物种类
Magic.commands.clear 清除所有在已载入的世界的自定义生物
图片地图:
以下是一些 /mmap 命令的权限

Magic.commands.mmap load : 加载一个图片地图
Magic.commands.mmap list : 列出所有 已加载的图片地图
Magic.commands.mmap give : 给玩家一个图片地图
Magic.commands.mmap import : 通过Pixelator(像素图片转换工具)导入图片地图

命令施法:
使用 /cast 命令可以在游戏里直接施法

Magic.commands.cast : 玩家可使用 /cast
Magic.commands.cast.parameters :玩家可使用参数修改施法(譬如修改范围、伤害)
注:使用参数施法可能会很危险, 这个权限最好只给服主或者完全值得信任的管理员。
举例说明: /cast 火舞 无伤大雅,但是一旦使用了/cast fire radius 1000 就会出大问题,将范围参数改成了1000,就会看到一千格的生物都着火
其他管理权限:
Magic.commands.magic.load : 可以重载 spells.yml, wands.yml, config.yml 以及 messages.yml. (包括defaults内)
Magic.commands.magic. : 所有命令遵从本身所具有的样式

命令
Wand Commands 法杖命令
/wand : 创建一个新的、空的法杖.
/wand <名字> : 创建一个法杖,但是基于wands.yml中已经预设的法杖
/wand list : 列出wands.yml中可用的法杖列表模版
/wand enchant [#等级] : 随机添加技能和配置到法杖
/wand add \技能名> : 在手持的法杖上面添加一个技能
/wand restore : 恢复玩家丢失的法杖
/wand organize : 重构法杖上的技能
/wand fill : 把所有已知的(而且有权限的)技能绑定到法杖上面
/wand remove <技能名> : 清除当前手持法杖上全部技能
/wand configure <属性> <数值> : 编辑法杖的可配置项(详见下文)
/wand upgrade <属性> <数值> : 编辑法杖的可配置项,但是不会降低任何数值(见下文)
/wand override <参数> <数值> : 修改法杖释放技能的方式
/wand bind : 绑定法杖,这样就只有你自己才能用了
/wand unbind : 取消绑定, 包括已经保存的备份
/wand save <名字> : 储存法杖并添加到新配置模板
/wand delete <id> : 删除一个法杖模版
/wand combine <法杖> : 向现有的模版套入新的法杖(更新覆盖)
/wand add brush <材质> : 添加当前手持法杖的新材质
/wand remove brush <材质> : 移除当前手持法杖的一个材质
/wand name <名字> : 命名法杖(你也可以通过铁砧改名)
/wand describe : 列出法杖的所有配置项,与 "configure"一同使用
/wand unlock : 解锁一个锁定的法杖,以便于编辑 ("/wand configure locked "可以锁定)
/wand create : 基于你手持的物品创建一个新法杖
/wand destroy : 取消手持法杖的附带效果 (相当于摧毁)
/wand duplicate : 创建一个你手上法杖的副本
/wand enchant xp : 提升你所有的XP等级(消耗XP)到法杖。可通过命令方块制作一个升级系统
/wandp <玩家> <...> : 这样就可以使用/wand 系命令来指定玩家使用/wand命令了
Mgive命令

/mgive 命令运作时类似于原版或Ess的/give命令。可以通过这一命令给予玩家任何物品,包括魔法物品如法杖、技能或升级。同样地,可以给予玩家XP, 同时这个命令或许还可以解决/xp命令无效的故障
/mgive [玩家] <物品> [数量] : 最基本的命令格式。只有物品是必填项
/mgive [玩家] elder : 给予[玩家] 一个“Elder”法杖
/mgive [玩家] sp 100 : 给予[玩家] 100 技能点
/mgive [玩家] sp:100 : 给予[玩家] 一个价值100技能点的物品
/mgive fling 32 : 给你自己 32次 "fling" 技能的使用权。这个使用权可以堆叠,也可以放到箱子里面或者丢给其他玩家
/mgive [玩家] xp 200 : 给予 [玩家] 200 XP, 即便他手持着法杖也有效
/mgive [玩家] gold_nugget 32 : 给予 [玩家] 32 金粒。物品格式必须遵从Bukkit's材质
/mgive spell:wolf :给你自己"wolf" 法术。“spell:”、“wand:”、“upgrade:”这类前缀可用来区分同名项
/mgive book:engineering : "book:<类别>" 的物品将会创建一本技能书,所有属于这一类别的技能都会被囊括在内,同时标明Lore和消耗
/mgive book:all : 创建一本无所不能的技能书,按技能排列、囊括全部的技能

Utility Commands 特殊管理命令

/magic load : 重载配置文件,包括技能的配置
/magic save : 强制储存一次玩家数据、其他数据(如遗失的法杖或图片地图)
/magic commit : 提交所有的更改 (相当于对所有玩家都使用一次"Commit"技能)
/magic cancel : 【取消所有的制作中的??】Cancel all in-progress construction batches.
/magic list <玩家> : 列出所有遗失的法杖、地图或自动装置(可能这个词不准确)。"tasks"模式则可以检测所有运行中的失效插件任务
/magic clean <玩家> : 清除玩家未拥有的的遗失的法杖
/magic clean ALL : 清除所有世界的所有法杖
/spells : 列出玩家已知的全部技能。玩家可以查看他们有权限释放的的所有法术的详细信息。虽然已经移除了一些奇异的的东西,此命令仍可安全给予玩家。玩家可以看到有关法杖上技能的信息,和游戏里面看到的一样
The Mage Command Mage命令

此类命令可以检查或修改玩家的数据

/mage check <玩家> : 检查玩家的权限,展示他们的位置和可用的技能
/mage debug <玩家> : 切换该玩家的Debug输出模式
/mage describe <玩家> : 转储玩家的施法信息、存储数据等
/mage configure <玩家> <spell/data> <数值> : 设置玩家的某个数据,如修改施法等
/mage reset <玩家> :完全重设一个玩家所有的存储数据
The Cast Command 施法命令

The Cast Command 施法命令
/cast 命令在前台游戏中十分有用。可以让你直接释放任何法术,但是它也可以让你使用命令参数制作可配置的法术系统。
许多法术都需要基于某个法术配合参数。你可以自行调整参数以实现法术的多样化而无需动用后台配置。掌控服务器后台的人可以把配置好的技能储存在spells.yml里(只要放到spells文件夹就可以),这样玩家就能使用新的法术了。

例如"boom", "kamikazee", "kaboom" 和 "nuke" 这几个技能都是"BoomSpell"的迭代或变形产物, 它们的区别可能只是修改了"size"这一个参数而已。譬如"nuke"设置的Size值是20,但是你又想临时把它调大10倍玩玩,那么请使用 /cast boom size 200 即可

在施法命令里面调整的参数和在spells.yml里面的一样,都会对该技能中声明过的全体起效,例如 /cast <技能名> <参数1> <数值1> <参数2> <数值2>.浏览起来和spells.yml里面的别无二致,该怎么设置就是什么样的效果
更多技能可用参数的细节文档

实用命令
/cast
cast的命令可以快速检测不同参数的效果,制作好一个新技能,用/cast命令可以快速释放,上面我们说过了
/wand override 命令可用来修改指定法杖释放法术的方式
* 让所有的法术必须通过下面这个法杖参数释放 (慎用!)
/wand override bypass_undo true
* 只是减少“Blink”法术的冷却时间
/wand override blink.cooldown 0
* 让“Missile”技能的导弹飞行速度降低为5
/wand override missile.velocity 5
/mage debug
此命令会开启指定玩家的Debug输出,后面跟进一个等级数可以调整输出的强度,等级越高输出越详细。
* 开启或关闭Debug
/mage debug [玩家]
* 显示一大堆信息,这样做可能会刷屏
/mage debug [玩家] 20
/mage check
通过权限有效检测问题。如果玩家有时没法施法,用这个命令在他们手持法杖并且技能激活时使用可以查一下原因

/wand save
如果你在前台游戏新建或者修改了一个法杖,最好保存一下到配置文件里面。"/wand save Test" 就会在"plugins/Magic/wands/Test.yml"路径创建一个新的法杖模版文件。这个新的法杖当然可以使用/wand或者/mgive召唤出来


插件截图

以下内容均来自自用服务器、本地测试
https://attachment.mcbbs.net/data/myattachment/forum/202103/15/005935v9r2p7mc9m2m29h2.jpg







授权搬运

原作者授权



二搬授权






messages.yml汉化

本汉化文件于Magic-8.4.2和10.8.5等版本下译制,使用方法为:放入\plugins\Magic\messages并重启服务器,请注意区分版本
未经允许不可转载此文件



config.yml汉化

本汉化文件于Magic-8.4.2版本下译制,将Magic自带的全部配置注解汉化完毕,请参照注解写入需要的配置
再次强调,本插件的配置需要自己根据实际情况逐条写入,请勿直接把此文件放入plugins\Magic\config目录下
未经允许不可转载此文件



下载

请前往官网下载,下列数字为MC适配版本:
1.9.3-1.19
1.9
1.8.8-1.8.9
1.8.1-1.8.8
1.7.9
1.7-


使用方法

安装插件后,插件本身自带一套配置,如图所示
可以看到有不同名字的以yml为格式的文件,相当于插件的一类功能的简易配置,而对应名字的文件夹代表了这一类功能的复杂配置譬如说spells.yml可以增减技能种类,而spells文件夹同样也可以,只需要把额外的yml文件放到文件夹里面就可以以下为这些文件的作用,加粗表示常用,反之不常用arena.yml用以储存MagicArena竞技场数据attributes.yml用以设置插件自带的属性
automata.yml涉及插件一项功能,其作用为通过方块施法、生成生物、释放效果等
classes.yml用以区分技能、法术以便管理
config.yml用以改变插件的配置
crafting.yml用以自定义配方
data用以储存一些功能(如图片地图)及玩家的数据effects.yml用以配置特效一类
items.yml用以制作Magic内部专属物品
kits.yml用以管理Magic的礼包
materials.yml用以管理插件所识别的方块材质,比如说默认把空气看作是透明的,也可以把屏障看作是透明的以便实现一些技能的弹射效果
messages.yml用以配置插件可见的语言信息
mobs.yml用以管理魔法生物
modifiers.yml用以配置条件,实现更灵活的技能触发
paths.ym用以配置熟练度,让玩家进阶以学习更多法术
spells.yml便是法术/技能文件,可以藉此制作、删除、修改技能大部分内容
wands.yml是法杖配置,能够让玩家借助法杖施法、进阶、附魔等
worlds.yml用以进行一部分世界管理
配置方法:Magic不同于一般插件的一点在于它的配置并非一个供玩家修改的文件,而是默认调用自己的配置(即plugins\Magic\defaults下的几个文件),玩家如需改变必须额外配置,玩家自行配置的内容会替换掉默认配置,其他未改变的内容仍然采用默认配置
如图所示,需要自己在config文件夹里写入一个config.yml(或者放到Magic文件夹下),里面配置一些自己需要的配置
为了防止插件加载默认配置,玩家可以写入load_default_configs: false建议修改的配置:
[*]如果你使用了Paper核心,可能需要将max_velocity:后的值改成4
[*]如果想关闭/wand 和/mgive指令中法杖的自动绑定,请把bind_on_give:后的值改为false
[*]drop_original_block: false可以阻止Magic破坏方块造成的方块掉落

[*]为给服务器留有充足的时间保存数据,请把file_load_delay:后的值改成5000,但是会导致玩家登陆5秒内无法使用Magic的功能
[*]如需在关服或区块卸载时自动清除魔法生物,请设置despawn_magic_mobs: true
[*]如果同时安装了SkillAPI和本插件又不想法力系统赘余,可添加use_skillapi_mana: true,这样会使用SkillAPI的法力系统


技能配置


拿前面展示过的一个技能讲解,此技能可以发射一支射速极快、有效范围极长的箭矢且不受重力影响的“箭”穿云箭:
icon: diamond_axe:242
icon_disabled: diamond_hoe:242
icon_url: http://textures.minecraft.net/texture/ea96e1b8c4d458f8f5443fa66eb376981f7b2ec385386db67faf3f1589094
category: combat
worth: 5000
earns_sp: 8
brush_effects: false
actions:
    cast:
    - class: CustomProjectile
      actions:
      - class: PotionEffect
      duration: 4000
      - class: Delay
      delay: 200
      - class: Asynchronous
      requires_entity_target: true
      actions:
      - class: Repeat
          repeat: 1
          actions:
          - class: Damage
          - class: Delay
            delay: 300
effects:
    cast:
    - class: EffectSingle
      sound: magic.zap_crack
      sound_pitch: 1.5
      location: origin
      effectlib:
      class: VortexEffect
      iterations: 100
      particle: end_rod
      radius: 0.2
      grow: 0.5
      updateLocations: false
      updateDirections: false
    tick:
    - particle: fireworks_spark
      location: target
    - particle: end_rod
      location: target
    hit_entity:
    - class: EffectSingle
      location: target
      target_location: body
      particle: end_rod
      particle_count: 40
      particle_offset_x: 0.4
      particle_offset_y: 1
      particle_offset_z: 0.4
      effectlib:
      class: AnimatedBall
      particle: end_rod
      duration: 3000
      y_factor: 1.5
      particles: 50
      particle_count: 4
      particle_offset_x: 0.02
      particle_offset_y: 0.01
      particle_offset_z: 0.02
      offset: 0,-0.2,0
      size: 0.6
      disappear_with_origin_entity: true
    hit:
    - class: EffectSingle
      location: target
      particle: fireworks_spark
      particle_count: 10
      particle_offset_x: 0.2
      particle_offset_y: 0.2
      particle_offset_z: 0.2
      particle_data: 0.4
      sound: magic.zap
      sound_pitch: 1.2
      sound_volume: 0.5
    - location: target
      particle: end_rod
      particle_count: 10
      particle_offset_x: 0.1
      particle_offset_y: 0.1
      particle_offset_z: 0.1
    hit_block:
    - effect: step_sound
      location: target
    - location: target
      particle: block_crack
      particle_count: 50
      particle_offset_x: 0.8
      particle_offset_y: 1
      particle_offset_z: 0.8
    headshot:
    - class: EffectSingle
      location: target
      particle: fireworks_spark
      particle_count: 20
      particle_offset_y: 0.5
      particle_offset_x: 0.5
      particle_offset_z: 0.5
      sound: magic.zap
      sound_volume: 0.3
      particle_data: 0.4
    - sound: entity_player_attack_crit
      sound_pitch: 0.8
      location: target
      particle: crit_magic
      particle_count: 30
      particle_offset_y: 1
      particle_offset_x: 1
      particle_offset_z: 1
      particle_data: 0.5
headshot_parameters:
    damage_multiplier: 1.5
parameters:
    destructible: destructible,destructible2,destructible3,transparent
    allow_max_range: true
    velocity: 800
    range: 80
    hitbox: true
    block_hit_count: 3
    entity_hit_count: 3
    target_type: Damageable
    target_count: 3
    player_damage: 82
    entity_damage: rand(400,600)
    target_breakables: 1
    reorient: false
    cooldown: 10000
    allow_passthrough: true
    potion_effects:
      slow: 4
      blind: 2
    undo: 1000
    brush: sapling
    transparent: air,water,stationary_water
costs:
    arrow: 1Magic的技能大致可分为六个部分,基本属性、动作【actions】、效果【effects】、参数【parameters】、特定参数、消耗【costs】每一个部分下设YAML语法格式的子配置项,同一层次下(即首字符前空格相同的行)拥有同样的地位初次使用Magic时难免会有畏难情绪,因为其配置过于复杂,这也是它可实现大多技能插件无法办到功能的优势基本属性icon: diamond_axe:242 #技能图标,此处使用了物品损害值,用以在一个物品ID下添加多个模型
icon_disabled: diamond_hoe:242 #技能无法使用时的图标
icon_url: http://textures.minecraft.net/texture/ea96e1b8c4d458f8f5443fa66eb376981f7b2ec385386db67faf3f1589094 #图标URL
category: combat #技能的类别,用以管理
worth: 5000 #技能的价值,在一些技能商店功能有用处
earns_sp: 8 #释放技能可获得的技能点数
brush_effects: false #刷子效果关闭如果仅作为一个可释放的技能且没有特殊要求,基本属性可以不写任何内容
动作actions:
    cast: #释放状态时的动作
    - class: CustomProjectile #声明此技能为自定义投掷物技能
      actions: #在自定义投掷物的声明下添加子动作项
      - class: PotionEffect #声明此技能有药水效果,注意此声明位于第二级,它的上级为CustomProjectile
      duration: 4000 #可以在parameters:下配置参数,也可以在动作处就写明参数,这个参数仅适用于该声明下
      - class: Delay #声明此技能有延迟
      delay: 200 #延迟为200毫秒
      - class: Asynchronous #声明此技能有异步释放
      requires_entity_target: true #需要实体作为目标
      actions:
      - class: Repeat #声明此技能有重复执行
          repeat: 1 #这里只是展示,写的重复次数为1相当于不重复
          actions:
          - class: Damage #这一层次位于第三级,受制于Repeat,而Repeat受制于CustomProjectle,一环扣一环
          - class: Delay #在Asynchronous层次下又有延迟执行
            delay: 300 #延迟300毫秒actions规定了技能的释放框架,决定了技能有什么样的功能和状态,是一个技能的核心这里只是列举了一部分内容以供展示学习,更多的可配置内容需要到资料库查看
效果effects:
    cast: #释放时的效果
    - class: EffectSingle #声明此效果为简单效果
      sound: block.anvil.hit #此效果使用的音效,可使用原版音效(注意版本不同格式有不同)和资源包音效(需要有对应的文件),不区分大小写
      sound_pitch: 1.5 #此音效的音调,原版有效范围在0.0-2.0,但是资源包可使用更大范围的数值(负值、大于2)
      location: origin #位置为源位置,即施法者所在位置
      effectlib: #调用Effectlib的效果
      class: VortexEffect#效果为漩涡
      iterations: 100 #迭代次数,用于设定粒子密度
      particle: end_rod #粒子效果为末地烛
      radius: 0.2 #范围,这里规定的是漩涡的半径,太小的话就像是一条线了
      grow: 0.5 #扩散,可以绘制更美的图案
      updateLocations: false #不更新位置,如果更新的话,会随着施法者的视角而变动(延长一下技能时间或许可以做一个激光束技能)
      updateDirections: false #更新方向,通常和上面一项一起使用
    tick: #每tick时技能的效果
    - particle: fireworks_spark#第一个效果是粒子烟花,可以往下另起一行配置颜色(color)
      location: target #位置是目标位置
    - particle: end_rod #第二个效果是粒子末地烛
      location: target
    hit_entity: #击中实体时的效果
    - class: EffectSingle
      location: target
      target_location: body #目标的位置为身体,可以写hit、feet、head等
      particle: end_rod
      particle_count: 40 #粒子数目
      particle_offset_x: 0.4 #粒子的X方向相对偏移,如果使用了大于一个粒子则最好设置相对偏移以防粒子过密
      particle_offset_y: 1 #粒子的Y方向相对偏移
      particle_offset_z: 0.4 #粒子的Z方向相对偏移
      effectlib:
      class: AnimatedBall #声明为动画球状粒子
      particle: end_rod
      duration: 3000 #持续时间为3000毫秒
      y_factor: 1.5 #Y方向的拉伸/压缩系数,>1则为拉伸,0-1则为压缩
      particles: 50 #粒子分布数
      particle_count: 4 #每一处的粒子数量
      particle_offset_x: 0.02
      particle_offset_y: 0.01
      particle_offset_z: 0.02
      offset: 0,-0.2,0 #效果的位置偏移,顺序为x,y,z,这里只是Y方向向下沉0.2格
      size: 0.6 #尺寸
      disappear_with_origin_entity: true #如果源实体无效,是否继续播放效果?一般来说玩家传送走就是一种无效情况
    hit: #击中时的效果
    - class: EffectSingle
      location: target
      particle: fireworks_spark
      particle_count: 10
      particle_offset_x: 0.2
      particle_offset_y: 0.2
      particle_offset_z: 0.2
      particle_data: 0.4 #粒子数据值
      sound: magic.zap #这个音效是Magic自带资源包中的音效,原版并没有
      sound_pitch: 1.2
      sound_volume: 0.5 #音量,更大值可以让更远的玩家听见
    - location: target
      particle: end_rod
      particle_count: 10
      particle_offset_x: 0.1
      particle_offset_y: 0.1
      particle_offset_z: 0.1
    hit_block: #击中方块时的效果
    - effect: step_sound
      location: target
    - location: target
      particle: block_crack #这是方块破坏时的粒子,可以另起一行material: 方块名以实现特定方块的破坏粒子
      particle_count: 50
      particle_offset_x: 0.8
      particle_offset_y: 1
      particle_offset_z: 0.8
    headshot: #爆头时的粒子效果
    - class: EffectSingle
      location: target
      particle: fireworks_spark
      particle_count: 20
      particle_offset_y: 0.5
      particle_offset_x: 0.5
      particle_offset_z: 0.5
      sound: magic.zap
      sound_volume: 0.3
      particle_data: 0.4
    - sound: entity_player_attack_crit
      sound_pitch: 0.8
      location: target
      particle: crit_magic
      particle_count: 30
      particle_offset_y: 1
      particle_offset_x: 1
      particle_offset_z: 1
      particle_data: 0.5
效果涵盖音效、粒子等及其可配置的所有属性,一个好的技能必须要有不同情况下的不同效果表现,如爆头时制造更醒目的效果、击中方块发出沉闷一些的音效等
参数    destructible: destructible,destructible2,destructible3,transparent #此技能可破坏的方块,这里的前三个需要在materials中配置,如果不配置则会使用默认的Magic\defaults\materials.defaults.yml的配置,由于此技能后面有参数关闭了破坏方块的功能,所以这里写什么也没有用
    break_blocks: false #禁止破坏方块
    allow_max_range: true #允许最大距离,用以防止技能没有打中实体或方块时仍能达到最大距离
    velocity: 800 #技能速度,此处表现为穿云箭的射击速度,几乎是一瞬间达到最远
    range: 80 #距离为80,改成800以实现800米外把头打
    hitbox: true #有碰撞箱
    block_hit_count: 3 #方块击中次数
    entity_hit_count: 3 #实体击中次数
    target_type: Damageable #目标类型,也可以是LivingEntity/Player等
    target_count: 3 #目标数量
    player_damage: 82 #对玩家伤害为82,固定值
    entity_damage: rand(400,600) #对实体伤害是400-600的随机数
    target_breakables: 1 #对目标的损坏量
    reorient: false #关闭重新定位
    cooldown: 10000 #技能冷却为一万毫秒
    allow_passthrough: true #允许穿透
    potion_effects: #药水效果,如果actions前面没有药水声明也无效
      slow: 4 #缓慢Ⅴ
      blind: 2 #失明Ⅲ
    undo: 1000 #破坏方块后多久恢复,因为有禁止破坏方块所以此处无效
    brush: sapling #刷掉被破坏的方块,这里替换为树苗
    transparent: air,water,stationary_water #传播介质,这里是水、静止的水、空气
参数规定了此技能全局的数值,如伤害、距离、有效时间、冷却等如果在actions下已经有参数,则不会调用这里的参数
特定参数headshot_parameters:
    damage_multiplier: 1.5 #伤害为正常的1.5倍用于一些特定情况的参数,这里对应爆头时的伤害加成
消耗costs:
    arrow: 1
    mana: 10消耗的种类不止一个
currencyVault的钱
health活的实体的生命值
hunger玩家饥饿
item在config.yml中存在的物品
levels经验等级
mana法力
sp技能点
xp玩家经验,根据等级和进度百分比计算





资源包

Magic官方资源包Magic有一个官方的资源包,它提供了一些物品以供使用。木锄和金剑被用作法杖材质(修改一些NBT数据实现禁用资源包Magic会自动提供资源包下载。如果不想,请按照此法添加内容在plugins/Magic/config.yml关闭:resource_pack: ""
自定义资源包你也可以设置resource_pack 来通过URL让玩家下载自定义的资源包,依旧由Magic管理此功能头颅图标截至Magic6.1,技能图标被放在了资源包当中。所以,如果你关闭了资源包,你可能也需要恢复基于玩家头颅形式的图标(此内容不再更新!)url_icons_enabled: true如果你重新打开了玩家头颅图标,可能需要参考一下 资源包中旧玩家头颅图标模型.或者也可以在server.properties或Magic里面放好资源包请注意,如果你没有使用资源包或者自定义的版本,法杖显示的样子就是木锄,技能图标将不可见且自定义音效无法播放(如magic.zap)。你当然可以随意更改Magic官方资源包的内容,把它放到自己的资源包里下载当前资源包的版本有可能会发生变化,如果出于某些原因需要手动下载,最好在游戏中使用指令 /getrp url获得最新的URL。你也可以简单地通过检阅 plugins/Magic/defaults/config.defaults.yml 找到resource_pack下方写的URL。在服务器中使用如果你想在服务器中使用资源包,请把server.properties中的资源包链接删除。Magic将会自动帮助你使用正确版本的资源包,也可以自动更新Hash值,所以玩家在资源包更改会须重新下载资源包同样可作为示例的自定义配置,当使用默认配置时也会默认采用旧的版本的资源包资源包旧版本,会占用一部分原版物品(毕竟在以前没有自定义模型时纹理资源必须依托一个物品)
[*]一些法杖:

[*]木锄, 默认法杖
[*]金斧, 大师法杖the master wand
[*]金锄,狼法杖The golden hoe, the Wolf wand
[*]金镐,隐身斗篷The golden pickaxe, the invisibility cloak
[*]金锹,魔法扫帚The golden shovel, the broomstick
[*]金剑,大师之剑 the Master Sword
[*]怪物蛋方块 (只有在玩家背包里才有效,而不是对于怪物蛋方块)

[*]建筑师法杖

如果你使用了MagicV6-(适用于1.8服务器), 下面的内容可能有用:
[*]http://rp.elmakers.com/Magic-RP-5.zip
[*]http://rp.elmakers.com/Magic-potter-RP-5.zip
[*]http://rp.elmakers.com/Magic-bending-RP-5.zip
如果你使用了MagicV5-(适用于1.7服务器), 下面的内容可能有用:
[*]http://rp.elmakers.com/Magic-RP-4.zip
[*]http://rp.elmakers.com/Magic-potter-RP-4.zip
[*]http://rp.elmakers.com/Magic-bending-RP-4.zip
这些资源包大体和现有版本相同,但它们覆盖了僵尸马的材质,用于骑行扫帚时的2D法杖材质These RPs should be identical to the current versions, except that they include an override for the zombie horse texture, used for the 2D broom texture while riding.自定义资源包你可以随意下载和修改Zip压缩包可能还需要调整Magic的一些配置以适应你的更改。最简单的修改方法是替换掉资源包中的模型。配置和模型之间的联系是通过自定义模型数据建立的。设置起来很简单,只需要开启任何内置模型即可(如stick.json),现在来看看它是如何工作的{
"parent": "minecraft:item/handheld",
"textures": {
    "layer0": "minecraft:item/stick"
},
"overrides": [
    {"predicate": {"custom_model_data": 18001}, "model": "item/custom/old_survival_wand1"},
    {"predicate": {"custom_model_data": 18002}, "model": "item/custom/old_survival_wand2"},
    {"predicate": {"custom_model_data": 18003}, "model": "item/custom/survival_wand1"},
... etc
每一个在"overrides"列出的模型都要对应一个自定义模型数据\你可以配置、使用这些物品,输入 /mgive stick{18001}旧版的Magic或许需要更复杂一点的格式:/mgive stick{CustomModelData:18001}1.14- (使用损害值而非自定义模型数据)资源包 和配置之间的联系大体是由物品及其耐久连接起来的如果你想创建并加入新模型,你需要了解插件有关加入自定义模型的技术:https://www.spigotmc.org/wiki/custom-item-models-in-1-9-and-up/大多数资源包的模型都是用BDCraft Cubik制作的。 除此之外,我们无法提供任何制作自定义模型的支持或帮助,请在其他地方自行寻找教程合并有时候你可能需要把Magic的资源包和其他资源包合并。这样做成一个属于你自己服务器的资源包,或者作为其他插件所需要的资源包我们提供了一个实用工具: 资源包合并建议使用这个小工具,因为它可以正确处理合并中的冲突。多数情况下可以让您的资源包和其他插件的资源包相结合,即便同时使用损害值和自定义模型手动操作的流程:
[*]解压你的材质包
[*]解压Magic材质包
[*]复制Magic材质包到你资源包上
[*]压缩这个结合体文件夹且备份
有时候,你会发现Magic使用的物品和你的资源包内物品有冲突如果你想要通过Magic修改任何物品,可以这么做。可以在此处看到Magic主要使用的物品:https://github.com/elBukkit/MagicPlugin/blob/master/Magic/src/main/resources/defaults/items/icons.yml如果你想修改物品作为技能图标的话,你可以按以下两个步骤:
[*]在解压Magic资源包之后(第二步之前),修改 assets/minecraft/models/item/diamondaxe.json 为 ironaxe(只是举例)
[*]修改 plugins/Magic/items.yml,添加一行如spell_icon: iron_axe的内容
这样就好让所有的技能图标使用铁斧资源包资源包和assest位置 在这里可以找到https://github.com/elBukkit/MagicPlugin/tree/master/Magic/src/resource-pack备选资源包作者在做Magic资源包之前还做了别的资源包,或许对于Magic用户也有一定帮助
只需要把 "example: painterly" 放到config.yml中即可开启,或者直接打开游戏使用此资源包http://rp.elmakers.com/Magic-painterly-RP-6-1.zip


技能保护

Magic 会读取一些保护插件的保护功能,并在这些区域禁止使用法术。
Worldguard RedProtect Factions等知名插件均在此范围内
Worldguard 区域法术管理
如需在某区域禁用某些法术,请使用/region flag 区域名 blocked-spells 法术1,法术2
如需在某区域禁用所有法术,请使用/region flag 区域名 blocked-spells *
如需在某区域允许所有法术,请使用/region flag someregion allowed-spells *
譬如开枪械服可以在玩家住宅区开放破墙技能,让玩家使用“破墙炮”来进入其他玩家的家里抢东西
更常见的做法是在主城圈一块区域设置不允许使用任何法术,以防止新手玩家担惊受怕(233)


自定义法术

插件自定义法术
Magic的法术可以非常复杂,从零开始可能很困难,所以如果默认的内部法术里面有类似于你心中理想的法术,可以试试在此基础上修改修改
Magic的法术类似于脚本事件,可以包含十分复杂的规则、行为和逻辑,借此制作高度自由化的视觉以及游戏体验
工具和参考
在阅读了本帖的教程后,有些网页工具可能就颇为实用了:
· 参考指南 此链接列出了所有参数、行为、效果以及其他本指南中提到的内容
Legacy version 1.13-版本专用
· 默认生存服法术列表 查看更高级的内置生存服技能的相关信息,并且把游戏中的关键词转化为相应内容以查到正确的配置

自定义法术教学
本教程将由魔法导弹技能开始学习,逐步拨云见日地了解它的组成
分析一个法术
多数法术有五个主要部分,我们每次讨论一个:
· Base Properties: 基础的法术设置,比如图标、SP消耗和SP获取量,以及一些法杖升级或使用/cast parameters无法更改的内容
· Actions: 现在大部分法术使用行为系统, 可以让你灵活地自定义法术的行为,实现你所想的效果
· Effects: 有多种施法时产生的视觉效果,一般由施法多个过程触发
· Parameters: 行为需要参数来改变它们的视觉效果。参数可以作为进阶法术、法杖或使用/cast parameters时的必备部分,更加直接和方便地测试法术的效果。参数包含如技能伤害、范围、时效等内容
· Costs: 法术需要一些消耗才能释放,大多数情况消耗法力,当然物品、金钱和生命值也是可以作为消耗的
基础配置
拿Magic Missile【魔法导弹】技能举例,下面是技能代码:
missile:
    icon: diamond_axe:160
    icon_disabled: diamond_hoe:160
    icon_url: http://textures.minecraft.net/texture/2ba95570c7b712713632d4c0d2fc66906613d3850a596a0267c6d763fe741ac
    upgrade_required_path: beginner
    upgrade_required_casts: 40
    category: combat
    worth: 150
    earns_sp: 7
    earns_cooldown: 10000
    actions:
      cast:
      - class: CustomProjectile
          actions:
          - class: Damage
    effects:
      cast:
      -class: EffectSingle
         sound: magic.zap_crack
         location: origin
         color_override: color
         effectlib:
             class: ConeEffect
             iterations: 10
             particle: redstone
             lengthGrow: 0.1
             radiusGrow: 0.003
             updateLocations: false
             updateDirections: false
      tick:
      - particle: redstone
          location: target
      hit_block:
      -class: EffectSingle
         location: target
         particle: block_crack
         particle_count: 50
         particle_offset_x: 0.2
         particle_offset_y: 1
         particle_offset_z: 0.2
      hit_entity:
      -class: EffectSingle
         location: target
         particle: block_crack
         material: redstone_block
         particle_count: 30
         particle_offset_x: 0.2
         particle_offset_y: 0.2
         particle_offset_z: 0.2
      hit:
      -class: EffectSingle
         location: target
         particle: fireworks_spark
         particle_count: 5
         particle_offset_x: 0.3
         particle_offset_y: 0.5
         particle_offset_z: 0.3
         sound: magic.zap
         sound_volume: .3
         particle_data: 0.3
      headshot:
      -class: EffectSingle
         location: target
         particle: fireworks_spark
         particle_count: 15
         particle_offset_y: 0.2
         particle_offset_x: 0.2
         particle_offset_z: 0.2
         particle_data: 0.1
         sound: magic.zap
         sound_volume: .3
      -class: EffectSingle
         sound: entity_slime_attack
         sound_pitch: 0.8
         location: target
         effectlib:
            class: AnimatedBallEffect
            particles: 8
            particlesPerIteration: 4
            iterations: 10
            particle: block_crack
            particleCount: 20
            material: redstone_block
            size: 0.1
            yOffset: 0
    headshot_parameters:
      player_damage: 4
      entity_damage: 6
    parameters:
      allow_max_range: true
      velocity: 200
      range: 24
      hitbox: true
      target_type: Damageable
      player_damage: 2
      entity_damage: 4
      target_breakables: 1
      cooldown: 1000
      reorient: false
    costs:
      mana: 10

missile:
这是技能的 "关键" 名。当使用/cast命令或/wand命令时,显示的技能名就是这个,支持非英文
    icon: diamond_axe:160
    icon_disabled: diamond_hoe:160
    icon_url: http://textures.minecraft.net/texture/2ba95570c7b712713632d4c0d2fc66906613d3850a596a0267c6d763fe741ac
上述三个分别是:图标、不可用图标(如缺少法力、冷却未到)、图标URL。技能的图标,表现为在游戏中它显示成什么,通常在法杖、商店中作为物品时显示为这里设置的图标
Magic可以使用资源包里的图标(默认技能使用的图标就是),当然原版物品、玩家头颅也可以。
如果config.yml的 "url_icons_enabled"设置为true,技能将会使用icon_url 以通过自定义材质创建玩家头颅作为图标。
如果不这样设置,那么技能将会采用icon属性中的内容作为图标。
当一个技能暂不可用时 (法力不足、处于冷却、没有权限) ,则会采用 icon_disabled 属性中的内容作为图标 (头颅图标不支持icon_disabled)。
在官方提供的资源包中,每一个技能的不可用图标会和正常图标相同,但是会多一个红色的 "no" 标志覆盖在上面
    upgrade_required_path: beginner
    upgrade_required_casts: 40
法术是可以进阶的,进阶法术可通过间隔符号"|"定义,这样的话 "missile|2"就代表着第二级别的 Magic Missile【魔法导弹】 Level 2。
法术的继承是根据上一级来的,这意味着未覆盖的设置将继承上一级的设置
(比如二级技能只是参数里面的伤害和一级不一样,只写了damage的参数,其余继承一级技能的所有设置)
举例来说,二级的魔法导弹会提高射程和伤害
这些设置决定了进阶这一功能如何运作,恰如魔法导弹的进阶,你必须处于"Beginner"【初学者】 熟练度并且成功释放法术40次
    category: combat
技能可以设置类别,主要用于技能书的管理,或用于/spells 命令
    worth: 150
    earns_sp: 8
    earns_cooldown: 10000
这些设置项决定了技能点的运作方式。 worth 属性指此法术技能点 is the cost of the spell in spell points. (或金钱数, 需要有技能商店的设置)
earns_sp 属性决定了释放这一法术可获得的技能点最大值。当一个技能被释放时,玩家获得技能点,技能则会进入一段时间的冷却,在这段时间内,法术成功释放时额外获得的技能点数量将会有所削减。这个机制可以防止玩家反复释放技能刷技能点。
earns_cooldown 属性决定了技能点的获取冷却持续多久。注意,这并不是严格的冷却时间,在冷却时间内仍然可以获得技能点,但是会根据上次获得技能点的时间成比例减少。
例如,首次使用Magic Missile【魔法导弹】,将可以获得8技能点,如果在五秒后使用 (假定这个技能自身的冷却是10秒) ,就只会获得4技能点
Magic Missile 【魔法导弹】也是玩家的默认法杖上自带的第一个法术,作为一个默认的教学类技能,它的技能点获取冷却其实是相当短的,其他的法术默认设置都是15分钟
当Magic Missile【魔法导弹】升级时,它的技能点冷却就和其他法术相同了(其实说的还是插件默认给的配置,可以忽略)

游戏内文本
如需本地化游戏文本, 可通过messages.yml修改全部的游戏内文本。每一个技能的名字和描述都可以在spells.yml找到
不管怎样,处于方便起见你也可以在技能的基础配置里设置 name【名字】 和 description【描述】
class【法术类】一些老的法术,如SuperBlob【超级气泡】就使用了如此一个技能类属性:
superblob:
    class: ConstructSpell
这些使用class的法术早于action【行为】系统,所以这类技能不能使用actions【行为】部分
这些发射的表现形式完全硬代码写死。每一个技能都拥有它独立的类,请查阅此处提供的源代码
如果可以避免,则不建议使用这类法术,最好还是使用基于actions【行为】编写的技能(即现在通行的常用技能)。
一些技能(如工程魔法)还尚未换用新模式。

Actions【行为】
大多数的技能现在都在使用Actions【行为】系统。actions 部分用于决定一个技能释放时的各种表现形式,是技能的核心部分
再来回顾一下 Magic Missile【魔法导弹】:
    actions:
      cast:
      - class: CustomProjectile
          actions:
          - class: Damage
          - class: BreakBlock
            ignore_result: true行为可以有多个组成部分,但大部分技能只会有一个 cast部分,这些行为将在法术释放时得以执行
行为通常是一个层次化的结构,这意味着一个行为可能有"child"【子行为】,这就可以在特定条件下运行这一层次下的子行为
每一个行为都至少需要有一个class 【类】属性,类决定了行为会如何运作。
请注意:当引用源代码时,使用技能配置,"Action"【行为】部分的类名可能被遗漏
许多技能的内部配置都是以 "CustomProjectile"【自定义投掷物】开端(就和Mythicmobs的Projectile类似)。这个行为会创建一个虚拟的投掷物而非原版的雪球、箭矢等,通过自定义这个虚拟的投掷物以实现一些灵活的自定义效果。
注:如果说MM的投掷物技能必须要有一个载体如雪球,Magic则不需要,这个投掷物可以通过效果赋予它视觉上的感官而无需依托一个原版投掷物载体。
当此投掷物击中一个目标时(既可以是方块也可以是实体),将会运行行为列表上的行为
在这种情况下,当魔法导弹命中时会执行伤害行为和方块破坏行为。无论目标是什么,这两个行为都会被执行。但如果击中了方块,那么伤害行为就无效,如果击中了实体,那么方块破坏的行为就无效
行为参数
每个行为都有一些参数可供修改其表现形式。这些参数可以放到两个地方:直接作为行为列表中的一种属性;或者和其他共享性的参数一样,写在parameters【参数】部分即可(详情见下文)
在此情况下,BreakBlock【方块破坏】行为如有ignore_result,则会被设置为true
每个行为都会转向一个结果,通常结果分为:成功、失败或无目标。若要将一个法术算作成功释放,则至少需要有一个最终转向成功的行为。这是唯一能够获得技能点的方法,否则就需要有法术进阶将施法次数计入其中
拿Magic Missile【魔法导弹】举例,破坏方块更多的是一种次要的装饰效果,且不会计入获得技能点。必须通过魔法导弹击中且对实体造成伤害才算做成功计数。
因此,如果法术有 BreakBlock 行为,"ignore_result: true" 则表示着忽略此行为的结果,这意味着造成伤害是唯一影响法术整体效果的行为
Effects【效果】
effects 【效果】部分决定了一个法术将会使用什么样的虚拟效果(譬如说闪电没有实质性伤害和点燃)。通常来说,法术至少要有一个 cast的效果部分作为技能释放时的效果。给法术添加一些粒子效果和音效通常会让法术变得更加有趣。
来再回顾一下Magic Missile【魔法导弹】:
      cast:
      -class: EffectSingle
         sound: magic.zap_crack
         location: origin
         color_override: color
         effectlib:
             class: ConeEffect
             iterations: 10
             particle: redstone
             lengthGrow: 0.1
             radiusGrow: 0.003
             updateLocations: false
             updateDirections: false
这里的cast部分将会在法术释放时运行。每个部分都有一个列表,藉此可以运行多个不同的效果。每一个部分都有一些设置项:
· class: 效果所属的类。可能略微有些过时,如今的新版Magic用户可以忽略。EffectSingle表示只运行一个简单的效果,但如今Magic大部分的效果都依赖于Effeclib。其他的设置为:EffectRing, EffectTrail 以及EffectTransform,但它们很少见也不常用。
· sound: 播放的音效,这个音效可以是资源包中的自定义音效(譬如 "magic.zap_crack")或原版内置的音效,这里有原版音效枚举
· sound_pitch 和 sound_volume 分别指音调和音量,原版音效的音调只能在0.0-2.0之间
· location: 效果在什么地方播放。这里可以填写 origin (施法者), target(目标)或both(两者)
· color_override: 通过技能可使法杖拥有个性化颜色。color_override属性会指示Effectlib使用和参数相同的颜色
(通常来说color【颜色】是大部分Effectlib的效果被控制的方式)。此项仅对redstone【红石】和mob_spell【气泡】粒子有效(这两个粒子可采用多种颜色)
· effectlib: Magic和 EffectLib密切相关,大多数法术都在使用Effectlib效果。详见此处查看更多有关Effectlib的配置效果
Magic Missile【魔法导弹】也有一个 "tick" 【刻】效果列表:
      tick:
      - particle: redstone
          location: target
在这里可以看出class可被忽略不写, EffectSingle【单一效果】 将会使用默认类的效果
tick 效果列表是CustomProjectile使用的一系列特殊的效果。这些效果将在投掷物运动的每服务器tick被触发显现出来(说白了其实和Mythicmobs的投掷物tick类似)。根据投掷物的速度等设置,每tick可以显示多次效果,所以不适宜在这里写太过于复杂的内容。
对于我们现在讨论的这个法术,它只使用了一个简单的particle【粒子】, 粒子列表可在此处Effectlib粒子枚举找到
Magic Missile【魔法导弹】也有一些对方块起效的效果,受限于篇幅不在此处列举。对于爆头、击中方块等也有特殊效果,如果对此感兴趣,可以查阅详细配置(点我跳转)
Parameters【参数】
法术有一些基本参数,这些基本参数不受parameters层次管辖,如category description等都是基本参数
每个行为都有它自己特定的参数,可能没法和插件最新版本完全同步,但基本上没有太大变化。
在 parameters 【参数】层次下的这些参数会影响该法术的全部行为,其设定具有全局性。
再来看看Magic Missile 【魔法导弹】法术:
    parameters:
      allow_max_range: true #允许最大距离
      velocity: 200 #速度
      range: 24 #距离
      hitbox: true #碰撞箱
      target_type: Damageable #目标类型
      player_damage: 2 #对玩家伤害
      entity_damage: 4 #对实体伤害
      target_breakables: 1 #目标损害量
      cooldown: 1000 #冷却
      reorient: false#重新强制目标面向特定方向
      destructible: solid #可破坏
      destructible_durability: 50 #可破坏的耐久度
      break_durability: 2 #损坏的耐久度
      undo: 10000 #撤销时间

Headshots【爆头】
CustomProjectile【自定义投掷物】行为会检测法术是否击中实体头部 ,并且可以运行一组独立的headshot【爆头】行为;对于某些法术 (例如 Magic Missile【魔法导弹】)还可以使用一些额外的参数:
    headshot_parameters:
      damage_multiplier: 1.5
如此一来,魔法导弹爆头将造成1.5倍伤害

Costs【消耗】
法术的消耗,在此列表上的一些消耗物将在施法时被消耗,通常来说使用的消耗物是法力,如:
    costs:
      mana: 15
Requirements【需求】
为了限制玩家购买或使用,法术可以有指定的要求。可以设定一些索引或技术途径,要求玩家必须拥有某项class, skill, spell(这里的class和skill是SkillAPI插件的内容)等才可以购买法术
当前支持的一些需求:
· Type: skillapi
· skill - 需要玩家拥有某个SkillAPI的技能
· class - 需要玩家拥有某个SkillAPI的class
此处展示了一个需求示例,可能在法术、选择器或其他配置中出现。需要玩家获得Skillapi的技能enchanting
    requirements:
      -type: skillapi
      -skill: enchanting
type 指定需求的类型
skill 进一步指定SkillAPI提供技能




进阶帮助

为什么编辑了技能却没有起效?
请再看看你编辑的文件,文件顶部有注释指引你如何编辑。
务必注意不要编辑plugins/Magic/defaults中的文件,它们仅仅是插件提供的参考文件,每次载入都会覆盖原有更改。每次载入都会附带所有现有配置内容,包括默认的以及你编辑的。
正常的编辑应当在 plugins/Magic 路径下进行,而非defaults文件夹下的文件
默认配置文件的意义
如果你无需自定义Magic的某些内容,那么最好单独留着默认生成的文件,如果下次默认配置有所更新的话可能会好一些。
作者一直在尝试让默认配置更加具有游戏平衡性和可玩性。
作者希望大家也可以参与默认配置的更新
这样能够更加让插件的默认设置贴合他的设想
但是如果你迫切需要个性化内容,作者也不会阻拦。
Magic默认配置文件的效果:

[*]玩家默认无法使用插件命令
[*]玩家可以合成法杖 (如使用烈焰棒和下界之星)
[*](目前默认已关闭): 玩家可以在自然生成的箱子里拿到法杖
[*]法杖默认低等级,但是可以在附魔台升级
[*]法杖可以由铁砧制作(??)、从ESS商店中购买或从EssKit中获得等……
[*]在铁砧给法杖命名可以绑定给玩家,其他玩家就用不了了
[*]管理员可以设置任务或其他奖励以升级或生成法杖
[*]法杖是不可破坏的。如果安装了dynmap则会显示出来,玩家由此可以找到丢失的法杖
[*]每一个法杖都有一个背包大小的空间储存法术和材料,玩家可以借此使用和操作
[*]法杖使用 "法力" 系统,默认玩家会慢慢恢复法力
[*]如果找到或者创建一个拥有对应法术的法杖,那么玩家都有权释放所有法术
[*]上述任何内容都可以关闭或修改。
下面有些不一样的设置:

[*]有三种不同的法杖物品栏模式可选择:chest inventory (默认的箱子物品栏模式), click-to-cycle(点击切换),和hotbar-enabled (热键)
[*]法杖、法术和命令其实还是基于权限的(可以设置VIP内容)
[*]玩家死亡可以保留法杖(对于所有玩家 或每一个法杖)
[*]法杖可预先装填玩家有权限使用的全部法术
[*]消耗材料而非法力释放
[*]其他物品形式的法杖 (如附魔剑)
另外,默认的法术和法杖模版都是完全可修改的
本地化相关
如果你希望自行汉化,你可以自己修改messages.yml,此文件包含了几乎所有Magic的提示文本。
插件文件的布局
有那么些个文件和文件夹在第一次允许Magic时就存在:

[*]defaults: Magic会在此文件夹内放出默认的插件配置以供你随时查看
[*]data: 诸如玩家数据等数据的储存位置
其余的文件夹都与你的配置相对应。你可以在plugins/Magic中任何YML文件中自定义操作,或者在文件夹的单独文件内

[*]crafting: 自定义合成配方
[*]enchanting: 进度(自定义附魔可能不再是了)
[*]items: 自定义非法杖的原版物品
[*]materials: 自定义Magic与不同方块和物品的交互
[*]messages: 游戏内文本
[*]mobs: 自定义怪物,包括可释放技能的怪
[*]spells: 技能,包括商店,只要是使用行为(Actions)功能的
[*]wands: 一种自定义的可释放法术的魔法物品,也有一些其他功能
自定义合成配方
可以通过修改 crafting.yml 以修改、移除或创建合成配方。
再度强调(虽然刚刚才提过)请勿编辑crafting.defaults.yml,此文件仅作为参考,任何对其的更改都会被插件覆盖掉
如要关闭一个内置的配方,请在文件中添加类似于如下的内容:
battle:
enabled: false这里是默认的配方
自定义技能
Magic是一个高度自定义的技能系统,服主们可以藉此创造非一般的游戏体验
插件本身会创建默认的技能配置(spells.defaults.yml),包含了一定数量的技能
如果你想要加新技能,或者删除自带技能,请编辑 "spells.yml" 模版文件,或者自己新建其他文件也可以
注:只要是存在于plugins\Magic\spells文件夹下的文本都会被读取,即便是txt文本文档插件也会尝试读取
请勿编辑 spells.defaults.yml, 它只是一个默认文件范例,对它进行的任何修改都会被插件覆盖
禁用一个技能也很简单,只需要在spells.yml(或对应的技能文件里)添加以下内容关闭即可,如:
blast:
enabled: false所有的技能都有一些可供调整的常用配置:

[*]enabled - 设置为 "false" 以完全禁用一个现有的技能 (如默认生成的)
[*]cooldown - 技能的冷却时间,单位为秒 (但是parameters里面的单位是毫秒)
[*]range - 技能可以达到的目标有多远,单位为方块
[*]transparent- 技能可以穿过的东西(如草、水)
[*]costs - 释放时消耗的消耗物,可以是物品+数量,当然还有生命值、饥饿值等等
[*]name, description, wand icon, 等都可以在技能文件里编辑
行为系统
Magic4.0迎来了一个大更新,自4.0以来,法术都逐渐换用行为系统
你可以指定法术运行一系列行为来实现自定义化的效果,而无需使用旧的类系统(Class)
类系统的灵活度较低,相当于作者设计了一些样式固定的技能只可以修改参数,而行为系统则可以细分法术以实现高度自定义
例如:
disintegrate:
    icon_url: <img src="http://i.imgur.com/zZKzDFS.png" border="0" alt="">
    icon: bone
    category: combat
    pvp_restricted: true
    worth: 2500
    actions:
      cast:
      - class: Damage
      - class: ModifyBlock
    # ... 以此样式添加更多效果和参数即可
采用了行为系统的法术无需自行编写源代码,它们就像是乐高积木那样组合在一起,这也是作者称之为行为的原因
正如你所见的Disintegrate技能, 它既可以造成伤害也可以修改方块
添加自定义法杖
可以在wands.yml添加自定义法杖, 也可以在游戏中创建并通过"/wand save"保存法杖
可以参考默认配置中的插件内置法杖。比如"base_wand" 模板就可以为物品创建法杖提供不错的范例(此法杖有法术物品栏的功能,左键可释放法术),当然你也可以不采纳,发挥自己想象力即可
这里给出一个可供参考的战争服配置,如需使用请在wands文件夹下自行创建法杖文件:
# 这只是一个基础性配置模板,并没有使用一个游戏中确切的物品
# 或许对于不少物品都能够采用此配置
base_gun:
# 因为作者不推荐直接使用,所以这个模板目前具有隐藏的属性,无法在TAB列表或法杖列表中看见
#
hidden: true
# 对于枪械,应当右键开火,那么就可以这么设置
right_click: cast
# 左键则会触发alt-cast,此处的第二种施法方案可以自定义,用作装弹法术未尝不可
left_click: alt_cast
# 如果使用了自定义图标,法杖就必须无法破坏,
# 因为损坏值不同的物品使用的图标不同
indestructible: true
# 此处设定施法的源位置相较于玩家的眼睛有什么偏移量
# 此处已经填写的值代表的位置大致在枪管附近
cast_location: 0.5,-0.4,0.5
# 此处用以防止因原版攻速过慢导致无法正常使用
attributes:
    GENERIC_ATTACK_SPEED: 10

# 下面这把枪就可以直接在游戏里用
ak47:
# 继承自上面的base_gun模板,充分利用了这里出现的所有属性
inherit: base_gun
# 使用的图标.如果你要添加新的,需要在资源包里面同样添加新物品
# 这个过程可能稍有些麻烦,而且不能和这里的重复
icon: diamond_pickaxe:1
# 每把枪只有两个技能,一个是右键时触发
active_spell: ak47
# 另一个是左键触发,用以装弹 此处没有法术物品栏
alternate_spell: reload_ak47
# 法力对于枪来说代表弹容,不会恢复,重载法术会重新填装
mana: 70
mana_max: 70
法杖区别于普通物品的最大不同在于——法杖可以释放法术 (运行一系列行为run a set of actions, 通常也不必太复杂) ,并且可以用不同的点击方式对应其他机制,总之法杖可以采用下列的动作:

[*]left_click #左键
[*]right_click #右键
[*]swap (默认是F键) #交换
[*]drop (默认是Q键)
下列操作可以绑定上面的按键

[*]cast (释放当前可用法术)
[*]alt_cast (释放替补法术)
[*]toggle (开启/关闭法术物品栏)
[*]cycle (未开启法术物品栏时用以切换下一个法术)
[*]cycle_hotbar (切换到下一个热键)
自定义进度
默认的Magic配置的进度系统可自定义,Magic中基本的进度有:

[*]玩家合成了法杖,开启熟练度——"beginner"【初心者】
[*]玩家通过施法获得了技能点
[*]玩家与附魔台交互,打开法术商店
[*]法术商店展示了初心者玩家可用的法术
[*]玩家消耗技能点在法术商店购买法术
[*]每次购买法术,法杖都会增加法力、保护属性等
[*]如果一个玩家收集了所有初心者法术,则会进阶为"student"【学徒】
[*]进阶可能会增加玩家的法力、修改法杖的图标,当然可能也会有其他效果
[*]现在玩家可以在法术商店看到学徒法术了
其余内容敬请期待



图片地图

Magic内置了图片转地图的功能,可以把URL的网页图片转为MC的地图文件显示在游戏中
此功能比较强大的地方在于可以载入GIF动图、将大图切分成多个小图
请注意,如果你访问的图片链接在海外或某些社交软件上,可能会加载失败/缓慢
常规单图转地图
把需要转换的图片的URL复制下来,你也可以直接复制下面这张图的链接
https://attachment.mcbbs.net/data/myattachment/forum/202108/28/202013lggb8wlvslpppp7w.jpg
输入指令/mmap load https://attachment.mcbbs.net/data/myattachment/forum/202108/28/202013lggb8wlvslpppp7w.jpg MagicLogo
中间的链接即为图片链接,最后是地图的名字
完成了,你可以把做好的地图放在展示框上了
请注意自行为展示框加上保护以防被熊

GIF图转地图
把需要转换的GIF图的URL复制下来,你也可以直接复制下面这张GIF的链接

输入指令/https://attachment.mcbbs.net/data/myattachment/forum/202301/24/172735k9h19zibiblliylh.gif 马里奥
加载这张GIF图

切分大图为多个小图
由于MC原版地图有最大像素限制,且形状固定为方形,
如果要把大图装进地图,就需要分割
把需要转换的大图的URL复制下来,你也可以直接复制下面这张大图的链接
可以看到作为一个长方形的图,它不适合做成单图放进游戏,这时就需要切分
输入指令/mmap slice https://attachment.mcbbs.net/data/myattachment/forum/202301/24/172325vwqfcc2n4gwcb1rg.png Mint 2 3
即可得到6张名为Mint的横距为2,纵距为3的地图,把他们分别放在展示框里

成品效果如下


隐形展示框
此功能可以造出隐形展示框,便于更好的挂地图
输入指令/mgive invisible_item_frame即可获得隐形展示框,它本身不可见

从背面看,隐形展示框不显示皮革框




Magic 10+ 更新须知

Magic 10+版本对一些原机制作出较大更改,通常来说Magic最为注重配置文件的向后兼容性,一般的版本更新仅需要把新jar替换旧jar即可,但仍然不能保证某些大更新(MC1.13扁平化、Magic10法杖机制修改)后配置文件仍然适用,Magic 10版本特为尤甚第二热键栏(second action bar)
安装专用资源包后,原有法杖的技能图标会在物品栏的位置或单独的GUI界面显示

你也可以使用BossBarGUI显示模式和ActionBarGUI显示模式,但必须安装资源包


帮助命令(/mhelp)重制
Magic 10 将帮助命令完全重置,现在的帮助命令涵盖了插件的所有功能,相当于把WIKI各个界面浓缩进了游戏前台,便于管理员在前台呼出帮助,且帮助命令实现了自动填充,把鼠标放在聊天栏对应位置即可显示命令。
当然这也意味着语言本地化的难度大大提高了,default_message.yml里多出的一千多行便是新的帮助信息



法杖的lock:参数被取消
在Magic 10以前,法杖有一个lock: true/false的可设置参数,true表示法杖不能被修改
Magic 10+请使用modifiable: false 代替lock: true

内置魔法竞技场(Magic Arena)功能
Magic 10+内置了一个竞技场功能可供玩家开展对局,输入/marena获取帮助



以下内容来源于教学,为方便复制,就不进行排版了,需要的自己复制粘贴在spells的任意一个.yml文件里面,记得重载或重启服务器
穿云箭: #发射一枚高速飞行的箭矢
actions:
    cast:
    - class: CustomProjectile
      actions:
      - class: PotionEffect
      duration: 4000
      - class: Delay
      delay: 200
      - class: Asynchronous
      requires_entity_target: true
      actions:
      - class: Repeat
          repeat: 1
          actions:
          - class: Damage
          - class: Delay
            delay: 300
effects:
    cast:
    - class: EffectSingle
      sound: block.anvil.hit
      sound_pitch: 1.5
      location: origin
      effectlib:
      class: VortexEffect
      iterations: 100
      particle: end_rod
      radius: 0.2
      grow: 0.5
      updateLocations: false
      updateDirections: false
    tick:
    - particle: fireworks_spark
      location: target
    - particle: end_rod
      location: target
    hit_entity:
    - class: EffectSingle
      location: target
      target_location: body
      particle: end_rod
      particle_count: 40
      particle_offset_x: 0.4
      particle_offset_y: 1
      particle_offset_z: 0.4
      effectlib:
      class: AnimatedBall
      particle: end_rod
      duration: 3000
      y_factor: 1.5
      particles: 50
      particle_count: 4
      particle_offset_x: 0.02
      particle_offset_y: 0.01
      particle_offset_z: 0.02
      offset: 0,-0.2,0
      size: 0.6
      disappear_with_origin_entity: true
    hit:
    - class: EffectSingle
      location: target
      particle: fireworks_spark
      particle_count: 10
      particle_offset_x: 0.2
      particle_offset_y: 0.2
      particle_offset_z: 0.2
      particle_data: 0.4
      sound: magic.zap
      sound_pitch: 1.2
      sound_volume: 0.5
    - location: target
      particle: end_rod
      particle_count: 10
      particle_offset_x: 0.1
      particle_offset_y: 0.1
      particle_offset_z: 0.1
    hit_block:
    - effect: step_sound
      location: target
    - location: target
      particle: block_crack
      particle_count: 50
      particle_offset_x: 0.8
      particle_offset_y: 1
      particle_offset_z: 0.8
    headshot:
    - class: EffectSingle
      location: target
      particle: fireworks_spark
      particle_count: 20
      particle_offset_y: 0.5
      particle_offset_x: 0.5
      particle_offset_z: 0.5
      sound: magic.zap
      sound_volume: 0.3
      particle_data: 0.4
    - sound: entity_player_attack_crit
      sound_pitch: 0.8
      location: target
      particle: crit_magic
      particle_count: 30
      particle_offset_y: 1
      particle_offset_x: 1
      particle_offset_z: 1
      particle_data: 0.5
headshot_parameters:
    damage_multiplier: 1.5
parameters:
    destructible: destructible,destructible2,destructible3,transparent
    break_blocks: false
    allow_max_range: true
    velocity: 800
    range: 80
    hitbox: true
    block_hit_count: 3
    entity_hit_count: 3
    target_type: Damageable
    target_count: 3
    player_damage: 82
    entity_damage: rand(400,600)
    target_breakables: 1
    reorient: false
    cooldown: 10000
    allow_passthrough: true
    potion_effects:
      slow: 4
      blind: 2
    undo: 1000
    brush: sapling
    transparent: air,water,stationary_water
costs:
    arrow: 1
    mana: 10
火球术: #朝前方投掷爆炸火球
    actions:
      cast:
      - class: Repeat
      -class: Projectile
    effects:
      cast:
      -class: EffectSingle
         effectlib:
             class: ConeEffect
             iterations: 15
             particle: lava
             lengthGrow: 0.4
         sound: entity.blaze.shooot
         sound_volume: 1
         sound_pitch: -.25
      projectile:
      -class: EffectSingle
         location: origin
         effectlib:
             class: SmokeEffect
             iterations: 4
             period: 5
             particle: lava
      hit:
      -class: EffectSingle
         location: target
         color: FE642E
         firework: ball
    parameters:
      projectile: LargeFireball
      fire: true
      repeat: 10
      entity_damage: 100
      player_damage: 50
      size: 1
      undo: 4000
      cooldown: 10000
      start: 1
      break_blocks: false
      undo_speed: 1
    costs:
      mana: 0
火球术EX: #朝前方丢掷威力更强大、更可怕的火球
    actions:
      cast:
      -class: Delay
         delay: 100
      -class: Repeat
         actions:
         - class: Delay
             delay: 50
         - class: Retarget
             actions:
             - class: Asynchronous
               actions:
               - class: Projectile
               actions:
               - class: Damage
               - class: Ignite
                   duration: 3000
    effects:
      cast:
      -class: EffectSingle
         effectlib:
             class: ConeEffect
             iterations: 15
             particle: lava
             lengthGrow: 0.4
         sound: entity.blaze.shooot
         sound_volume: 1
         sound_pitch: -.25
      projectile:
      -class: EffectSingle
         location: origin
         effectlib:
             class: SmokeEffect
             iterations: 4
             period: 5
             particle: lava
      hit:
      -class: EffectSingle
         location: target
         color: FE642E
         firework: ball
    parameters:
      projectile: LargeFireball
      fire: true
      repeat: 15
      entity_damage: 100
      player_damage: 50
      size: 2
      undo: 4000
      start: 1
      first:
          spread: 0
      radius: 2
      spread: 0.25
      speed: 0.4
      break_blocks: false
      undo_speed: 1
    costs:
      mana: 0野蛮冲撞: #向前方连续高速冲撞造成伤害
    actions:
      cast:
      - class: Repeat
          actions:
          - class: Retarget
            range: 1
            actions:
            - class: CheckBlock
            allowed: solid
            actions:
            - class: ChangeContext
                target_caster: true
                actions:
                - class: Damage
          - class: ConeOfEffect
            actions:
            - class: Damage
          - class: ChangeContext
            target_caster: true
            actions:
            - class: Velocity
          - class: Delay   
          - class: PotionEffect
            warmup: 2000
            duration: 10000
    effects:
   cast:
      - location: origin
      effectlib:
         class: Smoke
         particle: villager_angry
         duration: 2000
    parameters:
      target: any
      target_type: Damageable
      range: 4
      hitbox: false
      fov: 0.4
      velocity: 0.2
      source_pitch_min: 0
      source_pitch_max: 0
      damage: 200
      target_breakables: 1
      magic_damage: false
      instant_block_effects: true
      repeat: 10
      delay: 100
      add_effects:
         increase_damage: 30
         damage_resistance: 5
         confusion: 1
震爆惊雷: #在目标区域制造法阵降下惊雷
    actions:
      cast:
      - class: Lightning
          effect_only: true
      - class: ChangeContext
          actions:
            - class: CustomProjectile
            actions:
            - class: AreaOfEffect
                radius: 4.1
                actions:
                - class: Velocity
                - class: PotionEffect
                - class: Damage
            -class: Sphere
    effects:
      cast:
      -class: EffectSingle
         custom_sound: magic.burn
         location: both
      -class: EffectSingle
         location: target
         target_offset: 0,.15,0
         effectlib:
             class: Warp
             particle: lightning   
             iterations: 1
             radius: 2
             grow: 0
             rings: 1
      tick:
      - particle: spell_mob
          color: "4B0082"
          location: target
          particle_count: 4
          particle_size: 10
          particle_offset_x: 0.5
          particle_offset_y: 0.5
          particle_offset_z: 0.5
      projectile:
      -class: EffectSingle
         location: origin
         color_override: true
         effectlib:
             class: Sphere
             particle: redstone
             color: "87CEEB"
             particle_size: 10
             iterations: 100
             particles: 20
             radius: 0.6
             particle_offset_x: 0.2
             particle_offset_y: 0.2
             particle_offset_z: 0.2
      hit:
      - class: EffectSingle
          sound: entity_generic_explode
          sound_volume: 2
          sound_pitch: 0.7
          location: target
      - class: EffectSingle
          target_offset: 0,0.5,0
          location: target
          particle: explosion_huge
    parameters:
      radius: 3
      target: other
      living_entity_speed: 0.5
      y_offset: 1
      player_damage: 50
      entity_damage: rand{60,68}
      range: 30
      allow_max_range: true
      hitbox: true
      size: 1
      velocity: 25
      speed: 0.9
      falling: true
      source_offset: 0,10,0
      direction: 0,1.50,0

震爆惊雷EX: #在目标区域降下连续的惊雷
    actions:
      cast:
      - class: Delay
          delay: 500
      - class: Lightning
          effect_only: true
      - class: ChangeContext
          actions:
            - class: CustomProjectile
            actions:
            - class: AreaOfEffect
                radius: 4.1
                actions:
                - class: Velocity
                - class: PotionEffect
                  duration: 10000
                - class: Damage
                - class: Ignite
                  duration: 10000
            -class: Sphere
               actions:
               - class: BreakBlock
    effects:
      cast:
      -class: EffectSingle
         custom_sound: magic.burn
         location: both
      -class: EffectSingle
         location: target
         target_offset: 0,.15,0
         effectlib:
             class: Warp
             particle: lightning   
             iterations: 2
             radius: 2.5
             grow: 0.2
             rings: 1
      tick:
      - particle: spell_mob
          color: "4B0082"
          location: target
          particle_count: 4
          particle_size: 10
          particle_offset_x: 0.5
          particle_offset_y: 0.5
          particle_offset_z: 0.5
      projectile:
      -class: EffectSingle
         location: origin
         color_override: true
         effectlib:
             class: Sphere
             particle: redstone
             color: "87CEEB"
             particle_size: 10
             iterations: 100
             particles: 20
             radius: 0.9
             particle_offset_x: 0.2
             particle_offset_y: 0.2
             particle_offset_z: 0.2
      hit:
      - class: EffectSingle
          sound: entity_generic_explode
          sound_volume: 2
          sound_pitch: 0.7
          location: target
      - class: EffectSingle
          target_offset: 0,0.5,0
          location: target
          particle: explosion_huge
    parameters:
      radius: 3
      target: other
      target_type: Damageable
      living_entity_speed: 0.5
      y_offset: 1
      player_damage: 50
      entity_damage: rand{60,68}
      range: 30
      allow_max_range: true
      hitbox: true
      size: 1
      velocity: 40
      speed: 0.9
      undo: 5000
      undo_speed: 0.5
      break_durability: 10
      destructible: building
      break_blocks: true
      falling: true
      source_offset: 0,10,0
      direction: 0,1.50,0
      potion_effects:
          jump: -10
          slow: 100
          blindness: 1

旷野之息: #召唤野生动物帮你作战
    actions:
      cast:
      - class: CustomProjectile
          actions:
          - class: ChangeContext
            source_is_target: true
            actions:
            - class: Repeat
            actions:
            - class: SpawnEntity
                set_target: true
                type: horse
                horse_jump_strength: 5
                tamed: true
                health: 700
                max_health: 750
            - class: Delay
    effects:
      cast:
      -class: EffectSingle
         sound: magic.zap_crack
         location: origin
         color_override: color
         effectlib:
             class: ConeEffect
             iterations: 15
             particle: redstone
             color: "d3d3d3"
             lengthGrow: 0.1
             radiusGrow: 0.05
             updateLocations: false
             updateDirections: false
      -class: EffectSingle
         requires_entity_target: true
         sound: magic.shimmer
         location: target
         color_override: color
         effectlib:
             class: SphereEffect
             iterations: 200
             particle: redstone
             color: "f8f8ff"
             radius: 0.1
             particles: 10
             offset: 0,-0.5,0
      tick:
      - particle: end_rod
          location: target
      - particle: redstone
          color: "f5f5f5"
          particle_count: 10
          particle_offset_x: 0.3
          particle_offset_y: 0.3
          particle_offset_z: 0.3
          location: target
      projectile:
      - class: EffectSingle
          effectlib:
             class: SphereEffect
             particle: redstone
             color: "faebd7"
             iterations: 100
             radius: 0.4
             particles: 10
      hit:
      -class: EffectSingle
         sound: magic.zap
         sound_volume: .3
         location: target
         color2: FF0000
         firework: burst
      -location: target
         particle: explosion_large
    parameters:
      fov: 0.75
      entity_attributes:
          generic_attack_damage: 200
      saddle: '391'
      armor: '419'
      name: '&7&l[&8魂灵使魔&7&l]&4&l荒原魔灵'
      hitbox: true
      range: 60
      hitbox_size: 0.5
      target_type: LivingEntity
      track_target: true
      lifetime: 30000
      target_self: false
      track_speed: 0.4
      use_target_location: false
      repeat: 3


野哭怒吼: #类似于上一个
    actions:
      cast:
      - class: CustomProjectile
          actions:
          - class: ChangeContext
            source_is_target: true
            actions:
            - class: Repeat
            actions:
            - class: SpawnEntity
                set_target: true
                type: wolf
                health: 500
                max_health: 666
                angry: true
            - class: Delay
            - class: Aggro
    effects:
      cast:
      -class: EffectSingle
         sound: magic.zap_crack
         location: origin
         color_override: color
         effectlib:
             class: ConeEffect
             iterations: 15
             particle: redstone
             color: "d3d3d3"
             lengthGrow: 0.1
             radiusGrow: 0.05
             updateLocations: false
             updateDirections: false
      -class: EffectSingle
         requires_entity_target: true
         sound: magic.shimmer
         location: target
         color_override: color
         effectlib:
             class: SphereEffect
             iterations: 200
             particle: redstone
             color: "f8f8ff"
             radius: 0.1
             particles: 10
             offset: 0,-0.5,0
      tick:
      - particle: end_rod
          location: target
      - particle: redstone
          color: "f5f5f5"
          particle_count: 10
          particle_offset_x: 0.3
          particle_offset_y: 0.3
          particle_offset_z: 0.3
          location: target
      projectile:
      - class: EffectSingle
          effectlib:
             class: SphereEffect
             particle: redstone
             color: "faebd7"
             iterations: 100
             radius: 0.4
             particles: 10
      hit:
      -class: EffectSingle
         sound: magic.zap
         sound_volume: .3
         location: target
         color2: FF0000
         firework: burst
      -location: target
         particle: explosion_large
    parameters:
      fov: 0.75
      entity_attributes:
          generic_attack_damage: 300
      name: '&7&l[&8魂灵使魔&7&l]&4&l野哭魔狼'
      hitbox: false
      range: 60
      hitbox_size: 0.5
      target_type: LivingEntity
      track_target: true
      lifetime: 10000
      target_self: false
      track_speed: 0.4
      use_target_location: false
      type: wolf
      repeat: 3


水帘障: #释放水幕刷洗前方
actions:
    cast:
    - class: CustomProjectile
      actions:
      - class: DisablePhysics
      - class: Volume
      actions:
      - class: ModifyBlock
effects:
    cast:
    - class: EffectSingle
      sound: entity_generic_splash
      location: both
    tick:
    - location: target
      particle: spell_mob
      color: FFF0F5
      particle_count: 15
      particle_offset_x: 0.2
      particle_offset_y: 0.2
      particle_offset_z: 0.2
    hit:
    - class: EffectSingle
      location: target
      effectlib:
      class: Shield
      iterations: 10
      particle: cloud
      radius: 5
      particles: 30
      particle_count: 20
      particle_offset_x: 0.7
      particle_offset_y: 0.4
      particle_offset_z: 0.2
parameters:
    velocity: 250
    target_type: LivingEntity
    allow_max_range: true
    radius: 5
    x_size: 10
    y_size: 5
    z_size: 0
    range: 25
    undo: 10000
    duration: 10000
    destructible: destructible_replace
    brush: water
    hitbox: true
costs:
    mana: 0










FireworkPolymer 发表于 2024-8-3 02:30:11

错误的,还没支持1.21
页: [1]
查看完整版本: [工具|娱乐|机制]Magic——多元化的高自由度魔法技能插件[1.7-1.21]