mirror of
https://github.com/celisej567/mcpe.git
synced 2026-09-17 20:10:23 +03:00
github.dev removing files randomly lmfao
This commit is contained in:
130
source/world/tile/LadderTile.cpp
Normal file
130
source/world/tile/LadderTile.cpp
Normal file
@@ -0,0 +1,130 @@
|
||||
/********************************************************************
|
||||
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 "Tile.hpp"
|
||||
#include "Level.hpp"
|
||||
|
||||
LadderTile::LadderTile(int ID, int texture) : Tile(ID, texture, Material::decoration)
|
||||
{
|
||||
}
|
||||
|
||||
int LadderTile::getRenderShape()
|
||||
{
|
||||
return SHAPE_LADDER;
|
||||
}
|
||||
|
||||
int LadderTile::getResourceCount(Random* random)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
bool LadderTile::isCubeShaped()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool LadderTile::isSolidRender()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
AABB* LadderTile::getAABB(Level* level, int x, int y, int z)
|
||||
{
|
||||
int data = level->getData(x, y, z);
|
||||
switch (data)
|
||||
{
|
||||
case 2:
|
||||
setShape(0.0f, 0.0f, 0.875, 1.0f, 1.0f, 1.0f);
|
||||
break;
|
||||
case 3:
|
||||
setShape(0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.125f);
|
||||
break;
|
||||
case 4:
|
||||
setShape(0.875, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f);
|
||||
break;
|
||||
case 5:
|
||||
setShape(0.0f, 0.0f, 0.0f, 0.125, 1.0f, 1.0f);
|
||||
break;
|
||||
}
|
||||
|
||||
return Tile::getAABB(level, x, y, z);
|
||||
}
|
||||
|
||||
AABB LadderTile::getTileAABB(Level* level, int x, int y, int z)
|
||||
{
|
||||
int data = level->getData(x, y, z);
|
||||
switch (data)
|
||||
{
|
||||
case 2:
|
||||
setShape(0.0f, 0.0f, 0.875, 1.0f, 1.0f, 1.0f);
|
||||
break;
|
||||
case 3:
|
||||
setShape(0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.125f);
|
||||
break;
|
||||
case 4:
|
||||
setShape(0.875, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f);
|
||||
break;
|
||||
case 5:
|
||||
setShape(0.0f, 0.0f, 0.0f, 0.125, 1.0f, 1.0f);
|
||||
break;
|
||||
}
|
||||
|
||||
return Tile::getTileAABB(level, x, y, z);
|
||||
}
|
||||
|
||||
void LadderTile::setPlacedOnFace(Level* level, int x, int y, int z, int face)
|
||||
{
|
||||
int data = level->getData(x, y, z);
|
||||
|
||||
if ((data == 0 || face == DIR_ZNEG) && level->isSolidTile(x, y, z + 1)) data = 2;
|
||||
if ((data == 0 || face == DIR_ZPOS) && level->isSolidTile(x, y, z - 1)) data = 3;
|
||||
if ((data == 0 || face == DIR_XNEG) && level->isSolidTile(x + 1, y, z)) data = 4;
|
||||
if ((data == 0 || face == DIR_XPOS) && level->isSolidTile(x - 1, y, z)) data = 5;
|
||||
|
||||
level->setData(x, y, z, data);
|
||||
assert(level->getData(x, y, z) == data);
|
||||
}
|
||||
|
||||
void LadderTile::neighborChanged(Level* level, int x, int y, int z, int dir)
|
||||
{
|
||||
int data = level->getData(x, y, z);
|
||||
switch (data)
|
||||
{
|
||||
case 2:
|
||||
if (level->isSolidTile(x, y, z + 1)) return;
|
||||
break;
|
||||
case 3:
|
||||
if (level->isSolidTile(x, y, z - 1)) return;
|
||||
break;
|
||||
case 4:
|
||||
if (level->isSolidTile(x + 1, y, z)) return;
|
||||
break;
|
||||
case 5:
|
||||
if (level->isSolidTile(x - 1, y, z)) return;
|
||||
break;
|
||||
case 0:
|
||||
// hasn't decided on anything right now?
|
||||
break;
|
||||
default:
|
||||
// invalid state
|
||||
assert(!"invalid ladder state");
|
||||
break;
|
||||
}
|
||||
|
||||
spawnResources(level, x, y, z, data);
|
||||
level->setTile(x, y, z, TILE_AIR);
|
||||
}
|
||||
|
||||
bool LadderTile::mayPlace(Level* level, int x, int y, int z)
|
||||
{
|
||||
return
|
||||
level->isSolidTile(x - 1, y, z) ||
|
||||
level->isSolidTile(x + 1, y, z) ||
|
||||
level->isSolidTile(x, y, z - 1) ||
|
||||
level->isSolidTile(x, y, z + 1);
|
||||
}
|
||||
Reference in New Issue
Block a user