aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/CommandBlockEntity.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Minecraft.World/CommandBlockEntity.cpp')
-rw-r--r--Minecraft.World/CommandBlockEntity.cpp121
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