diff options
| author | daoge <3523206925@qq.com> | 2026-03-03 03:04:10 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-03 03:04:10 +0800 |
| commit | b3feddfef372618c8a9d7a0abcaf18cfad866c18 (patch) | |
| tree | 267761c3bb39241ba5c347bfbe2254d06686e287 /Minecraft.World/CommandBlockEntity.cpp | |
| parent | 84c31a2331f7a0ec85b9d438992e244f60e5020f (diff) | |
feat: TU19 (Dec 2014) Features & Content (#155)
* try to resolve merge conflict
* feat: TU19 (Dec 2014) Features & Content (#32)
* December 2014 files
* Working release build
* Fix compilation issues
* Add sound to Windows64Media
* Add DLC content and force Tutorial DLC
* Revert "Add DLC content and force Tutorial DLC"
This reverts commit 97a43994725008e35fceb984d5549df9c8cea470.
* Disable broken light packing
* Disable breakpoint during DLC texture map load
Allows DLC loading but the DLC textures are still broken
* Fix post build not working
* ...
* fix vs2022 build
* fix cmake build
---------
Co-authored-by: Loki <lokirautio@gmail.com>
Diffstat (limited to 'Minecraft.World/CommandBlockEntity.cpp')
| -rw-r--r-- | Minecraft.World/CommandBlockEntity.cpp | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/Minecraft.World/CommandBlockEntity.cpp b/Minecraft.World/CommandBlockEntity.cpp new file mode 100644 index 00000000..1c518f4f --- /dev/null +++ b/Minecraft.World/CommandBlockEntity.cpp @@ -0,0 +1,121 @@ +#include "stdafx.h" +#include "net.minecraft.network.packet.h" +#include "net.minecraft.world.level.h" +#include "net.minecraft.commands.h" +#include "..\Minecraft.Client\MinecraftServer.h" +#include "CommandBlockEntity.h" + +CommandBlockEntity::CommandBlockEntity() +{ + successCount = 0; + command = L""; + name = L"@"; +} + +void CommandBlockEntity::setCommand(const wstring &command) +{ + this->command = command; + setChanged(); +} + +wstring CommandBlockEntity::getCommand() +{ + return command; +} + +int CommandBlockEntity::performCommand(Level *level) +{ +#if 0 + if (level->isClientSide) + { + return 0; + } + + MinecraftServer *instance = MinecraftServer::getInstance(); + if (instance != NULL && instance->isCommandBlockEnabled()) + { + CommandDispatcher *commandDispatcher = instance->getCommandDispatcher(); + return commandDispatcher->performCommand(dynamic_pointer_cast<CommandSender>(shared_from_this()), command, byteArray() ); + } + return 0; +#else + // 4J-JEV: Cannot decide what to do with the command field. + assert(false); + return 0; +#endif +} + +wstring CommandBlockEntity::getName() +{ + return name; +} + +void CommandBlockEntity::setName(const wstring &name) +{ + this->name = name; +} + +void CommandBlockEntity::sendMessage(const wstring& message, ChatPacket::EChatPacketMessage type, int customData , const wstring& additionalMessage) +{ +} + +bool CommandBlockEntity::hasPermission(EGameCommand command) +{ + return false; +} + +void CommandBlockEntity::save(CompoundTag *tag) +{ + TileEntity::save(tag); + tag->putString(L"Command", command); + tag->putInt(L"SuccessCount", successCount); + tag->putString(L"CustomName", name); +} + +void CommandBlockEntity::load(CompoundTag *tag) +{ + TileEntity::load(tag); + command = tag->getString(L"Command"); + successCount = tag->getInt(L"SuccessCount"); + if (tag->contains(L"CustomName")) name = tag->getString(L"CustomName"); +} + +Pos *CommandBlockEntity::getCommandSenderWorldPosition() +{ + return new Pos(x, y, z); +} + +Level *CommandBlockEntity::getCommandSenderWorld() +{ + return getLevel(); +} + +shared_ptr<Packet> CommandBlockEntity::getUpdatePacket() +{ + CompoundTag *tag = new CompoundTag(); + save(tag); + return shared_ptr<TileEntityDataPacket>( new TileEntityDataPacket(x, y, z, TileEntityDataPacket::TYPE_ADV_COMMAND, tag) ); +} + +int CommandBlockEntity::getSuccessCount() +{ + return successCount; +} + +void CommandBlockEntity::setSuccessCount(int successCount) +{ + this->successCount = successCount; +} + +// 4J Added +shared_ptr<TileEntity> CommandBlockEntity::clone() +{ + shared_ptr<CommandBlockEntity> result = shared_ptr<CommandBlockEntity>( new CommandBlockEntity() ); + TileEntity::clone(result); + + result->successCount = successCount; + result->command = command; + result->name = name; + + return result; +}
\ No newline at end of file |
