Repository navigation
Expand file tree
/
Copy pathChatUtils.cpp
More file actions
85 lines (72 loc) · 2.51 KB
/
Copy pathChatUtils.cpp
File metadata and controls
85 lines (72 loc) · 2.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include "ChatUtils.h"
#include "Entity.h"
jclass chatComponentTextClass = nullptr;
jmethodID addChatMessageMethod = nullptr;
jmethodID sendChatMessageMethod = nullptr;
jmethodID chatComponentTextConstructorMethod = nullptr;
void ChatUtils::print(auto&& obj)
{
print(true, str(obj));
}
void ChatUtils::print(bool prefix, const std::string& message)
{
std::string msg;
if (prefix)
msg = "§7[§d§lQuill§r§7] §f" + message;
else
msg = "§f" + message;
addChatMessage(msg);
}
void ChatUtils::error(const std::string& message)
{
addChatMessage("§4[§l§dQuill§6/§cERROR§r§4] §c" + message);
}
void ChatUtils::warning(const std::string& message)
{
addChatMessage("§e[§l§dQuill§9/§cWARN§r§e] §6" + message);
}
void ChatUtils::info(const std::string& message)
{
addChatMessage("§3[§l§dQuill§e/§fINFO§r§3] §b" + message);
}
void ChatUtils::enable(const std::string& moduleName)
{
addChatMessage("§9[§l§dQuill§r§9] §2" + moduleName + " Enabled");
}
void ChatUtils::disable(const std::string& moduleName)
{
addChatMessage("§3[§l§dQuill§r§3] §4" + moduleName + " Disabled");
}
void ChatUtils::addChatMessage(const std::string& message)
{
if (addChatMessageMethod == nullptr)
addChatMessageMethod = ct.env->GetMethodID(CEntityPlayer::getEntityPlayerSPClass(), "a", "(Leu;)V");
if (addChatMessageMethod == nullptr)
return;
jobject obj = CChatComponentText::newInstance(message);
ct.env->CallVoidMethod(CEntityPlayer::getEntityPlayerSPInstance(), addChatMessageMethod, obj);
ct.env->DeleteLocalRef(obj);
}
void ChatUtils::sendChatMessage(const std::string& message)
{
if (sendChatMessageMethod == nullptr)
sendChatMessageMethod = ct.env->GetMethodID(CEntityPlayer::getEntityPlayerSPClass(), "e", "(Ljava/lang/String;)V");
jstring jmessage = ct.env->NewStringUTF(message.c_str());
ct.env->CallVoidMethod(CEntityPlayer::getEntityPlayerSPInstance(), sendChatMessageMethod, jmessage);
ct.env->DeleteLocalRef(jmessage);
}
jclass CChatComponentText::getClass()
{
if (chatComponentTextClass == nullptr)
chatComponentTextClass = ct.env->FindClass("fa");
return chatComponentTextClass;
}
jobject CChatComponentText::newInstance(const std::string& text)
{
if (chatComponentTextConstructorMethod == nullptr)
chatComponentTextConstructorMethod = ct.env->GetMethodID(getClass(), "<init>", "(Ljava/lang/String;)V");
jstring jtext = ct.env->NewStringUTF(text.c_str());
jobject obj = ct.env->NewObject(getClass(), chatComponentTextConstructorMethod, (jobject)jtext);
ct.env->DeleteLocalRef(jtext);
return obj;
}