本页记录 MnaJSEvents 注册的 KubeJS 事件组和当前脚本表面。
事件组
MnaEventMnaPlayerEventSpellEventRuneForgeEvent
MnaEvent.registerGuideBook
启动期事件。
当前表面:
getRegistry()
示例:
MnaEvent.registerGuideBook((event) => {const registry = event.getRegistry();registry.addGuidebookPath("kubejs:guidebooks/mna_example.json");registry.registerGuidebookCategory("kubejs.mna_examples","mna:textures/gui/cantrips/ward.png");});
说明:
- 该事件当前暴露的是原始 M&A GuideBook 注册表。
- 深度 GuideBook 页面内容仍由 guidebook JSON 和外部工具驱动。
MnaEvent.registerCantrip
启动期事件。
当前表面:
create(MnaCantripId)removeCantrip(MnaCantripId)
Cantrip Builder 方法:
tier(int)delay(int)requiredAdvancement(MnaAdvancementId)sound(MnaSoundId)icon(MnaTexture)addPattern(MnaManaweavePatternId)pattern(MnaManaweavePatternId...)spellStack(MnaItemId)dynamicItem(MnaItemId)clearDynamicItem()dynamicItemProvider((player) => ItemStack)effect((player, cantrip, hand) => ...)delayedEffect((id, data) => ...)builtInEffect(String)register()
已确认的内置效果名:
fireworkgustascenddispeldroughtwardreveal_wardsummon_grimoiresummon_faction_grimoireapply_spell
示例:
MnaEvent.registerCantrip((event) => {event.create("kubejs:flare_orb").tier(1).delay(20).requiredAdvancement("mna:tier_4/craft_a_t4_spell").sound("geckolib:jack_in_the_box_music").icon("mna:textures/gui/affinity/air.png").pattern("mna:bolt", "mna:square").spellStack("minecraft:fire_charge").dynamicItem("minecraft:fire_charge").effect((player, cantrip, hand) => {PlayerMagic.addMana(player, 5);}).register();});
说明:
- 未设置 icon 时会回退到
mna:textures/gui/cantrips/default.png。 - 未设置 pattern 时会回退到
mna:manaweave_patterns/circle和mna:manaweave_patterns/square。 - 未设置 effect 时会回退到内置
apply_spell。 dynamicItemProvider(...)会在 cantrip 触发时同步玩家拥有的 cantrip stack。removeCantrip(id)只有实际移除成功才返回true,并会清理对应动态物品提供器。
MnaEvent.wanderingWizardSelectingTrade
服务端事件。
可用方法:
getWanderingWizard()getOffers()getNewTrades()getMaxNumbers()
MnaPlayerEvent.ritualCompleteEvent
服务端事件。
可用方法:
getEntity()getCenter()getRitual()getCollectedReagents()getHandlers()getEvent()
MnaPlayerEvent.affinityChangedEvent
带 result 的服务端事件。
可用方法:
getEntity()getAffinity()getCurrentAmount()getShift()setShift(float)
示例:
MnaPlayerEvent.affinityChangedEvent((event) => {if (event.getAffinity() === Affinity.ARCANE) {event.setShift(event.getShift() * 1.25);}});
MnaPlayerEvent.genericProgression
服务端事件。
可用方法:
getEntity()getId()getRawId()
MnaPlayerEvent.levelUp
服务端事件。
可用方法:
getEntity()getMagicLevel()
MnaPlayerEvent.magicXPGained
带 result 的服务端事件。
可用方法:
getEntity()getAmount()setAmount(int)
示例:
MnaPlayerEvent.magicXPGained((event) => {event.setAmount(event.getAmount() + 5);});
MnaPlayerEvent.masteryGained
带 result 的服务端事件。
可用方法:
getEntity()getPart()getAmount()setAmount(float)
MnaPlayerEvent.roteProgression
带 result 的服务端事件。
可用方法:
getEntity()getPart()getAmount()setAmount(float)
SpellEvent.costingMana
服务端事件。
可用方法:
getEntity()getCost()getSpell()setCost(float)
示例:
SpellEvent.costingMana((event) => {event.setCost(Math.max(1, event.getCost() * 0.9));});
SpellEvent.casted
服务端事件。
可用方法:
getEntity()getSpell()getSource()getContext()getCastingStack()
SpellEvent.calculatingCooldown
服务端事件。
可用方法:
getEntity()getSpell()getCooldown()setCooldown(int)
SpellEvent.componentApplying
带 result 的服务端事件。
可用方法:
getSource()getContext()getTarget()getComponent()
RuneForgeEvent.shouldActivate
带 result 的服务端事件。
可用方法:
getPlayer()getPatternStack()getMaterialStack()getCatalystStack()
RuneForgeEvent.itemUsed
带 result 的服务端事件。
可用方法:
getPlayer()getPatternStack()getMaterialStack()getCatalystStack()