
BlueArchive Types
a plugin brings the type table in Blue Archive into minecraft combat
README(简体中文)
目前,这个项目80%以上的代码不是ai生成的,这个readme的中文版本也是
简单来说这是一个将游戏《Blue Archive》中的属性表移植到mc中的插件,尚未完工,可能存在无法预料的严重问题,请勿在生产环境使用,未来计划将更多硬编码选项移动到配置文件

这个插件必须以下的项目才能工作:
- PacketEvents:显示攻击类型与防御类型
- BAEnchants:提供类型附魔占位符
这个插件软依赖OverEnchanted插件才能使用,如果不安装它,插件不会报错,但是玩家将无从下手(怪物仍然可以获得类型,但本质上和插件未启用一样),它的核心功能并不需要,只是需要其中的一个特殊物品,因此你可以通过自行修改代码来去除依赖(见开发者指南)
生成的生物可以带有攻击和防御属性,会像ba一样受到加成和克制,可以通过配置文件调整
基本上,安装这个插件后,不会有任何改变,除非玩家主动去获得这些攻击与防御类型
这是一个非侵入性的插件,考虑到它在某种程度上会深刻影响到PVE/PVP的格局,所以玩家可以完全无视这个系统,如果他们不想玩这个系统的话
配置过的 LivingEntity 实体会带有属性,但:
- 可以被手持物品覆盖攻击属性
- 可以被穿戴的胸甲覆盖防御属性(鞘翅也算,任何物品都行)
添加了两个命令:
/batype <check|set|reload> <item|entity> <selector> <atk|def> [type]
用于玩家检查实体或实体手中物品的类型,以及管理员设置类型,或重载配置
(玩家需要拥有原版目标选择器的使用权限才能查看其他实体的类型,权限节点:minecraft.command.selector)
/bamodifier <check|set> <selector> <atk|def> <type> [value]
用于玩家检查实体的某一项属性克制加成,以及管理员设置实体某类型的克制加成
玩家属性获取方式
玩家和所有物品默认不带有攻击和防御属性(即具有normal攻击和防御属性,对任何攻击和任何护甲都不具有增减,相当于不想玩这个系统可以完全无视)
攻击属性
- 首先获取一个三级的无附魔符文(来自插件OverEnchanted)
- 在铁砧上将其与神龟药水(长效或2级)结合,获得属性核心
- 将属性核心其戴在头上,受到某一种属性的攻击时,会积累知识能量,积累满了之后会转变为带有该攻击类型的属性核心
- 期间若受到不同属性的攻击,则会重置知识能量
- 在铁砧上将武器与带有攻击类型的属性核心结合,可对武器增加或者改变攻击属性,并消耗属性核心
防御属性
- 首先获取一个三级的无附魔符文(来自插件OverEnchanted)
- 在铁砧上将其与神龟药水(长效或2级)结合,获得属性核心
- 使用该属性核心攻击带有某种防御的生物,以积累知识能量,积累满了之后会转变为带有该防御类型的属性核心
- 期间若攻击了不同防御属性的实体,则会重置知识能量
- 在铁砧上将胸甲与带有防御类型的属性核心结合,可对武器增加或者改变防御属性,并消耗属性核心
注意:以上操作均不可逆,拥有属性的武器和防具无法去掉属性,只能更改
可以将带有属性的属性核心放在磨石上以重新获得无属性的属性核心
属性特效加成
属性特效加成分为攻击力加成和防御力加成,和ba不一样的是,ba的加成是只针对weak时的伤害增加,但是在这里还有几点:
- 如果是effective,则效果仍然生效,但减半
- 如果是resist,则效果会反向生效(即正值减少攻击伤害)
- 一个实体可以同时拥有多种攻击属性特效加成和多种防御属性特效加成,但只有与自己攻击类型/防御类型相符的加成才会被计算
默认配置为了避免膨胀,WEAK为1.5倍伤害,EFFECTIVE为1.25倍伤害,RESIST为0.5倍伤害,当然,你也可以在代码中修改
属性特效可以通过特殊物品以及某些状态效果获得
状态效果(时间与效果本身一致,效果消失即失效)
- 盘丝:爆发特效加成15% * 效果等级
- 渗浆:神秘特效加成15% * 效果等级
- 寄生:贯穿特效加成15% * 效果等级
- 蓄风:振动特效加成15% * 效果等级
- 隐身:分解特效加成15% * 效果等级
(未实装)特殊物品
这些物品会在Lore中带有明确的提示,例如使用后可获得多长时间的某种特效加成
护甲属性特效加成
护甲的属性特效可以理解为“对该属性的特质强化”,例如可以让原本就抵抗的属性造成的伤害更少,但是同样的,会对原本就克制的属性更加克制,造成更多的伤害
嗯,如果还是不能理解,那么也可以不使用,但是我觉得实战里面应该能理解的,光看我这么说可能确实不太好理解
举个例子
你的防御类型为轻装甲,攻击类型为贯穿,同时你带有 15% 的贯穿特效, 10% 的轻装甲特效
如果你攻击了一只攻击类型为爆发,防御类型为轻装甲的怪物,而怪物带有 5% 的爆发特效, 7% 的轻装甲特效:
- 首先,贯穿对轻装甲是RESIST,所以首先伤害*0.5
- 然后,你拥有15%的贯穿特效,而此时是RESIST,所以伤害减少15%,即伤害*0.85
- 然后,怪物拥有7%的轻装甲特效,这意味着会增加来自WEAK的攻击,也意味着能够更加减少RESIST的攻击,因此伤害减少7%,即伤害*0.93
- 最终,你造成的伤害为:原伤害*(0.5-0.15-0.07)
- 即最终的伤害为原伤害的28%
如果此时怪物攻击了你:
- 首先,爆发对轻装甲是WEAK,所以首先伤害*1.5
- 然后,怪物拥有5%的爆发特效,因此伤害增加5%,即伤害*1.05
- 然后,你拥有10%的轻装甲特效,这意味着会增加来自WEAK的攻击,也意味着能够更加减少RESIST的攻击,因此伤害增加10%,即伤害*1.1
- 最终,怪物对你造成的伤害为:原伤害*(1.5+0.05+0.1)
- 即最终的伤害为原伤害的165%
开发者指南
在me.axiumyu.blueArchiveEffect.attribute.TypeDataStorage中有一个方法isTypeCore(item: ItemStack): Boolean,这个方法判定了某物品能否成为属性核心,玩家获得这个物品的方式需要OverEnchanted插件,你可以自行修改其中的条件(但不建议让这个方法永远返回true)
README(English)
Currently, more than 80% code in this project is NOT generated by AI.
In short, this is a plugin that ports the attribute table from the game "Blue Archive" to Minecraft. It is not yet complete, which may contain serious problems, DO NOT USE IN PRODUCTION ENVIRONMENT!, and future plans include moving more hard-coded options to configuration files.

