数据类型、枚举类型

数据类型(Data Types)

ObjectRef(抽象类)

维护指定类型对象的引用。

继承该抽象类的子类:BlockEntityRef。

属性

类型

描述

ObjectRef.ref

Object/nil

读取时返回被引用的对象,若对象不存在则返回nil。

写入时将对象的引用覆盖到当前引用,写入nil表示写入空引用。

案例

例如,在如下范例中,self.modData.blockEntityRef表示方块实体引用。blockEntity2表示某个方块实体对象。

local br = self.modData.blockEntityRef        -- Get the reference of block entity
local blockEntity = br.ref        -- Get the block entity from reference
if blockEntity ~= nil then
    -- do something
end
br.ref = blockEntity2        -- Set the reference point to blockEntity2
local blockEntity3 = br.ref        -- blockEntity3 is the same object blockEntity2
br.ref = nil        -- Set the renference point to nothing
local blockEntity4 = br.ref        -- blockEntity4 is nil

ArrayList<T>

TerraCraft内置的动态数组。

属性

类型

描述

ArrayList.length

int

【只读】数组长度。

函数

返回值

描述

ArrayList:GetLength()

int

返回数组长度。

ArrayList[index]

T

读取或写入指定下标的数组元素。index有效区间为[1, 可用数量]。

遍历方案

for i = 1, arrayList.length do
    local element = arrayList[i]
    -- do something on this element
end

ExData

拓展数据。在TerraCraft模组中拥有两种拓展数据。

局部拓展数据(ModData)为当前使用该数据的对象独有,整个游戏中该对象只拥有一个局部拓展数据。

全局拓展数据(GlobalData)为同一类对象均拥有的属性,整个游戏中该对象拥有所有模组的全局拓展数据。

属性

类型

描述

ExData.xxx

由xxx的具体类型决定

读写拓展数据。

ExData.xxx[n]

由xxx的具体类型决定

读写拓展数据数组。

函数

返回值

描述

ExData:DataOf(string dataSetName)

bool

判断当前数据是否拥有指定数据集。

案例

  1. 某个模组的NPC拥有GlobalData,数据为bool isColdint coldTime

  2. npc1拥有ModData,数据为int timerdouble targetAngle

  3. npc2拥有ModData,数据为int magicLevel

  4. npc3没有ModData

如下是访问这些数据的范例:

-- access global data of npc1
local globalData1 = npc1:GetGlobalData()
globalData1.isCold = true
globalData1.coldTime = 32

-- access mod data of npc1
local modData1 = npc1:GetModData()
modData1.timer = modData1.timer + 1
modData1.targetAngle = Utils.PI

-- access global data of npc2
local globalData2 = npc2:GetGlobalData()
globalData2.isCold = false
globalData2.coldTime = 0

-- access mod data of npc2
local modData2 = npc2:GetModData()
modData2.magicLevel = 2

-- access global data of npc3
local globalData3 = npc3:GetGlobalData()
globalData3.isCold = not globalData3.isCold

-- cannot access mod data of npc3
local modData3 = npc3:GetModData()
-- modData3 is nil, cannot read or write data

Point

表示一个点。

属性

类型

描述

Point.x

double

点的横坐标。

Point.y

double

点的纵坐标。

Rectangle

表示一个轴对齐矩形。

属性

类型

描述

Rectangle.x

int

矩形左上角横坐标。

Rectangle.y

int

矩形左上角纵坐标。

Rectangle.width

int

矩形宽度。

Rectangle.height

int

矩形高度。

函数

返回值

描述

Rectangle:Set(int x, int y, int width, int height)

void

设置新的矩形。

SpriteEx

绘制拓展信息,决定绘制的相关参数。

属性

类型

描述

SpriteEx.scaleRateX

float

贴图绘制时横向缩放尺寸。(默认为1.0)

SpriteEx.scaleRateY

float

贴图绘制时纵向缩放尺寸。(默认为1.0)

SpriteEx.rotateX

float

贴图的旋转中心点X。(若绘制对象为实体,默认为实体中心,否则默认为0.0)

SpriteEx.rotateY

float

