普特莫斯维基 (Purtmars Wikipedia 📖)

“Chemdah 开发者文档:自定义对话触发器”的版本间的差异

来自Purtmars Wikipedia —— 普特莫斯维基
(建立内容为“{{:Chemdah 开发者文档目录}} 实现方法如下: <syntaxhighlight lang="kotlin" line="line"> @EventHandler(priority = EventPriority.MONITOR, ignoreCancel…”的新页面)
 
 
(未显示同一用户的3个中间版本)
第1行: 第1行:
 
{{:Chemdah 开发者文档目录}}
 
{{:Chemdah 开发者文档目录}}
 +
= 实现方法 =
 +
通过以下方法获取触发器为 '''minecraft:foo''' 的对话。
 +
<syntaxhighlight lang="kotlin" line="line">
 +
ConversationManager.getConversation("minecraft", "foo")
 +
</syntaxhighlight>
  
实现方法如下:
+
通过以下方法实现具体逻辑:
 
<syntaxhighlight lang="kotlin" line="line">
 
<syntaxhighlight lang="kotlin" line="line">
 
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
 
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
第10行: 第15行:
 
         val name = I18n.get().getName(e.rightClicked)
 
         val name = I18n.get().getName(e.rightClicked)
 
         // 获取有效对话
 
         // 获取有效对话
         val conversation = getConversation("minecraft", name) ?: return
+
         val conversation = ConversationManager.getConversation("minecraft", name) ?: return
 
         // 获取原点(对话实体的头顶坐标,用于播放粒子和定位)
 
         // 获取原点(对话实体的头顶坐标,用于播放粒子和定位)
 
         val origin = e.rightClicked.location.add(0.0, e.rightClicked.height, 0.0)
 
         val origin = e.rightClicked.location.add(0.0, e.rightClicked.height, 0.0)

2021年5月5日 (三) 22:21的最新版本

目录

实现方法

通过以下方法获取触发器为 minecraft:foo 的对话。

1 ConversationManager.getConversation("minecraft", "foo")

通过以下方法实现具体逻辑:

 1 @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
 2 fun e(e: PlayerInteractAtEntityEvent) {
 3     // 主手交互实体并不在对话中
 4     if (e.hand == EquipmentSlot.HAND && e.player.conversationSession == null) {
 5         // 获取实体名称
 6         val name = I18n.get().getName(e.rightClicked)
 7         // 获取有效对话
 8         val conversation = ConversationManager.getConversation("minecraft", name) ?: return
 9         // 获取原点(对话实体的头顶坐标,用于播放粒子和定位)
10         val origin = e.rightClicked.location.add(0.0, e.rightClicked.height, 0.0)
11         // 打开对话
12         conversation.open(e.player, origin, npcName = name, npcObject = e.rightClicked)
13         // 取消事件
14         e.isCancelled = true
15     }
16 }