地图API
区块有效性(Chunk Validity)
TerraCraft中的地图采用动态区块加载技术实现无限地图。一个区块为1024x1024格。如果地图格子所在的区块存在,则这个地图格子有效。
在使用地图API时,请使用IsValid
或IsAreaValid
函数来保证所操作格子是有效的。对无效格子进行任何操作都是没有意义的行为。
写入(Set)和放置(Place)方块的区别
写入表示不需要靠着其他方块而加入新的方块,而放置必须靠着附近可以被附着的方块才能放入。
地图通用模块(MapUtils)
通用常量
常量
类型
值
描述
MapUtils.UNDERGROUND_LINE
int
416
地表层与地下层分界格纵坐标。
MapUtils.NETHER_LINE
int
2450
地下层与地狱层分界格纵坐标。
MapUtils.NETHER_CAVE_LINE
int
2560
地狱层大型洞穴分界格纵坐标。
通用函数
查询地图相关函数
这些函数在客户端和服务端均有效。
函数
返回值
描述
MapUtils.IsValid(int xi, int yi)
bool
判断指定格子是否有效,即所在区块是否存在。
MapUtils.IsAreaValid(int xi, int yi, int width, int height)
bool
判断矩形区域内所有格子是否都有效,即矩形区域覆盖的区块是否全部存在。
MapUtils.IsSolid(int xi, int yi)
bool
判断指定格子是否为实心前景。 格子无效时总是返回false。
MapUtils.HasFront(int xi, int yi)
bool
判断指定格子是否有前景方块(前景图块或家具)。
格子无效时总是返回false。
MapUtils.GetFrontID(int xi, int yi)
int
获取指定格子的前景方块ID。 若不存在或格子无效总是返回0。
MapUtils.GetFrontIDTag(int xi, int yi)
int, int
获取指定格子的前景方块ID和附加值。 若不存在或格子无效总是返回两个0。
MapUtils.HasWall(int xi, int yi)
bool
判断指定格子是否有背景墙。
格子无效时总是返回false。
MapUtils.GetWallID(int xi, int yi)
int
获取指定格子的背景墙方块ID。 若不存在或格子无效总是返回0。
MapUtils.HasLiquid(int xi, int yi)
bool
判断指定格子是否有流体。
格子无效时总是返回false。
MapUtils.GetLiquidID(int xi, int yi)
int
获取指定格子的流体ID。 若不存在或格子无效总是返回0。
MapUtils.GetLiquidIDAmount(int xi, int yi)
int, int
获取指定格子的流体ID和流体量。 若不存在或格子无效总是返回两个0。
MapUtils.CanSetWall(int xi, int yi, int blockID)
bool
判断指定格子是否允许写入背景墙方块。
格子无效、背景墙被占用、方块ID不可作为背景墙时总是返回false。
MapUtils.CanPlaceWall(int xi, int yi, int blockID)
bool
判断指定格子是否允许放置背景墙方块。
格子无效、背景墙被占用、方块ID不可作为背景墙、附近无可依靠方块时总是返回false。
MapUtils.CanSetFront(int xi, int yi, int blockID, bool destroyFraglie = true, bool checkEntities = false)
bool
判断指定格子是否允许写入前景方块(前景图块或家具)。
destroyFraglie
表示是否将要强行破坏易碎方块来写入当前方块。checkEntities
表示是否检测有无实体堵着格子。
格子无效、前景被占用、方块ID不可作为前景时总是返回false。
MapUtils.CanPlaceFront(int xi, int yi, int blockID, bool destroyFraglie = true, bool checkEntities = false)
bool
判断指定格子是否允许放置前景方块(前景图块或家具)。
destroyFraglie
表示是否将要强行破坏易碎方块来写入当前方块。checkEntities
表示是否检测有无实体堵着格子。
格子无效、前景被占用、方块ID不可作为前景、附近无可依靠方块时总是返回false。
MapUtils.CanSetFrontTag(int xi, int yi)
bool
判断指定格子是否允许写入前景方块的附加值。
格子无效、前景不存在、前景是方块实体时总是返回false。
MapUtils.GetBlockEntity(int blockEntityID, int xi, int yi)
BlockEntity/nil
返回指定格子的方块实体。blockEntityID
表示待返回的方块实体ID。
格子无效或方块实体不存在时总是返回nil。
修改地图相关函数
这些函数只在服务端执行,操作成功均返回true。
在客户端中或者格子无效时不进行任何操作并总是返回false。游戏会通过内部算法自动将服务端的地图变化同步到客户端。
函数
返回值
描述
MapUtils.RemoveFront(int xi, int yi, bool showEffect = false, bool playSound = false)
bool
移除指定格子的前景方块(前景图块或家具)。
需保证HasFront(xi, yi)
为真。
MapUtils.RemoveFrontAndDrop(int xi, int yi, bool isDropOriginal = false, int dropFortune = 0, bool showEffect = true, bool playSound = true)
bool
移除指定格子的前景方块(前景图块或家具),并生成掉落物。
isDropOriginal
表示是否精准采集,dropFortune
表示时运量。
需保证HasFront(xi, yi)
为真。
MapUtils.RemoveWall(int xi, int yi, bool showEffect = false, bool playSound = false)
bool
移除指定格子的背景墙方块。
需保证HasWall(xi, yi)
为真。
MapUtils.RemoveWallAndDrop(int xi, int yi, bool isDropOriginal = false, int dropFortune = 0, bool showEffect = true, bool playSound = true)
bool
移除指定格子的背景墙方块,并生成掉落物。
isDropOriginal
表示是否精准采集,dropFortune
表示时运量。
需保证HasWall(xi, yi)
为真。
MapUtils.SetWall(int xi, int yi, int blockID, bool showEffect = false, bool playSound = false)
bool
在指定格子写入背景墙。
showEffect
表示写入瞬间是否产生粒子效果。playSound
表示写入瞬间是否播放放置音效。
需保证CanSetWall(xi, yi, blockID)
为真。
MapUtils.PlaceWall(int xi, int yi, int blockID, bool showEffect = true, bool playSound = true)
bool
在指定格子放置背景墙。
showEffect
表示放置瞬间是否产生粒子效果。playSound
表示放置瞬间是否播放放置音效。
需保证CanPlaceWall(xi, yi, blockID)
为真。
MapUtils.SetFront(int xi, int yi, int blockID, bool destroyFraglie = true, bool showEffect = false, bool playSound = false)
bool
在指定格子写入前景方块(前景图块或家具)。
showEffect
表示写入瞬间是否产生粒子效果。playSound
表示写入瞬间是否播放放置音效。
需保证CanSetFront(xi, yi, blockID, destroyFraglie)
为真。
MapUtils.PlaceFront(int xi, int yi, int blockID, bool destroyFraglie = true, bool showEffect = true, bool playSound = true)
bool
在指定格子放置前景方块(前景图块或家具)。
showEffect
表示放置瞬间是否产生粒子效果。playSound
表示放置瞬间是否播放放置音效。
需保证CanPlaceFront(xi, yi, blockID, destroyFraglie)
为真。
MapUtils.SetFrontTag(int xi, int yi, int tag)
bool
在指定格子写入前景附加值。
tag
表示前景的附加值。
需保证CanSetFrontTag(xi, yi)
为真。
MapUtils.TriggerSignal(int xi, int yi, bool isOn)
bool
在指定格子写入触发一个红石信号。
isOn
表示红石信号是激活还是取消激活。
MapUtils.DelayTriggerSignal(int xi, int yi, bool isOn, int delayTime)
bool
在指定格子等待指定延迟时间后触发一个红石信号。
isOn
表示红石信号是激活还是取消激活,delayTime
表示延迟时间。
Last updated
Was this helpful?