贴图的旋转中心点Y。(若绘制对象为实体,默认为实体中心,否则默认为0.0)

SpriteEx.angle

float

贴图绘制时的旋转角度。(默认为0.0)

SpriteEx.flipHorizontal

bool

贴图绘制时是否水平翻转。(默认为false)

SpriteEx.flipVertical

bool

贴图绘制时是否竖直翻转。(默认为false)

函数

返回值

描述

SpriteEx:SetDefault()

void

恢复默认值。

Hitbox

表示一个碰撞箱。若angle属性为0,表示轴对齐碰撞箱(AABB)。否则表示一个绕中心点旋转的碰撞箱。

属性

类型

描述

Hitbox.x

double

碰撞箱在旋转角度为0时左上角横坐标。

Hitbox.y

double

碰撞箱在旋转角度为0时左上角纵坐标。

Hitbox.width

int

碰撞箱的宽度。

Hitbox.height

int

碰撞箱的高度。

Hitbox.centerX

double

【只读】碰撞箱中心点的横坐标。

Hitbox.centerY

double

【只读】碰撞箱中心点的纵坐标。

Hitbox.angle

double

若碰撞箱可以旋转,表示碰撞箱的旋转角度。

函数

返回值

描述

Hitbox:Overlap(Hitbox other)

bool

返回当前碰撞箱与另一个碰撞箱是否重叠。

Hitbox:OverlapAABB(Hitbox other)

bool

返回当前轴对齐矩形与另一个轴对齐矩形是否重叠。

Attack

表示一个攻击属性。

属性

类型

描述

Attack.attack

int

攻击值。

Attack.knockBack

int

攻击的击退值。

Attack.crit

int

攻击的百分暴击率。1-100表示1-100%的概率产生双倍暴击伤害,大于100表示总是产生双倍暴击伤害,小于1表示不产生暴击伤害。

静态函数

返回值

描述

Attack:new_local(int attack, int knockBack, int crit)

Attack

返回一个Attack对象。

Defense

表示一个防御属性。

属性

类型

描述

Defense.defense

int

防御值。

Defense.blastDefense

int

爆炸防御值。

Defense.flameDefense

int

火焰防御值。

Defense.projectileDefense

int

抛掷物防御值。

Defense.breathDefense

int

呼吸防御值。

Defense.fallDefense

int

摔落防御值。

Defense.knockBackDefense

int

击退防御值。

EntityKey

表示一个实体在对应实体类型中的唯一键值。

Color

表示一个具有Alpha(透明度)、Red、Green、Blue四个通道的颜色。每个通道有效值为[0, 255]。

通道分量属性均只读,请通过Set函数来设置颜色的值。

属性

类型

描述

Color.alpha

int

【只读】透明通道分量。

Color.red

int

【只读】红色通道分量。

Color.green

int

【只读】绿色通道分量。

Color.blue

int

【只读】蓝色通道分量。

函数

返回值

描述

Color:Set(int alpha, int red, int green, int blue)

void

设置新的颜色。

Color:Set(DefaultColor defaultColor)

void

设置为指定默认颜色。

PlaceParameter

放置方块的参数类型。

属性

类型

描述

PlaceParameter.placeDir

Direction

【只读】放置的朝向。

ClickParameter

点击方块的参数类型。

属性

类型

描述

ClickParameter.playerRef

PlayerRef

【只读】发生点击的玩家引用。

DestroyParameter

破坏方块的参数类型。

属性

类型

描述

DestroyParameter.boom

bool

【只读】是否为由爆炸产生的破坏。

DestroyParameter.silkTouch

int

【只读】破坏时精准采集等级。

DestroyParameter.fortune

int

【只读】破坏时时运等级。

枚举类型(Enums)

注意,这里的枚举值直接当作全局常量使用,且枚举类型的变量只能使用对应枚举值。例如:

if npc.shape == SHAPE_ROTATE_BOX then
    --do something
end

NetMode

描述当前运行环境为客户端或者服务端。注意单人模式下客户端和内置服务端是同时运行的。

枚举值

描述

NET_MODE_SERVER

当前运行环境为服务端环境。

NET_MODE_CLIENT

当前运行环境为客户端环境。

