2 Commits

Author SHA1 Message Date
867114b0f3 1 2026-07-27 15:45:40 +02:00
1a8ead4955 2 2026-07-27 15:45:17 +02:00
5 changed files with 51 additions and 32 deletions

View File

@@ -5,6 +5,7 @@
#include "world/level/Level.h"
#include <algorithm>
#include <client/Minecraft.h>
#include <network/packet/LoginStatusPacket.h>
CommandBan::CommandBan() : Command("ban") {}
@@ -31,12 +32,6 @@ std::string CommandBan::execute(Minecraft& mc, Player& player, const std::vector
if (*it == (Player*)mc.player) {
return "banip: you can't ban urself lol";
}
auto sourceId = (*it)->owner;
(*it)->reallyRemoveIfPlayer = true;
mc.level->removeEntity((*it));
mc.raknetInstance->getPeer()->CloseConnection(sourceId, true);
} else {
for (auto& banned : mc.level->bannedPpl) {
if (nicknameLower == banned) {

View File

@@ -40,6 +40,7 @@
#include "../server/ServerPlayer.h"
#include "../world/entity/item/FallingTile.h"
#include <plugins/LuaPlayer.hpp>
#include <plugins/MessageEvent.hpp>
#define TIMES(x) for(int itc ## __LINE__ = 0; itc ## __LINE__ < x; ++ itc ## __LINE__)
@@ -164,23 +165,24 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, MessageP
auto msg = std::string(packet->message.C_String());
MessageEvent event;
event.m_decline = false;
PluginsManager::get().emit("Message", LuaPlayer(source), msg, event);
if (!event.m_decline) {
if (packet->message[0] == '/') {
// This is a command
auto cmd = Util::stringTrim(msg);
auto cmd = Util::stringTrim(msg.substr(1));
if (PluginsManager::get().emitCommands(msg, source)) {
ChatPacket resp(minecraft->commandManager().execute(*minecraft, *player, msg));
if (PluginsManager::get().emitCommands(cmd, source)) {
ChatPacket resp(minecraft->commandManager().execute(*minecraft, *player, cmd));
return sendPrivate(resp, source);
} else {
return;
}
}
// @todo rewrite
bool shouldShow = true;
PluginsManager::get().emit("Message", LuaPlayer(source), packet->message);
if (shouldShow) {
displayGameMessage("<" + player->name + "> " + msg);
}
}
@@ -191,6 +193,12 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, ChatPack
if (player == nullptr) return; // @todo maybe kick?
MessageEvent event;
event.m_decline = false;
PluginsManager::get().emit("Message", LuaPlayer(source), packet->message, event);
if (!event.m_decline) {
if (packet->message[0] == '/') {
// This is a command
auto cmd = Util::stringTrim(packet->message.substr(1));
@@ -204,7 +212,7 @@ void ServerSideNetworkHandler::handle(const RakNet::RakNetGUID& source, ChatPack
}
displayGameMessage("<" + player->name + "> " + packet->message);
PluginsManager::get().emit("Message", LuaPlayer(source), packet->message);
}
}
void ServerSideNetworkHandler::onNewClient(const RakNet::RakNetGUID& clientGuid)

View File

@@ -1,4 +1,5 @@
#pragma once
#include <cstdint>
#include <raknet/RakNetTypes.h>
#include <plugins/PluginsManager.hpp>

View File

@@ -0,0 +1,9 @@
#pragma once
class MessageEvent {
public:
bool m_decline;
void setDecline(bool decline) { m_decline = decline; }
private:
};

View File

@@ -4,6 +4,7 @@
#include <client/Minecraft.h>
#include <filesystem>
#include "MessageEvent.hpp"
namespace fs = std::filesystem;
@@ -79,6 +80,11 @@ void PluginsManager::registerTypes() {
"setHp", &LuaPlayer::setHp
);
m_lua.new_usertype<MessageEvent>(
"MessageEvent",
"setDecline", &MessageEvent::setDecline
);
m_lua["Server"] = &m_srv;
}