FIX: commands and multiplayer crashes

This commit is contained in:
2026-07-27 17:55:40 +03:00
parent 1f252ac4b3
commit 61ff4835ea
7 changed files with 38 additions and 44 deletions

View File

@@ -36,14 +36,14 @@ std::string CommandBan::execute(Minecraft& mc, Player& player, const std::vector
(*it)->remove();
mc.raknetInstance->getPeer()->CloseConnection((*it)->owner, true);
} else {
for (auto& banned : mc.level->bannedPpl) {
for (auto& banned : mc.level->bannedPlayers) {
if (nicknameLower == banned) {
return args[0] + "already banned!";
}
}
}
mc.level->bannedPpl.insert(nicknameLower);
mc.level->bannedPlayers.insert(nicknameLower);
return "ban: successfully banned player " + args[0];
}

View File

@@ -36,32 +36,25 @@ std::vector<std::string> CommandManager::getListAllCommands() {
}
std::string CommandManager::execute(Minecraft& mc, Player& player, const std::string& input) {
if (!mc.level->isClientSide) {
std::istringstream ss(input);
std::string cmd;
std::istringstream ss(input);
std::string cmd;
ss >> cmd;
ss >> cmd;
auto it = std::find_if(m_commands.begin(), m_commands.end(), [cmd](auto& it) -> bool {
return it->getName() == cmd;
});
auto it = std::find_if(m_commands.begin(), m_commands.end(), [cmd](auto& it) -> bool {
return it->getName() == cmd;
});
if (it == m_commands.end()) {
return "Command /" + cmd + " not found";
}
std::vector<std::string> args;
std::string tok;
while (ss >> tok) args.push_back(tok);
return (*it)->execute(mc, player, args);
} else {
ChatPacket packet("/" + input);
mc.raknetInstance->send(packet);
if (it == m_commands.end()) {
return "Command /" + cmd + " not found";
}
return std::string();
std::vector<std::string> args;
std::string tok;
while (ss >> tok) args.push_back(tok);
return (*it)->execute(mc, player, args);
}
Command* CommandManager::getCommand(const std::string& name) {