Vanilla Expansion

IItemStack 类和 IEntity 类提供了扩展方法

这意味着 IItemStack 类实例和 IEntity 类实例可以使用这些方法

Import

你完全没必要导包, 除非你想用类名调用扩展类方法

IItemStack Expansion

import mods.randomtweaker.thaumcraft.IItemStack;

IEntity Expansion

import mods.randomtweaker.thaumcraft.IEntity;

Static ZenMethod

IItemStack ZenMethod

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

getAspects()

string[]

获取一个物品所具有的源质名称

IEntity ZenMethod

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

getAspects()

string[]

获取一个实体所具有的源质名称

Example

import crafttweaker.event.PlayerInteractEntityEvent; // 玩家与实体互动事件

// 这里先介绍获取物品源质名称的方法

for aspect in <minecraft:cobblestone>.getAspects() {
    print(aspect);
}

// 理论上, 这里在游戏启动时应该会打印圆石具有的源质名称
// 即打印 terra 和 perditio
// 但实际上, 什么都不会打印, 这是为什么?
// 在这里给出解释, 因为源质的注册在 PostInitialization 阶段, 此时 CrT 早已加载了脚本, 故 getAspects() 返回一个空数组
// 出于这个原因, 两个方法的使用场景就受到了限制
// 限制在 PostInitialization 阶段后这些方法才会返回一个内部元素不为空的数组
// 所以休想在游戏的生命周期事件内干什么好事

// 接下来为获取实体具有的源质名称的方法
// 涉及事件, 不会就去学(doge)

events.onPlayerInteractEntity(function(event as PlayerInteractEntityEvent) {
    if(!event.world.remote) { // 确保在服务端执行下列代码
        for aspect in event.target.getAspects() { // for 循环
            print(aspect);
            // 在只装有原版神秘的情况, 并且互动的实体是苦力怕, 那将打印
            // herba 和 ignis
            // 在这里, 因为这个事件是玩家与实体互动时触发的, 所以一定会在 PostInitialization 阶段后触发
            // 故返回一个内部元素不为空的数组
        }
    }
});

Last updated