#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 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 player = getPlayer(uid); if(player != NULL && item > 0 && Item::items[item] != NULL) { shared_ptr itemInstance = shared_ptr(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 GiveItemCommand::preparePacket(shared_ptr 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( new GameCommandPacket(eGameCommand_Give, baos.toByteArray() )); }