---
sidebarDepth: 1
---
# Component
## CreateComponent
服务端客户端
### 服务端接口
method in mod.server.extraServerApi
- 描述
给实体创建服务端组件
- 参数
| 参数名 |
数据类型
| 说明 |
| :--- | :--- | :--- |
| entityId | str或int | 该组件属主的实体id |
| nameSpace | str | 组件的命名空间,registerComponent的namespace |
| name | str | 组件的名字 |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| BaseComponent | 组件实例 |
- 示例
```python
import mod.server.extraServerApi as serverApi
comp = serverApi.CreateComponent(entityId, "Minecraft", "item")
# 拿到comp后就可以做一些逻辑内容,与GetComponent类似,如果已经创建会自动直接Get
```
### 客户端接口
method in mod.client.extraClientApi
- 描述
给实体创建客户端组件
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| entityId | str或int | 该组件属主的实体id |
| nameSpace | str | 组件的命名空间,registerComponent的namespace |
| name | str | 组件的名字 |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| BaseComponent | 组件实例 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.CreateComponent(clientApi.GetLocalPlayerId(), "Minecraft", "item")
# 拿到comp后就可以做一些逻辑内容,与GetComponent类似,如果已经创建会自动直接Get
```
## DestroyComponent
服务端客户端
### 服务端接口
method in mod.server.extraServerApi
- 描述
删除实体的服务端组件
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| entityId | str | 该组件属主的实体id |
| nameSpace | str | 组件的命名空间,registerComponent的namespace |
| name | str | 组件的名字 |
- 返回值
无
- 示例
```python
import mod.server.extraServerApi as serverApi
# entityId 根据游戏实际Id获取,这里'-12345678910'只是随便写的
comp = serverApi.DestroyComponent('-12345678910', "Minecraft", "item")
```
### 客户端接口
method in mod.client.extraClientApi
- 描述
删除实体的客户端组件
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| entityId | str | 该组件属主的实体id |
| nameSpace | str | 组件的命名空间,registerComponent的namespace |
| name | str | 组件的名字 |
- 返回值
无
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.DestroyComponent(clientApi.GetLocalPlayerId(), "Minecraft", "item")
```
## GetComponent
服务端客户端
### 服务端接口
method in mod.server.extraServerApi
- 描述
获取实体的服务端组件。一般用来判断某个组件是否创建过,其他情况请使用CreateComponent
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| entityId | str | 该组件属主的实体id |
| nameSpace | str | 组件的命名空间,registerComponent的namespace |
| name | str | 组件的名字 |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| BaseComponent | 组件实例或者None |
- 示例
```python
import mod.server.extraServerApi as serverApi
comp = serverApi.GetComponent(entityId, "Minecraft", "item")
# 拿到comp后就可以做一些逻辑内容,如果没有创建过会返回None
```
### 客户端接口
method in mod.client.extraClientApi
- 描述
获取实体的客户端组件。一般用来判断某个组件是否创建过,其他情况请使用CreateComponent
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| entityId | str | 该组件属主的实体id |
| nameSpace | str | 组件的命名空间,registerComponent的namespace |
| name | str | 组件的名字 |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| BaseComponent | 组件实例或者None |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetComponent(clientApi.GetLocalPlayerId(), "Minecraft", "item")
# 拿到comp后就可以做一些逻辑内容,如果没有创建过会返回None
```
## GetComponentCls
服务端客户端
### 服务端接口
method in mod.server.extraServerApi
- 描述
用于获取服务器component基类。实现新的component时,需要继承该接口返回的类
- 参数
无
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| type(BaseComponent) | 组件基类 |
- 示例
```python
import mod.server.extraServerApi as serverApi
ServerComponentCls = serverApi.GetComponentCls()
# Component要继承于基类才能生效
class ShootComponentServer(ServerComponentCls):
def __init__(self, entityId):
ServerComponentCls.__init__(self, entityId)
# 这里设置了一个开关来开关更新射击
self.mShoot = False
```
### 客户端接口
method in mod.client.extraClientApi
- 描述
用于获取客户端component基类。实现新的component时,需要继承该接口返回的类
- 参数
无
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| type(BaseComponent) | 组件基类 |
- 示例
```python
import mod.client.extraClientApi as clientApi
ClientComponentCls = clientApi.GetComponentCls()
# Component要继承于基类才能生效
class ShootComponentClient(ClientComponentCls):
def __init__(self, entityId):
ClientComponentCls.__init__(self, entityId)
# 这里设置了一个开关来开关更新射击
self.mShoot = False
```
## GetEngineCompFactory
服务端客户端
### 服务端接口
method in mod.server.extraServerApi
- 描述
获取引擎组件的工厂,通过工厂可以创建服务端的引擎组件
- 参数
无
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| EngineCompFactoryServer | 服务端引擎组件工厂 |
- 示例
```python
import mod.server.extraServerApi as serverApi
compFactory = serverApi.GetEngineCompFactory()
gameComp = compFactory.CreateGame(serverApi.GetLevelId())
```
### 客户端接口
method in mod.client.extraClientApi
- 描述
获取引擎组件的工厂,通过工厂可以创建客户端的引擎组件
- 参数
无
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| EngineCompFactoryClient | 客户端引擎组件工厂 |
- 示例
```python
import mod.client.extraClientApi as clientApi
compFactory = clientApi.GetEngineCompFactory()
gameComp = compFactory.CreateGame(clientApi.GetLevelId())
```
## RegisterComponent
服务端客户端
### 服务端接口
method in mod.server.extraServerApi
- 描述
用于将组件注册到引擎中
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| nameSpace | str | 命名空间,建议为mod名字 |
| name | str | 组件名称 |
| clsPath | str | 组件类路径,路径从脚本的第一层开始算起 |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| bool | 注册成功与否 |
- 示例
```python
import mod.server.extraServerApi as serverApi
@Mod.InitServer()
def TutorialServerInit(self):
# 注册一个自定义的服务端Component
serverApi.RegisterComponent("TutorialMod", "ServerShoot", "tutorialScripts.modServer.serverComponent.shootComponentServer.ShootComponentServer")
```
### 客户端接口
method in mod.client.extraClientApi
- 描述
用于将组件注册到引擎中
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| nameSpace | str | 命名空间,建议为mod名字 |
| name | str | 组件名称 |
| clsPath | str | 组件类路径,路径从脚本的第一层开始算起 |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| bool | 注册成功与否 |
- 示例
```python
import mod.client.extraClientApi as clientApi
@Mod.InitClient()
def TutorialClientInit(self):
# 注册一个自定义的客户端Component
clientApi.RegisterComponent("TutorialMod", "ClientShoot", "tutorialScripts.modClient.clientComponent.shootComponentClient.ShootComponentClient")
```