diff options
| author | daoge_cmd <3523206925@qq.com> | 2026-03-01 12:16:08 +0800 |
|---|---|---|
| committer | daoge_cmd <3523206925@qq.com> | 2026-03-01 12:16:08 +0800 |
| commit | b691c43c44ff180d10e7d4a9afc83b98551ff586 (patch) | |
| tree | 3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.World/TheEndPortalFrameTile.cpp | |
| parent | def8cb415354ac390b7e89052a50605285f1aca9 (diff) | |
Initial commit
Diffstat (limited to 'Minecraft.World/TheEndPortalFrameTile.cpp')
| -rw-r--r-- | Minecraft.World/TheEndPortalFrameTile.cpp | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/Minecraft.World/TheEndPortalFrameTile.cpp b/Minecraft.World/TheEndPortalFrameTile.cpp new file mode 100644 index 00000000..cab8319f --- /dev/null +++ b/Minecraft.World/TheEndPortalFrameTile.cpp @@ -0,0 +1,83 @@ +#include "stdafx.h" +#include "TheEndPortalFrameTile.h" +#include "net.minecraft.world.level.h" +#include "net.minecraft.world.h" +#include "Facing.h" + +const wstring TheEndPortalFrameTile::TEXTURE_EYE = L"endframe_eye"; + +TheEndPortalFrameTile::TheEndPortalFrameTile(int id) : Tile(id, Material::glass, isSolidRender() ) +{ + iconTop = NULL; + iconEye = NULL; +} + +Icon *TheEndPortalFrameTile::getTexture(int face, int data) +{ + if (face == Facing::UP) + { + return iconTop; + } + if (face == Facing::DOWN) + { + return Tile::whiteStone->getTexture(face); + } + return icon; +} + +void TheEndPortalFrameTile::registerIcons(IconRegister *iconRegister) +{ + icon = iconRegister->registerIcon(L"endframe_side"); + iconTop = iconRegister->registerIcon(L"endframe_top"); + iconEye = iconRegister->registerIcon(L"endframe_eye"); +} + +Icon *TheEndPortalFrameTile::getEye() +{ + return iconEye; +} + +bool TheEndPortalFrameTile::isSolidRender(bool isServerLevel) +{ + return false; +} + +int TheEndPortalFrameTile::getRenderShape() +{ + return SHAPE_PORTAL_FRAME; +} + +void TheEndPortalFrameTile::updateDefaultShape() +{ + setShape(0, 0, 0, 1, 13.0f / 16.0f, 1); +} + +void TheEndPortalFrameTile::addAABBs(Level *level, int x, int y, int z, AABB *box, AABBList *boxes, shared_ptr<Entity> source) +{ + setShape(0, 0, 0, 1, 13.0f / 16.0f, 1); + Tile::addAABBs(level, x, y, z, box, boxes, source); + + int data = level->getData(x, y, z); + if (hasEye(data)) + { + setShape(5.0f / 16.0f, 13.0f / 16.0f, 5.0f / 16.0f, 11.0f / 16.0f, 1, 11.0f / 16.0f); + Tile::addAABBs(level, x, y, z, box, boxes, source); + } + updateDefaultShape(); +} + +bool TheEndPortalFrameTile::hasEye(int data) +{ + return (data & EYE_BIT) != 0; +} + +int TheEndPortalFrameTile::getResource(int data, Random *random, int playerBonusLevel) +{ + return 0; +} + +void TheEndPortalFrameTile::setPlacedBy(Level *level, int x, int y, int z, shared_ptr<Mob> by) +{ + int dir = (((Mth::floor(by->yRot * 4 / (360) + 0.5)) & 3) + 2) % 4; + level->setData(x, y, z, dir); +} |
