---
sidebarDepth: 1
---
# 实体管理
## CreateEngineEntityByTypeStr
服务端
method in mod.server.system.serverSystem.ServerSystem
- 描述
创建指定identifier的实体
- 参数
| 参数名 |
数据类型
| 说明 |
| :--- | :--- | :--- |
| engineTypeStr | str | 实体identifier,例如'minecraft:husk' |
| pos | tuple(float,float,float) | 生成坐标 |
| rot | tuple(float,float) | 生物面向 |
| dimensionId | int | 生成的维度,默认值为0(0为主世界,1为地狱,2为末地) |
| isNpc | bool | 是否为npc,默认值为False。npc不会移动、转向、存盘。 |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| str或None | 实体Id或者None |
- 备注
- 在未加载的chunk无法创建
生成村民请使用"minecraft:villager_v2"
- 示例
```python
import mod.server.extraServerApi as serverApi
ServerSystem = serverApi.GetServerSystemCls()
class MyServerSystem(ServerSystem):
def createMob(self):
# 在主世界(0,5,0)的位置创建一个朝向为(0, 0)的尸壳
entityId = self.CreateEngineEntityByTypeStr('minecraft:husk', (0, 5, 0), (0, 0), 0)
```
## CreateEngineItemEntity
服务端
method in mod.server.system.serverSystem.ServerSystem
- 描述
用于创建物品实体(即掉落物),返回物品实体的entityId
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| itemDict | dict | 物品信息字典 |
| dimensionId | int | 设置dimension,默认为主世界 |
| pos | tuple(float,float,float) | 生成坐标 |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| str或None | 实体Id或者None |
- 示例
```python
import mod.server.extraServerApi as serverApi
itemDict = {
'itemName': 'minecraft:bow',
'count': 1,
'enchantData': [(serverApi.GetMinecraftEnum().EnchantType.BowDamage, 1),],
'auxValue': 0,
'customTips':'§c new item §r',
'extraId': 'abc',
'userData': { 'color': { '__type__':8, '__value__':'gray'} },
}
itemEntityId = self.CreateEngineItemEntity(itemDict, 0, (0, 5, 0))
```
## CreateExperienceOrb
服务端
method in mod.server.component.expCompServer.ExpComponentServer
- 描述
创建专属经验球
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| exp | int | 经验球经验 |
| position | tuple(float,float,float) | 创建的位置 |
| isSpecial | bool | 是否专属经验球 |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| bool | 设置是否成功 |
- 备注
- 设置经验球经验,entityId是人的entityId。专属的经验球只有entityId的人才能拾取
- 示例
```python
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateExp(entityId)
comp.CreateExperienceOrb(25,(10,10,10),False)
```
## CreateProjectileEntity
服务端
method in mod.server.component.projectileCompServer.ProjectileComponentServer
- 描述
创建抛射物(直接发射)
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| spawnerId | str | 创建者Id |
| entityIdentifier | str | 创建抛射物的identifier,如minecraft:snowball |
| param | dict | 默认为None,详细说明请见备注 |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| str | 创建抛射物的Id,失败时为“-1” |
- 备注
- param参数解释如下:
| 参数 | 类型 | 解释 |
| ----------------- | ----- | ------------------------------------------------------------ |
| position | tuple(float,float,float) | 初始位置 |
| direction | tuple(float,float,float) | 初始朝向 |
| power | float | 投掷的力量值 |
| gravity | float | 抛射物重力因子,默认为json配置中的值 |
| damage | float | 抛射物伤害值,默认为json配置中的值 |
| targetId | str | 抛射物目标(指定了target之后,会和潜影贝生物发射的跟踪导弹的那个投掷物是一个效果),默认不指定 |
| isDamageOwner | bool | 对创建者是否造成伤害,默认不造成伤害 |
- 示例
```python
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateProjectile(levelId)
param = {
'position': (1,1,1),
'direction': (1,1,1)
}
comp.CreateProjectileEntity(playerId, "minecraft:snowball", param)
```
## DestroyEntity
服务端
method in mod.server.system.serverSystem.ServerSystem
- 描述
销毁实体
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| entityId | str | 销毁的实体ID |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| bool | 是否销毁成功 |
- 示例
```python
import mod.server.extraServerApi as serverApi
ServerSystem = serverApi.GetServerSystemCls()
class FpsServerSystem(ServerSystem):
def testDestroyEntity(self, entityId):
self.DestroyEntity(entityId)
```
## GetDroppedItem
服务端
method in mod.server.component.itemCompServer.ItemCompServer
- 描述
获取掉落物的物品信息
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| itemEntityId | str | 掉落物的entityId |
| getUserData | bool | 是否获取userData,默认为False |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| dict | 信息 |
- 备注
- 如果掉落物实体不存在,返回值为None
- 示例
```python
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateItem(levelId)
comp.GetDroppedItem(entityId)
```
## GetEngineActor
服务端
method in mod.server.extraServerApi
- 描述
获取所有实体(不包含玩家)。
- 参数
无
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| dict | 当前地图中的所有实体信息,key:实体id,value:实体dict |
- 备注
- 实体信息字典 entityDict
| 关键字 | 数据类型 | 说明 |
| ----------| --------------------- | ---------|
| dimensionId | int | 维度id |
| identifier | str | 实体identifier |
- 示例
```python
import mod.server.extraServerApi as serverApi
entityDicts = serverApi.GetEngineActor()
```
## GetLocalPlayerId
客户端
method in mod.client.extraClientApi
- 描述
获取本地玩家的id
- 参数
无
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| str | 客户端玩家Id |
- 示例
```python
import mod.client.extraClientApi as clientApi
localId = clientApi.GetLocalPlayerId()
```
## GetPlayerList
服务端
method in mod.server.extraServerApi
- 描述
获取level中所有玩家的id列表
- 参数
无
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| list(str) | 返回玩家id列表 |
- 备注
- 由于引擎中的玩家id是无序存储的,所以该接口返回列表的先后顺序没有实际意义,仅为在多平台下表现一致。
- 示例
```python
import mod.server.extraServerApi as serverApi
print serverApi.GetPlayerList()
```
## HasEntity
客户端
method in mod.client.component.gameCompClient.GameComponentClient
- 描述
判断 entity 是否存在
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| entityId | str | 实体id |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| int | 0表示不存在,1表示存在 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateGame(levelId)
exist = comp.HasEntity(entityId)
```
## IsEntityAlive
服务端客户端
### 服务端接口
method in mod.server.component.gameCompServer.GameComponentServer
- 描述
判断生物实体是否存活或非生物实体是否存在
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| entityId | str | 实体id |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| bool | false表示生物实体已死亡或非生物实体已销毁,true表示生物实体存活或非生物实体存在 |
- 备注
- 注意,如果检测的实体所在的区块被卸载,则该接口返回False。因此,需要注意实体所在的区块是否被加载。
- 区块卸载:游戏只会加载玩家周围的区块,玩家移动到别的区域时,原来所在区域的区块会被卸载,参考[区块介绍](https://minecraft-zh.gamepedia.com/%E5%8C%BA%E5%9D%97)
- 示例
```python
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(levelId)
alive = comp.IsEntityAlive(entityId)
```
### 客户端接口
method in mod.client.component.gameCompClient.GameComponentClient
- 描述
判断生物实体是否存活或非生物实体是否存在
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| entityId | str | 实体id |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| bool | false表示生物实体已死亡或非生物实体已销毁,true表示生物实体存活或非生物实体存在 |
- 备注
- 注意,如果检测的实体所在的区块被卸载,则该接口返回False。因此,需要注意实体所在的区块是否被加载。
- 区块卸载:游戏只会加载玩家周围的区块,玩家移动到别的区域时,原来所在区域的区块会被卸载,参考[区块介绍](https://minecraft-zh.gamepedia.com/%E5%8C%BA%E5%9D%97)
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateGame(levelId)
alive = comp.IsEntityAlive(entityId)
```
## KillEntity
服务端
method in mod.server.component.gameCompServer.GameComponentServer
- 描述
杀死某个Entity
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| entityId | str | 要杀死的目标的entityId |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| bool | 是否杀死成功 |
- 示例
```python
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(levelId)
comp.KillEntity(entityId)
```
## SpawnItemToLevel
服务端
method in mod.server.component.itemCompServer.ItemCompServer
- 描述
生成物品掉落物,如果需要获取物品的entityId,可以调用服务端系统接口CreateEngineItemEntity
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| itemDict | dict | 物品信息字典 |
| dimensionId | int | 设置dimension |
| pos | tuple(float,float,float) | 生成位置 |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| bool | 设置结果 |
- 示例
```python
import mod.server.extraServerApi as serverApi
itemDict = {
'itemName': 'minecraft:bow',
'count': 1,
'enchantData': [(serverApi.GetMinecraftEnum().EnchantType.BowDamage, 1),],
'auxValue': 0,
'customTips':'§c new item §r',
'extraId': 'abc',
'userData': {},
}
comp = serverApi.GetEngineCompFactory().CreateItem(levelId)
comp.SpawnItemToLevel(itemDict, 0, (0,80,20))
# 当最大生成数量为 1 时,可以继续调用生成 2 个物品
comp.SpawnItemToLevel(itemDict, 0, (0,80,20))
```
## SpawnLootTable
服务端
method in mod.server.component.actorLootCompServer.ActorLootComponentServer
- 描述
使用生物类型模拟一次随机掉落,生成的物品与json定义的概率有关
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| pos | tuple(int,int,int) | 掉落位置 |
| identifier | str | 实体identifier,如minecraft:guardian |
| playerKillerId | str | 玩家杀手(只能是玩家),默认None |
| damageCauseEntityId | str | 伤害来源实体Id(掉落与该实体手持物品的抢夺附魔等级有关),默认None |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| bool | 是否成功生成掉落 |
- 备注
- 需要在对应的player实体附近生成,否则会生成失败。对于某些特殊的生物,如minecraft:sheep,需要使用SpawnLootTableWithActor接口来模拟随机掉落。
- 示例
```python
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateActorLoot(playerId)
result = comp.SpawnLootTable((1, 4, 5), 'minecraft:guardian')
```
## SpawnLootTableWithActor
服务端
method in mod.server.component.actorLootCompServer.ActorLootComponentServer
- 描述
使用生物实例模拟一次随机掉落,生成的物品与json定义的概率有关
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| pos | tuple(int,int,int) | 掉落位置 |
| entityId | str | 模拟生物的生物Id |
| playerKillerId | str | 玩家杀手(只能是玩家),默认None |
| damageCauseEntityId | str | 伤害来源实体Id(掉落与该实体手持物品的抢夺附魔等级有关),默认None |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| bool | 是否成功生成掉落 |
- 备注
- 需要在对应的player实体附近生成,否则会生成失败
- 示例
```python
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateActorLoot(playerId)
result = comp.SpawnLootTableWithActor((1, 4, 5), '-335007449086')
```
## SpawnResources
服务端
method in mod.server.component.blockInfoCompServer.BlockInfoComponentServer
- 描述
产生方块随机掉落(该方法不适用于实体方块)
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| identifier | str | 方块的identifier,如minecraft:wool |
| pos | tuple(int,int,int) | 掉落位置 |
| aux | int | 方块的附加值 |
| probability | float | 掉落概率,范围为[0, 1],0为不掉落,1为100%掉落 |
| bonusLootLevel | int | [时运等级](https://minecraft-zh.gamepedia.com/时运),默认为0 |
| dimensionId | int | 掉落方块的维度,默认值为-1,传入非负值时用于获取产生方块掉落的维度;否则将随机挑选一个存在玩家的维度产生掉落 |
| allowRandomness | bool | 是否允许随机采集,默认为True,如果为False,掉落概率probability无效 |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| bool | 是否成功 |
- 备注
- 时运等级[bonusLootLevel]只对部分方块生效
掉落概率[probability]对部分农作物树叶不生效
- 可在对应维度的常加载区块产生掉落
- 示例
```python
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(levelId)
# 金矿石掉落
result = comp.SpawnResources('minecraft:gold_ore', (1,1,1), 7, 1.0, 10)
# 指定维度产生掉落
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(levelId)
result = comp.SpawnResources('minecraft:gold_ore', (1,1,1), 7, 1.0, 10, 0)
```
## SpawnResourcesSilkTouched
服务端
method in mod.server.component.blockInfoCompServer.BlockInfoComponentServer
- 描述
模拟方块精准采集掉落
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| identifier | str | 方块的identifier,如minecraft:wool |
| pos | tuple(int,int,int) | 掉落位置 |
| aux | int | 方块的附加值 |
| dimensionId | int | 掉落方块的维度,默认值为-1,传入非负值时用于获取产生方块掉落的维度;否则将随机挑选一个存在玩家的维度产生掉落 |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| bool | 是否成功 |
- 备注
- 如果指定方块不属于精准采集方块,返回False
- 示例
```python
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(levelId)
result = comp.SpawnResourcesSilkTouched('minecraft:gold_ore', (1,1,1), 7)
```