4jcraft/Minecraft.World/Blocks/TileEntities/CommandBlockEntity.cpp
2026-03-21 15:52:50 -05:00

99 lines
3 KiB
C++

#include "../../Platform/stdafx.h"
#include "../../Headers/net.minecraft.network.packet.h"
#include "../../Headers/net.minecraft.world.level.h"
#include "../../Headers/net.minecraft.commands.h"
#include "../../../Minecraft.Client/MinecraftServer.h"
#include "CommandBlockEntity.h"
CommandBlockEntity::CommandBlockEntity() {
successCount = 0;
command = L"";
name = L"@";
}
void CommandBlockEntity::setCommand(const std::wstring& command) {
this->command = command;
setChanged();
}
std::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(std::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
}
std::wstring CommandBlockEntity::getName() { return name; }
void CommandBlockEntity::setName(const std::wstring& name) {
this->name = name;
}
void CommandBlockEntity::sendMessage(const std::wstring& message,
ChatPacket::EChatPacketMessage type,
int customData,
const std::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(); }
std::shared_ptr<Packet> CommandBlockEntity::getUpdatePacket() {
CompoundTag* tag = new CompoundTag();
save(tag);
return std::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
std::shared_ptr<TileEntity> CommandBlockEntity::clone() {
std::shared_ptr<CommandBlockEntity> result =
std::shared_ptr<CommandBlockEntity>(new CommandBlockEntity());
TileEntity::clone(result);
result->successCount = successCount;
result->command = command;
result->name = name;
return result;
}