Direction

描述方向。

枚举值

描述

DIRECTION_LEFT

左边。

DIRECTION_TOP

上面。

DIRECTION_BOTTOM

下面。

DIRECTION_RIGHT

右边。

Shape

描述形状类型。

枚举值

描述

SHAPE_BOX

碰撞箱形状为轴对齐矩形。

SHAPE_ROTATE_BOX

碰撞箱形状为旋转矩形。

ItemType

描述物品类型。

枚举值

描述

ITEM_TYPE_NONE

无物品。

ITEM_TYPE_BLOCKS

方块类型物品。

ITEM_TYPE_TOOLS

工具类型物品。

ITEM_TYPE_MATERIALS

材料类型物品。

ITEM_TYPE_WIRES

红石电线类型物品。

ITEM_TYPE_PROJECTILES

抛射物类型物品。

ITEM_TYPE_CHESTS

容器类型物品。

ToolType

描述工具类型。

枚举值

描述

TOOL_TYPE_NONE

无有效工具类型。

TOOL_TYPE_AXE

斧头。

TOOL_TYPE_PICKAXE

镐子。

TOOL_TYPE_SWORD

剑。

TOOL_TYPE_BOW

弓/枪械。

TOOL_TYPE_HELMET

头盔。

TOOL_TYPE_CHESTPLATE

胸甲。

TOOL_TYPE_LEGGINGS

裤腿。

TOOL_TYPE_BOOK

书本。

TOOL_TYPE_SHEARS

剪刀。

TOOL_TYPE_HOE

锄。

TOOL_TYPE_WIRE_CUTTER

剪线钳。

TOOL_TYPE_DRILL

钻头。

TOOL_TYPE_SAW

锯子。

TOOL_TYPE_STAFF

法杖。

NpcType

描述NPC类型。

枚举值

描述

NPC_TYPE_NORMAL

普通NPC。

NPC_TYPE_ANIMAL

动物类NPC。

NPC_TYPE_VILLAGER

村民类NPC。

NPC_TYPE_ARTHROPODS

节肢类NPC。

NPC_TYPE_SMITE

亡灵类NPC。

NPC_TYPE_BOSS

BOSS类NPC。

DefaultColor

描述默认颜色。

枚举值

描述

COLOR_BLACK

黑色。ARGB=(255, 0, 0, 0)

COLOR_WHITE

白色。ARGB=(255, 255, 255, 255)

COLOR_GRAY

灰色。ARGB=(255, 128, 128, 128)

COLOR_RED

红色。ARGB=(255, 255, 0, 0)

COLOR_GREEN

绿色。ARGB=(255, 0, 255, 0)

COLOR_BLUE

蓝色。ARGB=(255, 0, 0, 255)

COLOR_YELLOW

黄色。ARGB=(255, 255, 255, 0)

LightingState

描述客户端光照状态。

枚举值

描述

LIGHTING_STATE_NORMAL

普通光照状态。

LIGHTING_STATE_NIGHT_VISION

夜视光照状态。

LIGHTING_STATE_BLINDNESS

失明光照状态。

DeathReason

描述玩家的死亡原因。

枚举值

描述

DEATH_REASON_UNKNOWN

未知原因死亡。

DEATH_REASON_SUICIDE

自杀。

DEATH_REASON_FALL

摔死。

DEATH_REASON_DROWN

淹死。

DEATH_REASON_BOOM

炸死。

DEATH_REASON_BURN

烧死。

DEATH_REASON_LAVA

在岩浆中游泳。

DEATH_REASON_STARVE

饿死。

DEATH_REASON_BUFF

状态效果作用而死。

DEATH_REASON_POISON

毒死。

GameMode

描述玩家或地图的游戏模式。

枚举值

描述

GAME_MODE_SURVIVAL

生存模式。

GAME_MODE_CREATIVE

创造模式。

GAME_MODE_ADVANTURE

冒险模式。

OP

描述玩家的权限等级。

枚举值

描述

OP_ANY

任何人。

OP_ADMIN

管理员。

OP_MASTER

游戏拥有者(服主)。

OP_DEVELOPER

开发者。

Last updated