Files
mcpe/source/world/gamemode/CreativeMode.cpp
2023-08-16 22:52:34 +03:00

62 lines
1.4 KiB
C++

/********************************************************************
Minecraft: Pocket Edition - Decompilation Project
Copyright (C) 2023 iProgramInCpp
The following code is licensed under the BSD 1 clause license.
SPDX-License-Identifier: BSD-1-Clause
********************************************************************/
#include "CreativeMode.hpp"
#include "Minecraft.hpp"
CreativeMode::CreativeMode(Minecraft* pMC) : GameMode(pMC)
{
}
bool CreativeMode::destroyBlock(int x, int y, int z, int i)
{
m_pMinecraft->m_pParticleEngine->destroy(x, y, z);
TileID tile = m_pMinecraft->m_pLevel->getTile(x, y, z);
int data = m_pMinecraft->m_pLevel->getData(x, y, z);
if (!GameMode::destroyBlock(x, y, z, i))
return false;
//@HUH: check too late?
bool bCanDestroy = m_pMinecraft->m_pLocalPlayer->canDestroy(Tile::tiles[tile]);
if (bCanDestroy)
{
Tile::tiles[tile]->playerDestroy(m_pMinecraft->m_pLevel, m_pMinecraft->m_pLocalPlayer, x, y, z, data);
if (m_pMinecraft->isOnline())
{
m_pMinecraft->m_pRakNetInstance->send(new RemoveBlockPacket(m_pMinecraft->m_pLocalPlayer->m_EntityID, x, y, z));
}
}
return true;
}
void CreativeMode::initPlayer(Player* p)
{
p->m_yaw = -180.0f;
p->m_pInventory->prepareCreativeInventory();
}
float CreativeMode::getPickRange()
{
return 5.0f;
}
bool CreativeMode::isCreativeType()
{
return true;
}
bool CreativeMode::isSurvivalType()
{
return false;
}