This plugin require these dependencies to work:
- PacketEvents: to display info on mobs
- BAEnchants: provide enchantments
This plugin also has a soft dependency on the OverEnchanted plugin to function. If this plugin is not installed, plugin can still run, but players can not obtain Types(mobs can still have types, but equals to pugin disabled), its core functionality doesn't require it, but it needs a special item from it. Therefore, you can remove the dependency by modifying the code yourself (see Developer Guide).
Generated mobs can have attack and defense attributes, receiving bonuses and penalties just like in Blue Archive. This can be adjusted via configuration files.
Generally, nothing will happen after you installed this plugin unless players take the initiative to obtain those types.
It's non-invasive. Considering its deep impact to PVE/PVP system, players who doesn't want to dive into this combat system can completely ignore it.
Configured LivingEntity entities will have attributes, but:
- The attack attribute can be overridden by the held item.
- The defense attribute can be overridden by the worn chestplate (elytra counts, any item works).
Added two commands:
/batype <check|set|reload> <item|entity> <selector> <atk|def> [type]
For players to check types of entity or item on its mainhand
(players need vanilla target selector permission to check other entity, permission node: minecraft.command.selector)
For admins to set types of entity or item on its mainhand, or to reload config.
/bamodifier <check|set> <selector> <atk|def> <type> [value]
For players to check value of certain type bonus of an entity
For admins to set value of certain type bonus of an entity
How Players Obtain Attributes
Players and all items have no attack or defense attributes by default (meaning they have the Normal attack and defense attribute, causing no increase or decrease against any attack or armor. This is equivalent to ignoring the system entirely if you don't want to engage with it).
Attack Attribute
- First, obtain a level 3 unenchanted Rune (from the OverEnchanted plugin).
- Combine it with a Turtle Master potion (Long or Strong) on an anvil to obtain an Attribute Core.
- Wear this Attribute Core on your head. When attacked by a certain attribute, it will accumulate Knowledge Energy. Once full, it will transform into an Attribute Core with that attack type.
- If attacked by a different attribute during this process, the Knowledge Energy will reset.
- On an anvil, combine a weapon with an Attribute Core that has an attack type to add or change the weapon's attack attribute, consuming the Attribute Core.
Defense Attribute
- First, obtain a level 3 unenchanted Rune (from the OverEnchanted plugin).
- Combine it with a Turtle Master potion (Long or Strong) on an anvil to obtain an Attribute Core.
- Use this Attribute Core to attack a creature with a certain defense type to accumulate Knowledge Energy. Once full, it will transform into an Attribute Core with that defense type.
- If you attack an entity with a different defense attribute during this process, the Knowledge Energy will reset.
- On an anvil, combine a chestplate with an Attribute Core that has a defense type to add or change the chestplate's defense attribute, consuming the Attribute Core.
Note: The above operations are irreversible. Weapons and armor that have attributes cannot have their attributes removed, only changed.
You can place an Attribute Core with an attribute on a grindstone to regain a non-attributed Attribute Core.
Attribute Effect Bonuses
Attribute Effect Bonuses are divided into Attack Power bonuses and Defense Power bonuses. Unlike in Blue Archive, where bonuses only apply to WEAK damage increases, here are a few additional points:
- If the attack is EFFECTIVE, the bonus still applies but is halved.
- If the attack is RESIST, the bonus works in reverse (i.e., a positive value reduces attack damage).
- An entity can have multiple Attack Attribute Effect bonuses and multiple Defense Attribute Effect bonuses simultaneously, but only the bonuses that match its own attack type/defense type will be calculated.
To avoid power creep, the default configuration sets WEAK to 1.5x damage, EFFECTIVE to 1.25x damage, and RESIST to 0.5x damage, of course, you can modify it in code.
Attribute Effects can be obtained through special items and certain status effects.
Status Effects (Duration matches the effect itself; the bonus is lost when the effect ends)
- Weaving: Burst effect bonus 15% * effect level
- Oozing: Mystic effect bonus 15% * effect level
- Infested: Pierce effect bonus 15% * effect level
- Wind charged: Viber effect bonus 15% * effect level
- Invisibility: Decompose effect bonus 15% * effect level
(Not yet implemented) Special Items
These items will have clear hints in their Lore, such as indicating the duration of a specific effect bonus upon use.
Armor Attribute Effect Bonuses
The Armor Attribute Effect can be understood as "a special reinforcement for that attribute". For example, it can make damage from an already resisted attribute even less, but similarly, it will be even more effective against an attribute it already counters, causing more damage.
Well, if you still don't understand, you can choose not to use it. I think it will make sense in actual combat, but it might be hard to grasp just from reading this.
For example
Your defense type is Light Armor, and your attack type is Pierce. You also have a 15% Pierce effect bonus and a 10% Light Armor effect bonus.
If you attack a monster with an attack type of Explosive and a defense type of Light Armor, and the monster has a 5% Explosive effect bonus and a 7% Light Armor effect bonus:
- First, Pierce against Light Armor is RESIST, so damage is first multiplied by 0.5.
- Then, you have a 15% Pierce effect bonus, and since it's RESIST, damage is reduced by 15%, i.e., damage multiplied by 0.85.
- Then, the monster has a 7% Light Armor effect bonus. This means it increases damage from WEAK attacks and also further reduces damage from RESIST attacks, so damage is reduced by 7%, i.e., damage multiplied by 0.93.
- Finally, the damage you deal is: Original Damage * (0.5 - 0.15 - 0.07)
- So the final damage is 28% of the original damage.
If the monster attacks you:
- First, Explosive against Light Armor is WEAK, so damage is first multiplied by 1.5.
- Then, the monster has a 5% Explosive effect bonus, so damage is increased by 5%, i.e., damage multiplied by 1.05.
- Then, you have a 10% Light Armor effect bonus. This means it increases damage from WEAK attacks and also further reduces damage from RESIST attacks, so damage is increased by 10%, i.e., damage multiplied by 1.1.
- Finally, the damage the monster deals to you is: Original Damage * (1.5 + 0.05 + 0.1)
- So the final damage is 165% of the original damage.
Developer Guide
In me.axiumyu.blueArchiveEffect.attribute.TypeDataStorage, there is a method isTypeCore(item: ItemStack): Boolean. This method determines whether an item can become an Attribute Core. The way players obtain this item requires the OverEnchanted plugin. You can modify the conditions yourself (but it is not recommended to make this method always return true).
