聊天方块能够读写聊天框中的消息,发送消息可以指定某名玩家或所有玩家;和以<玩家ID>开头的玩家不同,由Chat Box发送的消息在聊天框以[AP]开头显示("[""]"内的内容可以修改)。
事件
聊天事件
当玩家发送消息时触发。
发送以美元符号"$"开头的消息将会被隐藏,并且聊天方块收到的消息不会包含该前缀。当指令过多不希望刷屏时可以使用
local event, username, message, uuid, isHidden = os.pullEvent("chat")
print("The 'chat' event was fired with the username " .. username .. " and the message " .. message)
username: string 发送该消息的玩家用户名。
message: string 发送的消息内容。
uuid: string 玩家的UUID。
isHidden: boolean 消息是否被隐藏(通过$发送)。
如果聊天箱已经连接到电脑,可以直接监听 chat 事件,而不用先包装该外设(除非想发消息)。
函数
发送消息
sendMessage(message: string[, prefix: string, brackets: string, bracketColor: string, range: number]) -> true | nil, string
prefix 前缀,改变开头方括号内的文本,默认为[AP]。
brackets 改变前缀两边的符号,比如"[]", "()", "<>"。
bracketColor 改变括号的颜色,使用MOTD格式。
range 发送消息的范围,如果为空,则使用配置文件内的最大距离(默认无限距离且跨维度)。
如果成功,返回true,否则返回nil和错误信息。
注:想发送彩色消息,见后文”格式化消息“。
示例:
local chatBox = peripheral.find("chatBox")
chatBox.sendMessage("Hello world!") -- 在聊天栏发送 "[AP] Hello world!"
sleep(math.ceil(chatBox.getOperationCooldown("chatMessage") / 1000 / 20) * 20) -- 我们必须考虑到发送消息的间隔防止垃圾邮件
chatBox.sendMessage("I am dave", "Dave") -- 发送 "[Dave] I am dave"
sleep(math.ceil(chatBox.getOperationCooldown("chatMessage") / 1000 / 20) * 20)
-- 发送 "Welcome!" ,用青色”<>“包住 ”Box“
-- 发送给距聊天箱30方块之内的玩家
chatBox.sendMessage("Welcome!", "Box", "<>", "&b", 30)
给指定的人发消息
sendMessageToPlayer(message: string, username: string[, prefix: string, brackets: string, bracketColor: string, range: number]) -> true | nil, string
和sendMessage类似,但是可以用username指定发送对象(可为玩家用户名或UUID)。
示例:
local chatBox = peripheral.find("chatBox")
chatBox.sendMessageToPlayer("Hello there.", "Player123") -- 给Player123发送 "[AP] Hello there."
给指定的人发送toast
给指定的玩家发送toast(如图,位于右上角)。
示例:
local chatBox = peripheral.find("chatBox")
chatBox.sendToastToPlayer("I will chat box you", "Hello", "Dev", "&4&lBoxi", "()", "&c&l")
发送格式化消息
这个函数基本上与sendMessage()相同,只是它接受一个json文本组件作为第一个参数。
在minecraft fandom wiki上找到更多关于文本组件格式如何工作的信息。你可以在minecraft.tools中生成json。
示例:(发送"Click here for the AP documentation!",“here”有超链接、下划线和颜色,AP为红色)
local chatBox = peripheral.find("chatBox")
local message = {
{text = "Click "},
{
text = "here",
underlined = true,
color = "aqua",
clickEvent = {
action = "open_url",
value = "https://advancedperipherals.madefor.cc/"
}
},
{text = " for the AP "},
{text = "documentation", color = "red"},
{text = "!"}
}
local json = textutils.serialiseJSON(message)
chatBox.sendFormattedMessage(json)
给指定的人发送格式化消息
sendFormattedMessageToPlayer(json: string, username: string[, prefix: string, brackets: string, bracketColor: string, range: number]) -> true | nil, string
用法同上。
发送格式化toast
sendFormattedToastToPlayer(messageJson: string, titleJson: string, username: string[, prefix: string, brackets: string, bracketColor: string, range: number]) -> true | nil, string
与前文相同,但可以用json文本作为第一、二个参数。
示例:
local chatBox = peripheral.find("chatBox")
local title = {
{ text = "Hello", color = "dark_purple"}
}
local message = {
{ text = "I will chat "},
{ text = "box ", color = "red"},
{ text = "you"}
}
local titleJson = textutils.serializeJSON(title)
local messageJson = textutils.serialiseJSON(message)
successful, error = chatBox.sendFormattedToastToPlayer(messageJson, titleJson, "Dev", "&4&lBoxi", "()", "&c&l")
资料分类: | 机器 |
最大叠加: | 64个 / 组 |