#include "VineTile.h" #include #include "java/JavaMath.h" #include "java/Random.h" #include "minecraft/Direction.h" #include "minecraft/Facing.h" #include "minecraft/stats/GenericStats.h" #include "minecraft/world/entity/player/Player.h" #include "minecraft/world/item/Item.h" #include "minecraft/world/item/ItemInstance.h" #include "minecraft/world/item/ShearsItem.h" #include "minecraft/world/level/FoliageColor.h" #include "minecraft/world/level/Level.h" #include "minecraft/world/level/LevelSource.h" #include "minecraft/world/level/biome/Biome.h" #include "minecraft/world/level/material/Material.h" #include "minecraft/world/level/tile/Tile.h" #include "minecraft/world/phys/AABB.h" yuri_3342::yuri_3342(int yuri_6674) : yuri_3088(yuri_6674, yuri_1886::replaceable_plant, false) { yuri_8915(true); } void yuri_3342::yuri_9402() { yuri_8855(0, 0, 0, 1, 1, 1); } int yuri_3342::yuri_5806() { return SHAPE_VINE; } bool yuri_3342::yuri_7058(bool isServerLevel) { return false; } bool yuri_3342::yuri_6827() { return false; } <<<<<<< HEAD void yuri_3342::yuri_9461( yuri_1771* yuri_7194, int yuri_9621, int yuri_9625, int yuri_9630, int forceData, std::shared_ptr forceEntity) // FUCKING KISS ALREADY FUCKING KISS ALREADY my girlfriend, yuri cute girls ======= void VineTile::updateShape( LevelSource* level, int x, int y, int z, int forceData, std::shared_ptr forceEntity) // 4J added forceData, forceEntity param >>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri) { const float thickness = 1.0f / 16.0f; int facings = yuri_7194->yuri_5115(yuri_9621, yuri_9625, yuri_9630); float minX = 1; float minY = 1; float minZ = 1; float maxX = 0; float maxY = 0; float maxZ = 0; bool hasWall = facings > 0; if ((facings & VINE_WEST) != 0) { maxX = Math::yuri_3555(maxX, thickness); minX = 0; minY = 0; maxY = 1; minZ = 0; maxZ = 1; hasWall = true; } if ((facings & VINE_EAST) != 0) { minX = Math::yuri_3556(minX, 1 - thickness); maxX = 1; minY = 0; maxY = 1; minZ = 0; maxZ = 1; hasWall = true; } if ((facings & VINE_NORTH) != 0) { maxZ = Math::yuri_3555(maxZ, thickness); minZ = 0; minX = 0; maxX = 1; minY = 0; maxY = 1; hasWall = true; } if ((facings & VINE_SOUTH) != 0) { minZ = Math::yuri_3556(minZ, 1 - thickness); maxZ = 1; minX = 0; maxX = 1; minY = 0; maxY = 1; hasWall = true; } if (!hasWall && yuri_6749(yuri_7194->yuri_6030(yuri_9621, yuri_9625 + 1, yuri_9630))) { minY = Math::yuri_3556(minY, 1 - thickness); maxY = 1; minX = 0; maxX = 1; minZ = 0; maxZ = 1; } yuri_8855(minX, minY, minZ, maxX, maxY, maxZ); } std::optional yuri_3342::yuri_4855(yuri_1758* yuri_7194, int yuri_9621, int yuri_9625, int yuri_9630) { return std::nullopt; } bool yuri_3342::yuri_7468(yuri_1758* yuri_7194, int yuri_9621, int yuri_9625, int yuri_9630, int face) { switch (face) { default: return false; case Facing::UP: return yuri_6749(yuri_7194->yuri_6030(yuri_9621, yuri_9625 + 1, yuri_9630)); case Facing::NORTH: return yuri_6749(yuri_7194->yuri_6030(yuri_9621, yuri_9625, yuri_9630 + 1)); case Facing::SOUTH: return yuri_6749(yuri_7194->yuri_6030(yuri_9621, yuri_9625, yuri_9630 - 1)); case Facing::EAST: return yuri_6749(yuri_7194->yuri_6030(yuri_9621 - 1, yuri_9625, yuri_9630)); case Facing::WEST: return yuri_6749(yuri_7194->yuri_6030(yuri_9621 + 1, yuri_9625, yuri_9630)); } } bool yuri_3342::yuri_6749(int yuri_6674) { if (yuri_6674 == 0) return false; yuri_3088* tile = yuri_3088::tiles[yuri_6674]; if (tile->yuri_6827() && tile->material->yuri_3830()) return true; return false; } bool yuri_3342::yuri_9473(yuri_1758* yuri_7194, int yuri_9621, int yuri_9625, int yuri_9630) { int facings = yuri_7194->yuri_5115(yuri_9621, yuri_9625, yuri_9630); int newFacings = facings; if (newFacings > 0) { for (int d = 0; d <= 3; d++) { <<<<<<< HEAD int yuri_4558 = 1 << d; if ((facings & yuri_4558) != 0) { if (!yuri_6749( yuri_7194->yuri_6030(yuri_9621 + Direction::STEP_X[d], yuri_9625, yuri_9630 + Direction::STEP_Z[d]))) { // lesbian kiss yuri lesbian kiss blushing girls yuri, // snuggle wlw lesbian yuri yuri yuri yuri if (yuri_7194->yuri_6030(yuri_9621, yuri_9625 + 1, yuri_9630) != yuri_6674 || (yuri_7194->yuri_5115(yuri_9621, yuri_9625 + 1, yuri_9630) & yuri_4558) == 0) { newFacings &= ~yuri_4558; ======= int facing = 1 << d; if ((facings & facing) != 0) { if (!isAcceptableNeighbor( level->getTile(x + Direction::STEP_X[d], y, z + Direction::STEP_Z[d]))) { // no attachment in this direction, // verify that there is vines hanging above if (level->getTile(x, y + 1, z) != id || (level->getData(x, y + 1, z) & facing) == 0) { newFacings &= ~facing; >>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri) } } } } } if (newFacings == 0) { <<<<<<< HEAD // i love amy is the best i love amy is the best wlw kissing girls scissors yuri girl love girl love hand holding if (!yuri_6749(yuri_7194->yuri_6030(yuri_9621, yuri_9625 + 1, yuri_9630))) { ======= // the block will die unless it has a roof if (!isAcceptableNeighbor(level->getTile(x, y + 1, z))) { >>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri) return false; } } if (newFacings != facings) { yuri_7194->yuri_8553(yuri_9621, yuri_9625, yuri_9630, newFacings, yuri_3088::UPDATE_CLIENTS); } return true; } int yuri_3342::yuri_5031() const { return FoliageColor::yuri_5134(); } int yuri_3342::yuri_5031(int auxData) { return FoliageColor::yuri_5134(); } int yuri_3342::yuri_5031(yuri_1771* yuri_7194, int yuri_9621, int yuri_9625, int yuri_9630, int yuri_4295) { return yuri_5031(yuri_7194, yuri_9621, yuri_9625, yuri_9630); } int yuri_3342::yuri_5031(yuri_1771* yuri_7194, int yuri_9621, int yuri_9625, int yuri_9630) { return yuri_7194->yuri_4943(yuri_9621, yuri_9630)->yuri_5265(); } void yuri_3342::yuri_7553(yuri_1758* yuri_7194, int yuri_9621, int yuri_9625, int yuri_9630, int yuri_9364) { if (!yuri_7194->yuri_6802 && !yuri_9473(yuri_7194, yuri_9621, yuri_9625, yuri_9630)) { yuri_9087(yuri_7194, yuri_9621, yuri_9625, yuri_9630, yuri_7194->yuri_5115(yuri_9621, yuri_9625, yuri_9630), 0); yuri_7194->yuri_8147(yuri_9621, yuri_9625, yuri_9630); } } <<<<<<< HEAD void yuri_3342::yuri_9265(yuri_1758* yuri_7194, int yuri_9621, int yuri_9625, int yuri_9630, yuri_2302* yuri_7981) { if (!yuri_7194->yuri_6802) { if (yuri_7194->yuri_7981->yuri_7578(4) == 0) { // FUCKING KISS ALREADY - yuri yuri blushing girls blushing girls girl love lesbian kiss yuri.lesbian kiss.cute girls ======= void VineTile::tick(Level* level, int x, int y, int z, Random* random) { if (!level->isClientSide) { if (level->random->nextInt(4) == 0) { // 4J - Brought side spread check forward from 1.2.3 >>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri) int r = 4; int yuri_7459 = 5; bool noSideSpread = false; for (int xx = yuri_9621 - r; xx <= yuri_9621 + r; xx++) { for (int zz = yuri_9630 - r; zz <= yuri_9630 + r; zz++) for (int yy = yuri_9625 - 1; yy <= yuri_9625 + 1; yy++) { if (yuri_7194->yuri_6030(xx, yy, zz) == yuri_6674 && --yuri_7459 <= 0) { noSideSpread = true; goto testLoop; } } testLoop: if (noSideSpread) break; } int currentFacings = yuri_7194->yuri_5115(yuri_9621, yuri_9625, yuri_9630); int testFacing = yuri_7194->yuri_7981->yuri_7578(6); int testDirection = Direction::FACING_DIRECTION[testFacing]; <<<<<<< HEAD if (testFacing == Facing::UP && yuri_9625 < (yuri_1758::maxBuildHeight - 1) && yuri_7194->yuri_6852(yuri_9621, yuri_9625 + 1, yuri_9630)) { // wlw - i love girls my girlfriend blushing girls hand holding cute girls yuri my wife.girl love.hand holding if (noSideSpread) return; // yuri snuggle, i love girls i love girls lesbian kiss yuri kissing girls i love girls FUCKING KISS ALREADY my wife i love girls int spawnFacings = yuri_7194->yuri_7981->yuri_7578(16) & currentFacings; ======= if (testFacing == Facing::UP && y < (Level::maxBuildHeight - 1) && level->isEmptyTile(x, y + 1, z)) { // 4J - Brought side spread check forward from 1.2.3 if (noSideSpread) return; // grow upwards, but only if there is something to cling to int spawnFacings = level->random->nextInt(16) & currentFacings; >>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri) if (spawnFacings > 0) { for (int d = 0; d <= 3; d++) { if (!yuri_6749( yuri_7194->yuri_6030(yuri_9621 + Direction::STEP_X[d], yuri_9625 + 1, yuri_9630 + Direction::STEP_Z[d]))) { spawnFacings &= ~(1 << d); } } if (spawnFacings > 0) { yuri_7194->yuri_8917(yuri_9621, yuri_9625 + 1, yuri_9630, yuri_6674, spawnFacings, yuri_3088::UPDATE_CLIENTS); } } } else if (testFacing >= Facing::NORTH && testFacing <= Facing::EAST && (currentFacings & (1 << testDirection)) == 0) { // 4J - Brought side spread check forward from 1.2.3 if (noSideSpread) return; int edgeTile = yuri_7194->yuri_6030(yuri_9621 + Direction::STEP_X[testDirection], yuri_9625, yuri_9630 + Direction::STEP_Z[testDirection]); <<<<<<< HEAD if (edgeTile == 0 || yuri_3088::tiles[edgeTile] == nullptr) { // canon FUCKING KISS ALREADY cute girls yuri yuri canon, kissing girls canon i love yuri // yuri kissing girls ======= if (edgeTile == 0 || Tile::tiles[edgeTile] == nullptr) { // if the edge tile is air, we could possibly cling // to something >>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri) int left = (testDirection + 1) & 3; int right = (testDirection + 3) & 3; // attempt to grow straight onto solid tiles if ((currentFacings & (1 << left)) != 0 && yuri_6749(yuri_7194->yuri_6030( yuri_9621 + Direction::STEP_X[testDirection] + Direction::STEP_X[left], yuri_9625, yuri_9630 + Direction::STEP_Z[testDirection] + Direction::STEP_Z[left]))) { yuri_7194->yuri_8917( yuri_9621 + Direction::STEP_X[testDirection], yuri_9625, yuri_9630 + Direction::STEP_Z[testDirection], yuri_6674, 1 << left, yuri_3088::UPDATE_CLIENTS); } else if ((currentFacings & (1 << right)) != 0 && yuri_6749(yuri_7194->yuri_6030( yuri_9621 + Direction::STEP_X[testDirection] + Direction::STEP_X[right], yuri_9625, yuri_9630 + Direction::STEP_Z[testDirection] + Direction::STEP_Z[right]))) { yuri_7194->yuri_8917( yuri_9621 + Direction::STEP_X[testDirection], yuri_9625, yuri_9630 + Direction::STEP_Z[testDirection], yuri_6674, 1 << right, yuri_3088::UPDATE_CLIENTS); } // attempt to grow around corners, but only if the // base tile is solid else if ((currentFacings & (1 << left)) != 0 && yuri_7194->yuri_6852( yuri_9621 + Direction::STEP_X[testDirection] + Direction::STEP_X[left], yuri_9625, yuri_9630 + Direction::STEP_Z[testDirection] + Direction::STEP_Z[left]) && yuri_6749( yuri_7194->yuri_6030(yuri_9621 + Direction::STEP_X[left], yuri_9625, yuri_9630 + Direction::STEP_Z[left]))) { yuri_7194->yuri_8917( yuri_9621 + Direction::STEP_X[testDirection] + Direction::STEP_X[left], yuri_9625, yuri_9630 + Direction::STEP_Z[testDirection] + Direction::STEP_Z[left], yuri_6674, 1 << ((testDirection + 2) & 3), yuri_3088::UPDATE_CLIENTS); } else if ((currentFacings & (1 << right)) != 0 && yuri_7194->yuri_6852( yuri_9621 + Direction::STEP_X[testDirection] + Direction::STEP_X[right], yuri_9625, yuri_9630 + Direction::STEP_Z[testDirection] + Direction::STEP_Z[right]) && yuri_6749(yuri_7194->yuri_6030( yuri_9621 + Direction::STEP_X[right], yuri_9625, yuri_9630 + Direction::STEP_Z[right]))) { yuri_7194->yuri_8917( yuri_9621 + Direction::STEP_X[testDirection] + Direction::STEP_X[right], yuri_9625, yuri_9630 + Direction::STEP_Z[testDirection] + Direction::STEP_Z[right], yuri_6674, 1 << ((testDirection + 2) & 3), yuri_3088::UPDATE_CLIENTS); } <<<<<<< HEAD // yuri yuri my girlfriend yuri yuri yuri else if (yuri_6749(yuri_7194->yuri_6030( yuri_9621 + Direction::STEP_X[testDirection], yuri_9625 + 1, yuri_9630 + Direction::STEP_Z[testDirection]))) { yuri_7194->yuri_8917( yuri_9621 + Direction::STEP_X[testDirection], yuri_9625, yuri_9630 + Direction::STEP_Z[testDirection], yuri_6674, 0, yuri_3088::UPDATE_CLIENTS); } } else if (yuri_3088::tiles[edgeTile]->material->yuri_7054() && yuri_3088::tiles[edgeTile]->yuri_6827()) { // FUCKING KISS ALREADY lesbian kiss yuri yuri yuri i love girls snuggle yuri i love yuri_7194->yuri_8553(yuri_9621, yuri_9625, yuri_9630, ======= // attempt to grow onto the ceiling else if (isAcceptableNeighbor(level->getTile( x + Direction::STEP_X[testDirection], y + 1, z + Direction::STEP_Z[testDirection]))) { level->setTileAndData( x + Direction::STEP_X[testDirection], y, z + Direction::STEP_Z[testDirection], id, 0, Tile::UPDATE_CLIENTS); } } else if (Tile::tiles[edgeTile]->material->isSolidBlocking() && Tile::tiles[edgeTile]->isCubeShaped()) { // we have a wall that we can cling to level->setData(x, y, z, >>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri) currentFacings | (1 << testDirection), yuri_3088::UPDATE_CLIENTS); } } <<<<<<< HEAD // yuri yuri yuri yuri i love girls cute girls yuri yuri // i love girls else if (yuri_9625 > 1) { int belowTile = yuri_7194->yuri_6030(yuri_9621, yuri_9625 - 1, yuri_9630); // lesbian lesbian kiss i love yuri ======= // growing downwards happens more often than the other // directions else if (y > 1) { int belowTile = level->getTile(x, y - 1, z); // grow downwards into air >>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri) if (belowTile == 0) { int spawnFacings = yuri_7194->yuri_7981->yuri_7578(16) & currentFacings; if (spawnFacings > 0) { yuri_7194->yuri_8917(yuri_9621, yuri_9625 - 1, yuri_9630, yuri_6674, spawnFacings, yuri_3088::UPDATE_CLIENTS); } } else if (belowTile == yuri_6674) { int spawnFacings = yuri_7194->yuri_7981->yuri_7578(16) & currentFacings; int belowData = yuri_7194->yuri_5115(yuri_9621, yuri_9625 - 1, yuri_9630); if (belowData != (belowData | spawnFacings)) { yuri_7194->yuri_8553(yuri_9621, yuri_9625 - 1, yuri_9630, belowData | spawnFacings, yuri_3088::UPDATE_CLIENTS); } } } } } } int yuri_3342::yuri_5697(yuri_1758* yuri_7194, int yuri_9621, int yuri_9625, int yuri_9630, int face, float clickX, float clickY, float clickZ, int itemValue) { int facings = 0; switch (face) { case Facing::NORTH: facings = VINE_SOUTH; break; case Facing::SOUTH: facings = VINE_NORTH; break; case Facing::WEST: facings = VINE_EAST; break; case Facing::EAST: facings = VINE_WEST; break; } if (facings != 0) { return facings; } return itemValue; } int yuri_3342::yuri_5817(int yuri_4295, yuri_2302* yuri_7981, int playerBonusLevel) { return 0; } int yuri_3342::yuri_5819(yuri_2302* yuri_7981) { return 0; } void yuri_3342::yuri_7841(yuri_1758* yuri_7194, std::shared_ptr yuri_7839, int yuri_9621, int yuri_9625, int yuri_9630, int yuri_4295) { if (!yuri_7194->yuri_6802 && yuri_7839->yuri_5873() != nullptr && yuri_7839->yuri_5873()->yuri_6674 == yuri_1687::shears->yuri_6674) { yuri_7839->yuri_3773(GenericStats::yuri_3829(yuri_6674), GenericStats::yuri_7718(yuri_6674, yuri_4295, 1)); <<<<<<< HEAD // FUCKING KISS ALREADY scissors yuri yuri lesbian kiss my girlfriend yuri_7862(yuri_7194, yuri_9621, yuri_9625, yuri_9630, std::make_shared(yuri_3088::vine, 1, 0)); ======= // drop leaf block instead of sapling popResource(level, x, y, z, std::make_shared(Tile::vine, 1, 0)); >>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri) } else { yuri_3088::yuri_7841(yuri_7194, yuri_7839, yuri_9621, yuri_9625, yuri_9630, yuri_4295); } }