diff options
| author | daoge_cmd <3523206925@qq.com> | 2026-03-01 12:16:08 +0800 |
|---|---|---|
| committer | daoge_cmd <3523206925@qq.com> | 2026-03-01 12:16:08 +0800 |
| commit | b691c43c44ff180d10e7d4a9afc83b98551ff586 (patch) | |
| tree | 3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.World/GiveItemCommand.cpp | |
| parent | def8cb415354ac390b7e89052a50605285f1aca9 (diff) | |
Initial commit
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 |
