2024-11-22 05:54:34 +00:00
|
|
|
#include <libreborn/patch.h>
|
|
|
|
#include <libreborn/util.h>
|
|
|
|
#include <libreborn/string.h>
|
|
|
|
|
2022-06-27 01:17:52 +00:00
|
|
|
#include <symbols/minecraft.h>
|
2024-11-22 05:54:34 +00:00
|
|
|
|
2022-06-27 01:17:52 +00:00
|
|
|
#include <mods/chat/chat.h>
|
|
|
|
#include <mods/misc/misc.h>
|
2024-09-21 06:30:06 +00:00
|
|
|
#include <mods/server/server.h>
|
2022-06-27 01:17:52 +00:00
|
|
|
|
|
|
|
// The Actual Mod
|
2024-09-21 05:49:47 +00:00
|
|
|
HOOK(chat_handle_packet_send, void, (const Minecraft *minecraft, ChatPacket *packet)) {
|
2022-06-27 01:17:52 +00:00
|
|
|
// Get Message
|
2024-03-19 04:25:50 +00:00
|
|
|
const char *message = packet->message.c_str();
|
2022-06-27 01:17:52 +00:00
|
|
|
if (message[0] == '/') {
|
|
|
|
// API Command
|
2024-09-21 05:49:47 +00:00
|
|
|
Minecraft *mc = (Minecraft *) minecraft;
|
|
|
|
Gui *gui = &mc->gui;
|
|
|
|
std::string out = chat_send_api_command(mc, (char *) &message[1]);
|
2022-06-27 01:17:52 +00:00
|
|
|
if (out.length() > 0 && out[out.length() - 1] == '\n') {
|
|
|
|
out[out.length() - 1] = '\0';
|
|
|
|
}
|
2024-11-19 01:15:15 +00:00
|
|
|
std::string cp437_out = to_cp437(out);
|
2024-11-03 05:41:28 +00:00
|
|
|
gui->addMessage(cp437_out);
|
2022-06-27 01:17:52 +00:00
|
|
|
} else {
|
|
|
|
// Call Original Method
|
2024-10-07 14:18:16 +00:00
|
|
|
real_chat_handle_packet_send()(minecraft, packet);
|
2022-06-27 01:17:52 +00:00
|
|
|
}
|
|
|
|
}
|
2024-09-21 06:30:06 +00:00
|
|
|
|
|
|
|
// Add Server Command
|
|
|
|
HOOK(server_get_commands, std::vector<ServerCommand> *, (Minecraft *minecraft, ServerSideNetworkHandler *server_side_network_handler)) {
|
|
|
|
// Call Original Method
|
2024-10-07 14:18:16 +00:00
|
|
|
std::vector<ServerCommand> *commands = real_server_get_commands()(minecraft, server_side_network_handler);
|
2024-09-21 06:30:06 +00:00
|
|
|
// Add Command
|
|
|
|
commands->push_back({
|
|
|
|
.name = "greet",
|
|
|
|
.comment = "Example Custom Command",
|
|
|
|
.callback = [](__attribute__((unused)) const std::string &cmd) {
|
|
|
|
INFO("Hello World!");
|
|
|
|
}
|
|
|
|
});
|
|
|
|
// Return
|
|
|
|
return commands;
|
|
|
|
}
|