ColorCodes, send
This commit is contained in:
parent
36fb80a714
commit
0d52d3d5e6
|
@ -19,6 +19,7 @@ extern jclass CMDCLASS;
|
||||||
extern jclass BUKKITCLASS;
|
extern jclass BUKKITCLASS;
|
||||||
extern jclass CBSERVERCLASS;
|
extern jclass CBSERVERCLASS;
|
||||||
extern jclass CMDMAPCLASS;
|
extern jclass CMDMAPCLASS;
|
||||||
|
extern jclass CMDSENDERCLASS;
|
||||||
|
|
||||||
extern jfieldID EVENTDATAF;
|
extern jfieldID EVENTDATAF;
|
||||||
extern jfieldID EVENTNAMEF;
|
extern jfieldID EVENTNAMEF;
|
||||||
|
@ -33,6 +34,7 @@ extern jmethodID LISTENERCONTR;
|
||||||
extern jmethodID LISTENERSMALLCONTR;
|
extern jmethodID LISTENERSMALLCONTR;
|
||||||
extern jmethodID CMDCONSTR;
|
extern jmethodID CMDCONSTR;
|
||||||
extern jmethodID CMDMAPREGISTER;
|
extern jmethodID CMDMAPREGISTER;
|
||||||
|
extern jmethodID CMDSENDERSEND;
|
||||||
|
|
||||||
|
|
||||||
void load(JNIEnv* env, long data);
|
void load(JNIEnv* env, long data);
|
||||||
|
@ -46,8 +48,9 @@ enum JNIDATA : long {
|
||||||
JNI_BUKKITCLASS = JNI_CMDCLASS << 1,
|
JNI_BUKKITCLASS = JNI_CMDCLASS << 1,
|
||||||
JNI_CBSERVERCLASS = JNI_BUKKITCLASS << 1,
|
JNI_CBSERVERCLASS = JNI_BUKKITCLASS << 1,
|
||||||
JNI_CMDMAPCLASS = JNI_CBSERVERCLASS << 1,
|
JNI_CMDMAPCLASS = JNI_CBSERVERCLASS << 1,
|
||||||
|
JNI_CMDSENDERCLASS = JNI_CMDMAPCLASS << 1,
|
||||||
|
|
||||||
JNI_EVENTDATAFIELD = JNI_CMDMAPCLASS << 1,
|
JNI_EVENTDATAFIELD = JNI_CMDSENDERCLASS << 1,
|
||||||
JNI_EVENTNAMEFIELD = JNI_EVENTDATAFIELD << 1,
|
JNI_EVENTNAMEFIELD = JNI_EVENTDATAFIELD << 1,
|
||||||
JNI_PLUGINIDFIELD = JNI_EVENTNAMEFIELD << 1,
|
JNI_PLUGINIDFIELD = JNI_EVENTNAMEFIELD << 1,
|
||||||
JNI_BUKKITSERVFIELD = JNI_PLUGINIDFIELD << 1,
|
JNI_BUKKITSERVFIELD = JNI_PLUGINIDFIELD << 1,
|
||||||
|
@ -60,12 +63,13 @@ enum JNIDATA : long {
|
||||||
JNI_LISTENERSMALLCONSTR = JNI_LISTENERCONSTR << 1,
|
JNI_LISTENERSMALLCONSTR = JNI_LISTENERCONSTR << 1,
|
||||||
JNI_CMDCONSTR = JNI_LISTENERSMALLCONSTR << 1,
|
JNI_CMDCONSTR = JNI_LISTENERSMALLCONSTR << 1,
|
||||||
JNI_CMDMAPREGISTERMETH = JNI_CMDCONSTR << 1,
|
JNI_CMDMAPREGISTERMETH = JNI_CMDCONSTR << 1,
|
||||||
|
JNI_CMDSENDERSENDMETH = JNI_CMDMAPREGISTERMETH << 1,
|
||||||
|
|
||||||
JNI_EVENT = JNI_EVENTCLASS | JNI_EVENTDATAFIELD | JNI_EVENTNAMEFIELD,
|
JNI_EVENT = JNI_EVENTCLASS | JNI_EVENTDATAFIELD | JNI_EVENTNAMEFIELD,
|
||||||
JNI_MAP = JNI_MAPCLASS | JNI_MAPGETMETH | JNI_MAPPUTMETH,
|
JNI_MAP = JNI_MAPCLASS | JNI_MAPGETMETH | JNI_MAPPUTMETH,
|
||||||
JNI_LISTENER = JNI_LISTENERCLASS | JNI_LISTENERCONSTR | JNI_LISTENERSMALLCONSTR,
|
JNI_LISTENER = JNI_LISTENERCLASS | JNI_LISTENERCONSTR | JNI_LISTENERSMALLCONSTR,
|
||||||
|
|
||||||
JNI_ALL = 0xFFFFFFFFFFFFFF // current count: 20, max count:56
|
JNI_ALL = 0xFFFFFFFFFFFFFF // current count: 22, max count:56
|
||||||
};
|
};
|
||||||
|
|
||||||
class CppPlugin;
|
class CppPlugin;
|
||||||
|
|
|
@ -33,4 +33,53 @@ bool registerCmd(JNIEnv* env, CppPlugin* plugin, std::string& cname, cmdfptr fun
|
||||||
inline bool registerCmd(JNIEnv* env, CppPlugin* plugin, const char* cname, cmdfptr function) {
|
inline bool registerCmd(JNIEnv* env, CppPlugin* plugin, const char* cname, cmdfptr function) {
|
||||||
std::string n(cname);
|
std::string n(cname);
|
||||||
return registerCmd( env, plugin, n, function);
|
return registerCmd( env, plugin, n, function);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void send(JNIEnv* env, jobject sender, const char* text);
|
||||||
|
|
||||||
|
inline void send(JNIEnv* env, jobject sender, const std::string& text) {
|
||||||
|
send(env, sender, text.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
enum Color : char {
|
||||||
|
BLACK = '0',
|
||||||
|
DARK_BLUE = '1',
|
||||||
|
DARK_GREEN = '2',
|
||||||
|
DARK_AQUA = '3',
|
||||||
|
DARK_RED = '4',
|
||||||
|
DARK_PURPLE = '5',
|
||||||
|
GOLD = '6',
|
||||||
|
GRAY = '7',
|
||||||
|
DARK_GRAY = '8',
|
||||||
|
BLUE = '9',
|
||||||
|
GREEN = 'a',
|
||||||
|
AQUA = 'b',
|
||||||
|
RED = 'c',
|
||||||
|
LIGHT_PURPLE = 'd',
|
||||||
|
YELLOW = 'e',
|
||||||
|
WHITE = 'f',
|
||||||
|
MAGIC = 'k',
|
||||||
|
BOLD = 'l',
|
||||||
|
STRIKETHROUGH = 'm',
|
||||||
|
UNDERLINE = 'n',
|
||||||
|
ITALIC = 'o',
|
||||||
|
RESET = 'r'
|
||||||
|
};
|
||||||
|
const char COLORCHAR = '§';
|
||||||
|
inline std::string operator+(const Color c, const std::string& r) {
|
||||||
|
std::string out(1, COLORCHAR);
|
||||||
|
return out + ((char) c) + r;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline std::string operator+(const Color c, const char* r) {
|
||||||
|
std::string out(1, COLORCHAR);
|
||||||
|
return out + ((char) c) + r;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline std::string operator+(const std::string& r, const Color c) {
|
||||||
|
return r + COLORCHAR + (char) c;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline std::string operator+(const char* r, const Color c) {
|
||||||
|
return r + COLORCHAR + (char) c;
|
||||||
|
}
|
||||||
|
|
|
@ -18,6 +18,7 @@ jclass CMDCLASS;
|
||||||
jclass BUKKITCLASS;
|
jclass BUKKITCLASS;
|
||||||
jclass CBSERVERCLASS;
|
jclass CBSERVERCLASS;
|
||||||
jclass CMDMAPCLASS;
|
jclass CMDMAPCLASS;
|
||||||
|
jclass CMDSENDERCLASS;
|
||||||
|
|
||||||
jfieldID EVENTDATAF;
|
jfieldID EVENTDATAF;
|
||||||
jfieldID EVENTNAMEF;
|
jfieldID EVENTNAMEF;
|
||||||
|
@ -32,6 +33,7 @@ jmethodID LISTENERCONTR;
|
||||||
jmethodID LISTENERSMALLCONTR;
|
jmethodID LISTENERSMALLCONTR;
|
||||||
jmethodID CMDCONSTR;
|
jmethodID CMDCONSTR;
|
||||||
jmethodID CMDMAPREGISTER;
|
jmethodID CMDMAPREGISTER;
|
||||||
|
jmethodID CMDSENDERSEND;
|
||||||
|
|
||||||
|
|
||||||
std::vector<CppPlugin*> plugins;
|
std::vector<CppPlugin*> plugins;
|
||||||
|
@ -71,6 +73,8 @@ void load(JNIEnv* env, long data) {
|
||||||
CBSERVERCLASS = env->FindClass("org/bukkit/craftbukkit/v1_12_R1/CraftServer");
|
CBSERVERCLASS = env->FindClass("org/bukkit/craftbukkit/v1_12_R1/CraftServer");
|
||||||
if(data & (JNI_CMDMAPCLASS | JNI_CMDMAPREGISTERMETH))
|
if(data & (JNI_CMDMAPCLASS | JNI_CMDMAPREGISTERMETH))
|
||||||
CMDMAPCLASS = env->FindClass("org/bukkit/command/SimpleCommandMap");
|
CMDMAPCLASS = env->FindClass("org/bukkit/command/SimpleCommandMap");
|
||||||
|
if(data & (JNI_CMDSENDERCLASS | JNI_CMDSENDERSENDMETH))
|
||||||
|
CMDSENDERCLASS = env->FindClass("org/bukkit/command/CommandSender");
|
||||||
|
|
||||||
if(data & JNI_EVENTDATAFIELD)
|
if(data & JNI_EVENTDATAFIELD)
|
||||||
EVENTDATAF = env->GetFieldID(EVENTCLASS, "data", "Ljava/util/Map;");
|
EVENTDATAF = env->GetFieldID(EVENTCLASS, "data", "Ljava/util/Map;");
|
||||||
|
@ -97,6 +101,8 @@ void load(JNIEnv* env, long data) {
|
||||||
CMDCONSTR = env->GetMethodID(CMDCLASS, "<init>", "(Ljava/lang/String;JI)V");
|
CMDCONSTR = env->GetMethodID(CMDCLASS, "<init>", "(Ljava/lang/String;JI)V");
|
||||||
if(data & JNI_CMDMAPREGISTERMETH)
|
if(data & JNI_CMDMAPREGISTERMETH)
|
||||||
CMDMAPREGISTER = env->GetMethodID(CMDMAPCLASS, "register", "(Ljava/lang/String;Lorg/bukkit/command/Command;)Z");
|
CMDMAPREGISTER = env->GetMethodID(CMDMAPCLASS, "register", "(Ljava/lang/String;Lorg/bukkit/command/Command;)Z");
|
||||||
|
if(data & JNI_CMDSENDERSENDMETH)
|
||||||
|
CMDSENDERSEND = env->GetMethodID(CMDSENDERCLASS, "sendMessage", "(Ljava/lang/String;)V");
|
||||||
|
|
||||||
|
|
||||||
if(((!CPPPLUGINCLASS) + (!EVENTCLASS) + (!MAPCLASS) + (!LISTENERCLASS) + (!CMDCLASS) + (!BUKKITCLASS) + (!CBSERVERCLASS) + (!CMDMAPCLASS)//wenn eins == nullptr ist -> wird zu 1 -> endergebniss != 0 -> fehler
|
if(((!CPPPLUGINCLASS) + (!EVENTCLASS) + (!MAPCLASS) + (!LISTENERCLASS) + (!CMDCLASS) + (!BUKKITCLASS) + (!CBSERVERCLASS) + (!CMDMAPCLASS)//wenn eins == nullptr ist -> wird zu 1 -> endergebniss != 0 -> fehler
|
||||||
|
@ -300,19 +306,23 @@ bool registerCmd(JNIEnv* env, CppPlugin* plugin, std::string& cname, cmdfptr fun
|
||||||
|
|
||||||
// create cnd
|
// create cnd
|
||||||
jstring name = env->NewStringUTF(cname.c_str());
|
jstring name = env->NewStringUTF(cname.c_str());
|
||||||
DEB("name converted");
|
|
||||||
jobject cmd = env->NewObject(CMDCLASS, CMDCONSTR, name, reinterpret_cast<jlong>(function), plugin->id);
|
jobject cmd = env->NewObject(CMDCLASS, CMDCONSTR, name, reinterpret_cast<jlong>(function), plugin->id);
|
||||||
DEB("cmd created");
|
env->DeleteLocalRef(name);
|
||||||
|
|
||||||
//call register
|
//call register
|
||||||
// ((CraftServer) Bukkit.getServer()).getCommandMap().register(fallbackprefix, cmd);
|
// ((CraftServer) Bukkit.getServer()).getCommandMap().register(fallbackprefix, cmd);
|
||||||
jobject jserver = env->GetStaticObjectField(BUKKITCLASS, BUKKITSERVER);
|
jobject jserver = env->GetStaticObjectField(BUKKITCLASS, BUKKITSERVER);
|
||||||
DEB("got server");
|
|
||||||
jobject cmdmap = env->GetObjectField(jserver, SERVERCMDMAP);
|
jobject cmdmap = env->GetObjectField(jserver, SERVERCMDMAP);
|
||||||
DEB("cmdmap");
|
|
||||||
|
|
||||||
jstring fallbackprefix = env->NewStringUTF(plugin->name.c_str());
|
jstring fallbackprefix = env->NewStringUTF(plugin->name.c_str());
|
||||||
DEB("prefix created");
|
|
||||||
return env->CallBooleanMethod(cmdmap, CMDMAPREGISTER, fallbackprefix, cmd);
|
return env->CallBooleanMethod(cmdmap, CMDMAPREGISTER, fallbackprefix, cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void send(JNIEnv* env, jobject sender, const char* text) {
|
||||||
|
load(env, JNI_CMDSENDERSENDMETH);
|
||||||
|
|
||||||
|
jstring jtext = env->NewStringUTF(text);
|
||||||
|
env->CallVoidMethod(sender, CMDSENDERSEND, jtext);
|
||||||
|
env->DeleteLocalRef(jtext);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@ package de.mrbesen.cppplugins;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Server;
|
import org.bukkit.Server;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
|
@ -13,6 +13,7 @@ bool hicmd(JNIEnv* env, CppPlugin* plugin, jobject sender, jobject cmd, std::str
|
||||||
for(std::string& arg : args) {
|
for(std::string& arg : args) {
|
||||||
std::cout << arg << std::endl;
|
std::cout << arg << std::endl;
|
||||||
}
|
}
|
||||||
|
send(env, sender, Color::AQUA + "Hiiiiii\n" + Color::GREEN + "Nuttöööö");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue