Go:事件¶
函数¶
Subscribe¶
| Go | |
|---|---|
对这个 id 的每一个事件,在服务器线程上调用 fn。id 是完整的 id,例如 "ll::event::PlayerJoinEvent",也可以是它唯一的后缀。只能在服务器线程调用。
- 参数:
- id :
string - priority :
Priority - fn :
func(*Event)
- id :
- 返回值类型:
(*Listener, error) - 对应槽位:
subscribe_event
ListEvents¶
| Go | |
|---|---|
列出这个宿主可以订阅的所有事件 id。只能在服务器线程调用。
- 返回值类型:
([]string, error) - 对应槽位:
list_events
Event¶
监听器收到的一个事件。SNBT 是载荷,它的字段写在事件载荷参考里;它是一份副本,回调返回以后仍然有效。
Event.Payload¶
| Go | |
|---|---|
解析后的 SNBT,每个事件只解析一次。
- 返回值类型:
(*Nbt, error)
Event.Unresolved¶
| Go | |
|---|---|
列出宿主没能解析的字段,取自 _unresolved。载荷本身解析不了时它也是空的,CheckComplete 不会把这种情况算作完整。
- 返回值类型:
[]string
Event.CheckComplete¶
| Go | |
|---|---|
判断载荷是否解析成功,并且里面没有未解析的字段。基于不完整的载荷做保护判断时,应当拒绝,不要去猜。
- 返回值类型:
bool
Event.Dim¶
| Go | |
|---|---|
事件发生的维度。载荷读不出来或者不完整时返回错误,永远不会返回 0:如果当成主世界,自定义维度里的事件就会通过为主世界定的规则。
- 返回值类型:
(int32, error)
Event.Set¶
| Go | |
|---|---|
在回调返回时把 key 写回事件里。只有设置过的键会写回去,宿主会合并它们,所以两个监听器设置不同的键时,两边的改动都会保留。
- 参数:
- key :
string - value :
*Nbt
- key :
Event.Cancel¶
| Go | |
|---|---|
请求宿主在回调返回后取消这个事件。不能取消的事件会忽略这个请求;每个事件能不能取消,写在它的文档里。
Event.Uncancel¶
| Go | |
|---|---|
撤销这个回调里做的 Cancel。之前的监听器做的取消会保留。
Listener¶
一个订阅,保存下来用来结束它。
Listener.Unsubscribe¶
| Go | |
|---|---|
结束订阅。调用两次也没有问题。只能在服务器线程调用。
- 返回值类型:
error - 对应槽位:
unsubscribe_event
ListenerHandle¶
宿主用来指代一个事件监听器的句柄。
ListenerHandle.IsZero¶
| Go | |
|---|---|
判断这个句柄是否什么都不指向。
- 返回值类型:
bool
Priority¶
| Go | |
|---|---|
同一个事件的监听器之间的顺序,对应 ll::event::EventPriority。
| 名称 | 值 | 说明 |
|---|---|---|
PriorityHighest |
0 |
|
PriorityHigh |
1 |
|
PriorityNormal |
2 |
|
PriorityLow |
3 |
|
PriorityLowest |
4 |