diff options
Diffstat (limited to 'Minecraft.World/GiveItemCommand.cpp')
| -rw-r--r-- | Minecraft.World/GiveItemCommand.cpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/Minecraft.World/GiveItemCommand.cpp b/Minecraft.World/GiveItemCommand.cpp new file mode 100644 index 00000000..1d13592f --- /dev/null +++ b/Minecraft.World/GiveItemCommand.cpp @@ -0,0 +1,50 @@ +#include "stdafx.h" +#include "net.minecraft.commands.h" +#include "net.minecraft.world.item.h" +#include "net.minecraft.network.packet.h" +#include "..\Minecraft.Client\ServerPlayer.h" +#include "GiveItemCommand.h" + +EGameCommand GiveItemCommand::getId() +{ + return eGameCommand_Give; +} + +void GiveItemCommand::execute(shared_ptr<CommandSender> source, byteArray commandData) +{ + ByteArrayInputStream bais(commandData); + DataInputStream dis(&bais); + + PlayerUID uid = dis.readPlayerUID(); + int item = dis.readInt(); + int amount = dis.readInt(); + int aux = dis.readInt(); + wstring tag = dis.readUTF(); + + bais.reset(); + + shared_ptr<ServerPlayer> player = getPlayer(uid); + if(player != NULL && item > 0 && Item::items[item] != NULL) + { + shared_ptr<ItemInstance> itemInstance = shared_ptr<ItemInstance>(new ItemInstance(item, amount, aux)); + player->drop(itemInstance); + //logAdminAction(source, L"commands.give.success", ChatPacket::e_ChatCustom, Item::items[item]->getName(itemInstance), item, amount, player->getAName()); + logAdminAction(source, ChatPacket::e_ChatCustom, L"commands.give.success", item, player->getAName()); + } +} + +shared_ptr<GameCommandPacket> GiveItemCommand::preparePacket(shared_ptr<Player> player, int item, int amount, int aux, const wstring &tag) +{ + if(player == NULL) return nullptr; + + ByteArrayOutputStream baos; + DataOutputStream dos(&baos); + + dos.writePlayerUID(player->getXuid()); + dos.writeInt(item); + dos.writeInt(amount); + dos.writeInt(aux); + dos.writeUTF(tag); + + return shared_ptr<GameCommandPacket>( new GameCommandPacket(eGameCommand_Give, baos.toByteArray() )); +}
\ No newline at end of file |
