mirror of
https://github.com/quizhizhe/LiteLoaderBDS-1.16.40.git
synced 2025-06-05 03:43:40 +00:00
修复sendTextPack问题
This commit is contained in:
parent
50695e60b9
commit
ca410cd29d
@ -10,7 +10,16 @@
|
|||||||
class NetworkHandler {
|
class NetworkHandler {
|
||||||
|
|
||||||
#define AFTER_EXTRA
|
#define AFTER_EXTRA
|
||||||
|
// Add Member There
|
||||||
|
public:
|
||||||
|
enum NetworkStatisticsConfig;
|
||||||
|
class Connection
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Connection() = delete;
|
||||||
|
Connection(Connection const&) = delete;
|
||||||
|
Connection(Connection const&&) = delete;
|
||||||
|
};
|
||||||
#undef AFTER_EXTRA
|
#undef AFTER_EXTRA
|
||||||
#ifndef DISABLE_CONSTRUCTOR_PREVENTION_NETWORKHANDLER
|
#ifndef DISABLE_CONSTRUCTOR_PREVENTION_NETWORKHANDLER
|
||||||
public:
|
public:
|
||||||
|
@ -42,7 +42,7 @@ public:
|
|||||||
LIAPI std::string getIP();
|
LIAPI std::string getIP();
|
||||||
LIAPI string getLanguageCode();
|
LIAPI string getLanguageCode();
|
||||||
LIAPI string getServerAddress();
|
LIAPI string getServerAddress();
|
||||||
LIAPI NetworkIdentifier* getNetworkIdentifier();
|
LIAPI NetworkIdentifier* getNetworkIdentifier() const;
|
||||||
LIAPI Certificate* getCertificate()const;
|
LIAPI Certificate* getCertificate()const;
|
||||||
LIAPI std::pair<BlockPos, int> getRespawnPosition();
|
LIAPI std::pair<BlockPos, int> getRespawnPosition();
|
||||||
LIAPI float getAvgPacketLoss();
|
LIAPI float getAvgPacketLoss();
|
||||||
@ -168,6 +168,8 @@ public:
|
|||||||
LIAPI bool sendRawFormPacket(unsigned formId, const string& data) const;
|
LIAPI bool sendRawFormPacket(unsigned formId, const string& data) const;
|
||||||
//LIAPI bool sendToastPacket(string title, string msg);
|
//LIAPI bool sendToastPacket(string title, string msg);
|
||||||
|
|
||||||
|
void sendNetworkPacket(class Packet &) const;
|
||||||
|
|
||||||
LIAPI static bool isValid(Player* player);
|
LIAPI static bool isValid(Player* player);
|
||||||
|
|
||||||
// For compatibility
|
// For compatibility
|
||||||
@ -360,7 +362,7 @@ public:
|
|||||||
/*418*/ virtual bool isItemInCooldown(enum CooldownType) const;
|
/*418*/ virtual bool isItemInCooldown(enum CooldownType) const;
|
||||||
/*419*/ virtual void sendInventoryTransaction(class InventoryTransaction const &) const = 0;
|
/*419*/ virtual void sendInventoryTransaction(class InventoryTransaction const &) const = 0;
|
||||||
/*420*/ virtual void sendComplexInventoryTransaction(std::unique_ptr<class ComplexInventoryTransaction>) const = 0;
|
/*420*/ virtual void sendComplexInventoryTransaction(std::unique_ptr<class ComplexInventoryTransaction>) const = 0;
|
||||||
/*421*/ virtual void sendNetworkPacket(class Packet &) const;
|
// /*421*/ virtual void sendNetworkPacket(class Packet &) const;
|
||||||
/*422*/ virtual class PlayerEventCoordinator & getPlayerEventCoordinator() = 0;
|
/*422*/ virtual class PlayerEventCoordinator & getPlayerEventCoordinator() = 0;
|
||||||
/*423*/ virtual class MoveInputHandler * getMoveInputHandler() = 0;
|
/*423*/ virtual class MoveInputHandler * getMoveInputHandler() = 0;
|
||||||
/*424*/ virtual enum InputMode getInputMode() const = 0;
|
/*424*/ virtual enum InputMode getInputMode() const = 0;
|
||||||
|
@ -13,22 +13,23 @@ class TextPacket : public Packet {
|
|||||||
#define AFTER_EXTRA
|
#define AFTER_EXTRA
|
||||||
// Add Member There
|
// Add Member There
|
||||||
// char filler[168];
|
// char filler[168];
|
||||||
|
public:
|
||||||
TextType mType;
|
TextType mType;
|
||||||
std::string mAuthor;
|
std::string mAuthor;
|
||||||
std::string mMessage;
|
std::string mMessage;
|
||||||
std::vector<std::string> params;
|
std::vector<std::string> params;//参数用于替换mMessage里的%
|
||||||
bool mLocalize;
|
bool mLocalize = 0;//是否本地化
|
||||||
std::string mXuid;
|
std::string mXuid;
|
||||||
std::string mPlatformId;
|
std::string mPlatformId;
|
||||||
public:
|
|
||||||
TextPacket(){};
|
//TextPacket(){};
|
||||||
|
|
||||||
#undef AFTER_EXTRA
|
#undef AFTER_EXTRA
|
||||||
#ifndef DISABLE_CONSTRUCTOR_PREVENTION_TEXTPACKET
|
#ifndef DISABLE_CONSTRUCTOR_PREVENTION_TEXTPACKET
|
||||||
public:
|
public:
|
||||||
class TextPacket& operator=(class TextPacket const &) = delete;
|
class TextPacket& operator=(class TextPacket const &) = delete;
|
||||||
TextPacket(class TextPacket const &) = delete;
|
TextPacket(class TextPacket const &) = delete;
|
||||||
//TextPacket() = delete;
|
TextPacket() = delete;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -44,7 +44,7 @@
|
|||||||
|
|
||||||
extern Logger logger;
|
extern Logger logger;
|
||||||
|
|
||||||
NetworkIdentifier* Player::getNetworkIdentifier() {
|
NetworkIdentifier* Player::getNetworkIdentifier() const{
|
||||||
//ServerPlayer::isHostingPlayer
|
//ServerPlayer::isHostingPlayer
|
||||||
return dAccess<NetworkIdentifier*>(this, 2432);
|
return dAccess<NetworkIdentifier*>(this, 2432);
|
||||||
}
|
}
|
||||||
@ -116,6 +116,12 @@ int Player::getPlayerLevel(){
|
|||||||
return attr.getCurrentValue();
|
return attr.getCurrentValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Player::sendNetworkPacket(class Packet &pkt) const{
|
||||||
|
void (Player::*rv)(class Packet&) const;
|
||||||
|
*((void**)&rv) = dlsym("?sendNetworkPacket@ServerPlayer@@UEBAXAEAVPacket@@@Z");
|
||||||
|
return (this->*rv)(pkt);
|
||||||
|
}
|
||||||
|
|
||||||
string Player::getDeviceTypeName() {
|
string Player::getDeviceTypeName() {
|
||||||
switch ((int)getPlatform()) {
|
switch ((int)getPlatform()) {
|
||||||
case -1:
|
case -1:
|
||||||
@ -157,7 +163,8 @@ string Player::getDeviceTypeName() {
|
|||||||
|
|
||||||
bool Player::kick(const std::string& msg) {
|
bool Player::kick(const std::string& msg) {
|
||||||
NetworkIdentifier* pNetworkIdentifier = getNetworkIdentifier();
|
NetworkIdentifier* pNetworkIdentifier = getNetworkIdentifier();
|
||||||
Global<ServerNetworkHandler>->disconnectClient(*pNetworkIdentifier, 0, msg, 0);
|
unsigned char subID = dAccess<unsigned char>(this,3520);
|
||||||
|
Global<ServerNetworkHandler>->disconnectClient(*pNetworkIdentifier, subID, msg, 0);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -497,35 +504,36 @@ static_assert(sizeof(TextPacket) == 208);
|
|||||||
static_assert(sizeof(TransferPacket) == 80);
|
static_assert(sizeof(TransferPacket) == 80);
|
||||||
|
|
||||||
bool Player::sendTextPacket(string text, TextType Type) const {
|
bool Player::sendTextPacket(string text, TextType Type) const {
|
||||||
BinaryStream wp;
|
// BinaryStream wp;
|
||||||
wp.reserve(8 + text.size());
|
// wp.reserve(8 + text.size());
|
||||||
wp.writeUnsignedChar((char)Type);
|
// wp.writeUnsignedChar((char)Type);
|
||||||
wp.writeBool(true);
|
// wp.writeBool(true);
|
||||||
switch (Type) {
|
// switch (Type) {
|
||||||
case TextType::CHAT:
|
// case TextType::CHAT:
|
||||||
case TextType::WHISPER:
|
// case TextType::WHISPER:
|
||||||
case TextType::ANNOUNCEMENT:
|
// case TextType::ANNOUNCEMENT:
|
||||||
wp.writeString("Server");
|
// wp.writeString("Server");
|
||||||
case TextType::RAW:
|
// case TextType::RAW:
|
||||||
case TextType::TIP:
|
// case TextType::TIP:
|
||||||
case TextType::SYSTEM:
|
// case TextType::SYSTEM:
|
||||||
case TextType::JSON_WHISPER:
|
// case TextType::JSON_WHISPER:
|
||||||
case TextType::JSON:
|
// case TextType::JSON:
|
||||||
wp.writeString(text);
|
// wp.writeString(text);
|
||||||
break;
|
// break;
|
||||||
case TextType::TRANSLATION:
|
// case TextType::TRANSLATION:
|
||||||
case TextType::POPUP:
|
// case TextType::POPUP:
|
||||||
case TextType::JUKEBOX_POPUP:
|
// case TextType::JUKEBOX_POPUP:
|
||||||
wp.writeString(text);
|
// wp.writeString(text);
|
||||||
wp.writeUnsignedVarInt(0);
|
// wp.writeUnsignedVarInt(0);
|
||||||
break;
|
// break;
|
||||||
}
|
// }
|
||||||
wp.writeString("");
|
// wp.writeString("");
|
||||||
wp.writeString("");
|
// wp.writeString("");
|
||||||
|
//
|
||||||
auto pkt = MinecraftPackets::createPacket(MinecraftPacketIds::Text);
|
// auto pkt = MinecraftPackets::createPacket(MinecraftPacketIds::Text);
|
||||||
pkt->read(wp);
|
// pkt->read(wp);
|
||||||
sendNetworkPacket(*pkt);
|
auto pkt = TextPacket::createSystemMessage(text);
|
||||||
|
this->sendNetworkPacket(pkt);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user