i
This commit is contained in:
@@ -448,7 +448,7 @@ void ClientSideNetworkHandler::handle(const RakNet::RakNetGUID& source, TakeItem
|
|||||||
|
|
||||||
LOGI("TakeItemPacket\n");
|
LOGI("TakeItemPacket\n");
|
||||||
|
|
||||||
ItemInstance* item;
|
ItemInstance* item = new ItemInstance();
|
||||||
|
|
||||||
item->count = packet->count;
|
item->count = packet->count;
|
||||||
item->id = packet->itemId;
|
item->id = packet->itemId;
|
||||||
|
|||||||
@@ -357,8 +357,6 @@ void ServerSideNetworkHandler::onReady_ClientGeneration(const RakNet::RakNetGUID
|
|||||||
#else
|
#else
|
||||||
LOGW("%s joined the game\n", newPlayer->name.c_str());
|
LOGW("%s joined the game\n", newPlayer->name.c_str());
|
||||||
#endif
|
#endif
|
||||||
PluginsManager::get().emit("PlayerJoin", LuaPlayer(source));
|
|
||||||
|
|
||||||
// Send all Entities to the new player
|
// Send all Entities to the new player
|
||||||
for (unsigned int i = 0; i < level->entities.size(); ++i) {
|
for (unsigned int i = 0; i < level->entities.size(); ++i) {
|
||||||
Entity* e = level->entities[i];
|
Entity* e = level->entities[i];
|
||||||
@@ -414,6 +412,8 @@ void ServerSideNetworkHandler::onReady_ClientGeneration(const RakNet::RakNetGUID
|
|||||||
bitStream.Reset();
|
bitStream.Reset();
|
||||||
AddPlayerPacket(newPlayer).write(&bitStream);
|
AddPlayerPacket(newPlayer).write(&bitStream);
|
||||||
rakPeer->Send(&bitStream, HIGH_PRIORITY, RELIABLE_ORDERED, 0, source, true);
|
rakPeer->Send(&bitStream, HIGH_PRIORITY, RELIABLE_ORDERED, 0, source, true);
|
||||||
|
|
||||||
|
PluginsManager::get().emit("PlayerJoin", LuaPlayer(source));
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -7,8 +7,11 @@
|
|||||||
#include <client/Minecraft.h>
|
#include <client/Minecraft.h>
|
||||||
#include <network/packet/ChatPacket.h>
|
#include <network/packet/ChatPacket.h>
|
||||||
#include <network/packet/MovePlayerPacket.h>
|
#include <network/packet/MovePlayerPacket.h>
|
||||||
|
#include <network/packet/RemoveItemPacket.h>
|
||||||
|
#include <network/packet/TakeItemPacket.h>
|
||||||
#include <world/entity/player/Inventory.h>
|
#include <world/entity/player/Inventory.h>
|
||||||
|
|
||||||
|
// TODO: Optimize includes
|
||||||
class LuaPlayer {
|
class LuaPlayer {
|
||||||
public:
|
public:
|
||||||
LuaPlayer(const RakNet::RakNetGUID source) : m_source(source) {}
|
LuaPlayer(const RakNet::RakNetGUID source) : m_source(source) {}
|
||||||
@@ -68,7 +71,48 @@ public:
|
|||||||
auto plr = getPlayer();
|
auto plr = getPlayer();
|
||||||
if (plr == nullptr) return;
|
if (plr == nullptr) return;
|
||||||
|
|
||||||
plr->inventory->add(new ItemInstance(id, count, auxValue));
|
auto mc = PluginsManager::get().getMinecraft();
|
||||||
|
ServerSideNetworkHandler* ss = (ServerSideNetworkHandler*) mc->netCallback;
|
||||||
|
auto item = new ItemInstance(id, count, auxValue);
|
||||||
|
|
||||||
|
if (!plr->inventory->add(item)) {
|
||||||
|
plr->inventory->add(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
TakeItemPacket itemAdd(plr->entityId, count, auxValue, id);
|
||||||
|
ss->sendPrivate(itemAdd, m_source);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::tuple<int, int, int> getItem(int index) {
|
||||||
|
auto plr = getPlayer();
|
||||||
|
if (plr == nullptr) return {0, 0, 0};
|
||||||
|
|
||||||
|
auto item = plr->inventory->getItem(index);
|
||||||
|
|
||||||
|
if (item != nullptr) {
|
||||||
|
return {item->id, item->count, item->getAuxValue()};
|
||||||
|
} else {
|
||||||
|
return {0, 0, 0};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void clearInventory() {
|
||||||
|
auto plr = getPlayer();
|
||||||
|
if (plr == nullptr) return;
|
||||||
|
|
||||||
|
auto mc = PluginsManager::get().getMinecraft();
|
||||||
|
ServerSideNetworkHandler* ss = (ServerSideNetworkHandler*) mc->netCallback;
|
||||||
|
|
||||||
|
for (int i = Inventory::MAX_SELECTION_SIZE; i < plr->inventory->getContainerSize(); i++) {
|
||||||
|
auto itm = plr->inventory->getItem(i);
|
||||||
|
|
||||||
|
if (itm != NULL) {
|
||||||
|
printf("remove %d \n", plr->inventory->removeResource(ItemInstance(itm->id, itm->count, itm->getAuxValue())));
|
||||||
|
RemoveItemPacket itemAdd(plr->entityId, itm->count, itm->getAuxValue(), itm->id);
|
||||||
|
ss->sendPrivate(itemAdd, m_source);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sol::table getInventory() {
|
sol::table getInventory() {
|
||||||
|
|||||||
@@ -73,7 +73,10 @@ void PluginsManager::registerTypes() {
|
|||||||
"getPos", &LuaPlayer::getPos,
|
"getPos", &LuaPlayer::getPos,
|
||||||
"setPos", &LuaPlayer::setPos,
|
"setPos", &LuaPlayer::setPos,
|
||||||
"sendMessage", &LuaPlayer::sendMessage,
|
"sendMessage", &LuaPlayer::sendMessage,
|
||||||
"getInventory", &LuaPlayer::getInventory
|
"getInventory", &LuaPlayer::getInventory,
|
||||||
|
"addItem", &LuaPlayer::addItem,
|
||||||
|
"getItem", &LuaPlayer::getItem,
|
||||||
|
"clearInventory", &LuaPlayer::clearInventory
|
||||||
);
|
);
|
||||||
|
|
||||||
m_lua["Server"] = &m_srv;
|
m_lua["Server"] = &m_srv;
|
||||||
|
|||||||
Reference in New Issue
Block a user