Attunement Start Event

当共鸣开始时触发

这个事件实现了 IEntityEvent, 所以 IEntityEvent 事件的可用 Getter 此事件也可使用

Import

import mods.randomtweaker.astralsorcery.AttunementStartEvent;

ZenGetter

Getter返回值类型Getter 描述

world

IWorld

返回共鸣祭坛所处世界

constellation

string

返回共鸣的星座

entity (此为 IEntityEventGetter)

IEntity

返回与共鸣祭坛共鸣的实体 (有可能是物品实体也有可能是生物)

ZenMethod

方法名返回值类型方法描述

getWorld()

IWorld

world Getter 一致

getConstellation()

string

constellation Getter 一致

Example

import crafttweaker.data.IData;
import crafttweaker.world.IWorld;
import crafttweaker.entity.IEntity;
import crafttweaker.item.IItemStack;
import crafttweaker.entity.IEntityItem;
import mods.randomtweaker.astralsorcery.AttunementStartEvent; // 共鸣祭坛开始共鸣事件

events.onAttunementStart(function(event as AttunementStartEvent) {
    var world as IWorld = event.world; // 获取共鸣祭坛所在的世界
    var entity as IEntity = event.entity; // 获取共鸣的实体
    var constellation as string = event.constellation; // 获取共鸣的星座

    // 保证实体为物品实体 (既然是物品实体, 那不是配方加上去的就是水晶石吧, 如果还有欢迎补充), 并判断共鸣的星座是否为非攻座
    if(!world.remote && entity instanceof IEntityItem && constellation.contains("discidia")) {
        var entityItem as IEntityItem = entity; // 强制转型为物品实体
        var item as IItemStack = entityItem.item; // 获取物品实体里的 "物品"

        // 判断是否为水晶石
        if(<astralsorcery:itemrockcrystalsimple>.matches(item)) {
            var nbt as IData = item.tag; // 拿到物品的 nbt

            // 判断非 null, 可能有些多余, 毕竟正常情况的水晶石都带这个 nbt
            if(!isNull(nbt.astralsorcery) && !isNull(nbt.astralsorcery.crystalProperties)) {
                nbt = nbt.astralsorcery.crystalProperties; // 不解释, 请看下一章里 Example 的解释

                // 经典判断非 null, 判断水晶石尺度是否大于等于 200
                if(!isNull(nbt.size) && nbt.size.asInt() >= 200) {
                    // 生成一个爆炸, 参数解释在 CrT 官方文档上有说明
                    world.performExplosion(null, entity.x, entity.y, entity.z, 1, false, false);
                }
            }
        }
    }
});

Last updated