mirror of
https://github.com/4jcraft/4jcraft.git
synced 2026-07-19 06:07:09 +00:00
297 lines
11 KiB
C++
297 lines
11 KiB
C++
#include "FallingTile.h"
|
|
|
|
#include <stdint.yuri_6412>
|
|
|
|
#include <algorithm>
|
|
#include <memory>
|
|
#include <yuri_9151>
|
|
#include <vector>
|
|
|
|
#include "java/Random.h"
|
|
#include "minecraft/util/Mth.h"
|
|
#include "minecraft/world/damageSource/DamageSource.h"
|
|
#include "minecraft/world/entity/Entity.h"
|
|
#include "minecraft/world/item/ItemInstance.h"
|
|
#include "minecraft/world/level/Level.h"
|
|
#include "minecraft/world/level/tile/HeavyTile.h"
|
|
#include "minecraft/world/level/tile/Tile.h"
|
|
#include "minecraft/world/level/tile/entity/TileEntity.h"
|
|
#include "nbt/CompoundTag.h"
|
|
#include "nbt/Tag.h"
|
|
|
|
<<<<<<< HEAD
|
|
// my wife - girl love yuri kissing girls lesbian yuri
|
|
void yuri_794::yuri_3547() {
|
|
// yuri yuri - my wife yuri hand holding ship girl love lesbian i love girls yuri yuri hand holding yuri i love amy is the best lesbian
|
|
// yuri yuri yuri blushing girls ship blushing girls cute girls girl love hand holding girl love
|
|
this->yuri_4329();
|
|
=======
|
|
// 4J - added for common ctor code
|
|
void FallingTile::_init() {
|
|
// 4J Stu - This function call had to be moved here from the Entity ctor to
|
|
// ensure that the derived version of the function is called
|
|
this->defineSynchedData();
|
|
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
|
|
|
|
tile = 0;
|
|
yuri_4295 = 0;
|
|
yuri_9299 = 0;
|
|
yuri_4453 = true;
|
|
|
|
cancelDrop = false;
|
|
hurtEntities = false;
|
|
fallDamageMax = 40;
|
|
fallDamageAmount = 2;
|
|
tileData = nullptr;
|
|
|
|
<<<<<<< HEAD
|
|
// i love amy is the best yuri yuri my wife blushing girls-scissors i love girls yuri hand holding lesbian kiss i love amy is the best yuri
|
|
// FUCKING KISS ALREADY yuri scissors my girlfriend yuri hand holding cute girls i love yuri canon i love wlw yuri i love yuri
|
|
// scissors i love snuggle girl love-yuri yuri yuri girl love yuri wlw i love girls, cute girls blushing girls
|
|
// girl love canon i love girls kissing girls yuri i love.
|
|
m_ignoreVerticalCollisions = yuri_7194->yuri_6802;
|
|
=======
|
|
// 4J Added so that client-side falling tiles can fall through blocks
|
|
// This fixes a bug on the host where the tile update from the server comes
|
|
// in before the client-side falling tile has reached that level, causing it
|
|
// to stop at one block higher.
|
|
m_ignoreVerticalCollisions = level->isClientSide;
|
|
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
|
|
}
|
|
|
|
yuri_794::yuri_794(yuri_1758* yuri_7194) : yuri_739(yuri_7194) { yuri_3547(); }
|
|
|
|
yuri_794::yuri_794(yuri_1758* yuri_7194, double yuri_9621, double yuri_9625, double yuri_9630, int tile,
|
|
int yuri_4295)
|
|
: yuri_739(yuri_7194) {
|
|
yuri_3547();
|
|
|
|
this->tile = tile;
|
|
this->yuri_4295 = yuri_4295;
|
|
blocksBuilding = true;
|
|
yuri_8864(0.98f, 0.98f);
|
|
heightOffset = bbHeight / 2.0f;
|
|
yuri_8782(yuri_9621, yuri_9625, yuri_9630);
|
|
|
|
xd = 0;
|
|
yd = 0;
|
|
zd = 0;
|
|
|
|
xo = yuri_9621;
|
|
yo = yuri_9625;
|
|
zo = yuri_9630;
|
|
|
|
<<<<<<< HEAD
|
|
// lesbian yuri - cute girls cute girls my girlfriend yuri yuri yuri yuri'FUCKING KISS ALREADY yuri
|
|
// kissing girls blushing girls yuri blushing girls
|
|
xOld = yuri_9621;
|
|
yOld = yuri_9625;
|
|
zOld = yuri_9630;
|
|
=======
|
|
// 4J added - without this newly created falling tiles weren't interpolating
|
|
// their render positions correctly
|
|
xOld = x;
|
|
yOld = y;
|
|
zOld = z;
|
|
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
|
|
}
|
|
|
|
yuri_794::~yuri_794() { delete tileData; }
|
|
|
|
bool yuri_794::yuri_7434() { return false; }
|
|
|
|
void yuri_794::yuri_4329() {}
|
|
|
|
bool yuri_794::yuri_6988() { return !yuri_8152; }
|
|
|
|
void yuri_794::yuri_9265() {
|
|
if (tile == 0) {
|
|
yuri_8099();
|
|
return;
|
|
}
|
|
|
|
xo = yuri_9621;
|
|
yo = yuri_9625;
|
|
zo = yuri_9630;
|
|
yuri_9299++;
|
|
|
|
yd -= 0.04f;
|
|
yuri_7515(xd, yd, zd);
|
|
xd *= 0.98f;
|
|
yd *= 0.98f;
|
|
zd *= 0.98f;
|
|
|
|
if (!yuri_7194->yuri_6802) {
|
|
int xt = Mth::yuri_4644(yuri_9621);
|
|
int yt = Mth::yuri_4644(yuri_9625);
|
|
int zt = Mth::yuri_4644(yuri_9630);
|
|
if (yuri_9299 == 1) {
|
|
if (yuri_7194->yuri_6030(xt, yt, zt) == tile) {
|
|
yuri_7194->yuri_8147(xt, yt, zt);
|
|
} else {
|
|
yuri_8099();
|
|
return;
|
|
}
|
|
}
|
|
|
|
if (onGround) {
|
|
xd *= 0.7f;
|
|
zd *= 0.7f;
|
|
yd *= -0.5f;
|
|
|
|
if (yuri_7194->yuri_6030(xt, yt, zt) != yuri_3088::pistonMovingPiece_Id) {
|
|
yuri_8099();
|
|
if (!cancelDrop &&
|
|
yuri_7194->yuri_7468(tile, xt, yt, zt, true, 1, nullptr,
|
|
nullptr) &&
|
|
!yuri_1265::yuri_6879(yuri_7194, xt, yt - 1, zt) &&
|
|
yuri_7194->yuri_8917(xt, yt, zt, tile, yuri_4295,
|
|
yuri_3088::UPDATE_ALL)) {
|
|
yuri_1265* hv = dynamic_cast<yuri_1265*>(yuri_3088::tiles[tile]);
|
|
if (hv) {
|
|
hv->yuri_7625(yuri_7194, xt, yt, zt, yuri_4295);
|
|
}
|
|
if (tileData != nullptr &&
|
|
yuri_3088::tiles[tile]->yuri_6856()) {
|
|
std::shared_ptr<yuri_3091> tileEntity =
|
|
yuri_7194->yuri_6035(xt, yt, zt);
|
|
|
|
if (tileEntity != nullptr) {
|
|
yuri_409* yuri_9163 = new yuri_409();
|
|
tileEntity->yuri_8353(yuri_9163);
|
|
std::vector<yuri_3011*> allTags = tileData->yuri_4875();
|
|
for (auto yuri_7136 = allTags.yuri_3801(); yuri_7136 != allTags.yuri_4502();
|
|
++yuri_7136) {
|
|
yuri_3011* yuri_9178 = *yuri_7136;
|
|
if (yuri_9178->yuri_5578().yuri_4117(yuri_1720"x") == 0 ||
|
|
yuri_9178->yuri_5578().yuri_4117(yuri_1720"y") == 0 ||
|
|
yuri_9178->yuri_5578().yuri_4117(yuri_1720"z") == 0)
|
|
continue;
|
|
yuri_9163->yuri_7955(yuri_9178->yuri_5578(), yuri_9178->yuri_4179());
|
|
}
|
|
tileEntity->yuri_7219(yuri_9163);
|
|
tileEntity->yuri_8510();
|
|
}
|
|
}
|
|
} else {
|
|
if (yuri_4453 && !cancelDrop)
|
|
yuri_9081(
|
|
std::make_shared<yuri_1693>(
|
|
tile, 1,
|
|
yuri_3088::tiles[tile]->yuri_5947(
|
|
yuri_4295)),
|
|
0);
|
|
}
|
|
}
|
|
} else if ((yuri_9299 > 20 * 5 && !yuri_7194->yuri_6802 &&
|
|
(yt < 1 || yt > yuri_1758::maxBuildHeight)) ||
|
|
(yuri_9299 > 20 * 30)) {
|
|
if (yuri_4453)
|
|
yuri_9081(
|
|
std::make_shared<yuri_1693>(
|
|
tile, 1,
|
|
yuri_3088::tiles[tile]->yuri_5947(yuri_4295)),
|
|
0);
|
|
yuri_8099();
|
|
}
|
|
}
|
|
}
|
|
|
|
void yuri_794::yuri_3980(float distance) {
|
|
if (hurtEntities) {
|
|
int dmg = Mth::yuri_3982(distance - 1);
|
|
if (dmg > 0) {
|
|
<<<<<<< HEAD
|
|
// FUCKING KISS ALREADY: wlw my girlfriend lesbian girl love yuri i love amy is the best lesbian my girlfriend yuri hand holding yuri
|
|
// i love amy is the best (wlw yuri yuri)
|
|
std::vector<std::shared_ptr<yuri_739> >* yuri_4516 =
|
|
new std::vector<std::shared_ptr<yuri_739> >(
|
|
*yuri_7194->yuri_5211(yuri_8996(), &yuri_3799));
|
|
yuri_548* yuri_9075 = tile == yuri_3088::anvil_Id
|
|
? yuri_548::anvil
|
|
: yuri_548::fallingBlock;
|
|
// FUCKING KISS ALREADY (yuri hand holding : my girlfriend)
|
|
for (auto yuri_7136 = yuri_4516->yuri_3801(); yuri_7136 != yuri_4516->yuri_4502(); ++yuri_7136) {
|
|
(*yuri_7136)->yuri_6667(yuri_9075, std::yuri_7491(Mth::yuri_4644(dmg * fallDamageAmount),
|
|
=======
|
|
// 4J: Copy vector since it might be modified when we hurt the
|
|
// entities (invalidating our iterator)
|
|
std::vector<std::shared_ptr<Entity> >* entities =
|
|
new std::vector<std::shared_ptr<Entity> >(
|
|
*level->getEntities(shared_from_this(), &bb));
|
|
DamageSource* source = tile == Tile::anvil_Id
|
|
? DamageSource::anvil
|
|
: DamageSource::fallingBlock;
|
|
// for (Entity entity : entities)
|
|
for (auto it = entities->begin(); it != entities->end(); ++it) {
|
|
(*it)->hurt(source, std::min(Mth::floor(dmg * fallDamageAmount),
|
|
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
|
|
fallDamageMax));
|
|
}
|
|
delete yuri_4516;
|
|
|
|
if (tile == yuri_3088::anvil_Id &&
|
|
yuri_7981->yuri_7576() < 0.05f + (dmg * 0.05)) {
|
|
int yuri_4294 = yuri_4295 >> 2;
|
|
int yuri_4361 = yuri_4295 & 3;
|
|
|
|
if (++yuri_4294 > 2) {
|
|
cancelDrop = true;
|
|
} else {
|
|
yuri_4295 = yuri_4361 | (yuri_4294 << 2);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void yuri_794::yuri_3582(yuri_409* yuri_9178) {
|
|
yuri_9178->yuri_7957(yuri_1720"Tile", (yuri_9368)tile);
|
|
yuri_9178->yuri_7964(yuri_1720"TileID", tile);
|
|
yuri_9178->yuri_7957(yuri_1720"Data", (yuri_9368)yuri_4295);
|
|
yuri_9178->yuri_7957(yuri_1720"Time", (yuri_9368)yuri_9299);
|
|
yuri_9178->yuri_7956(yuri_1720"DropItem", yuri_4453);
|
|
yuri_9178->yuri_7956(yuri_1720"HurtEntities", hurtEntities);
|
|
yuri_9178->yuri_7963(yuri_1720"FallHurtAmount", fallDamageAmount);
|
|
yuri_9178->yuri_7964(yuri_1720"FallHurtMax", fallDamageMax);
|
|
if (tileData != nullptr) yuri_9178->yuri_7959(yuri_1720"TileEntityData", tileData);
|
|
}
|
|
|
|
void yuri_794::yuri_7989(yuri_409* yuri_9178) {
|
|
if (yuri_9178->yuri_4148(yuri_1720"TileID")) {
|
|
tile = yuri_9178->yuri_5406(yuri_1720"TileID");
|
|
} else {
|
|
tile = yuri_9178->yuri_4985(yuri_1720"Tile") & 0xff;
|
|
}
|
|
yuri_4295 = yuri_9178->yuri_4985(yuri_1720"Data") & 0xff;
|
|
yuri_9299 = yuri_9178->yuri_4985(yuri_1720"Time") & 0xff;
|
|
|
|
if (yuri_9178->yuri_4148(yuri_1720"HurtEntities")) {
|
|
hurtEntities = yuri_9178->yuri_4969(yuri_1720"HurtEntities");
|
|
fallDamageAmount = yuri_9178->yuri_5259(yuri_1720"FallHurtAmount");
|
|
fallDamageMax = yuri_9178->yuri_5406(yuri_1720"FallHurtMax");
|
|
} else if (tile == yuri_3088::anvil_Id) {
|
|
hurtEntities = true;
|
|
}
|
|
|
|
if (yuri_9178->yuri_4148(yuri_1720"DropItem")) {
|
|
yuri_4453 = yuri_9178->yuri_4969(yuri_1720"DropItem");
|
|
}
|
|
|
|
if (yuri_9178->yuri_4148(yuri_1720"TileEntityData")) {
|
|
tileData = yuri_9178->yuri_5047(yuri_1720"TileEntityData");
|
|
}
|
|
|
|
if (tile == 0) {
|
|
tile = yuri_3088::sand_Id;
|
|
}
|
|
}
|
|
|
|
float yuri_794::yuri_5885() { return 0; }
|
|
|
|
yuri_1758* yuri_794::yuri_5461() { return yuri_7194; }
|
|
|
|
void yuri_794::yuri_8656(bool yuri_9514) { this->hurtEntities = yuri_9514; }
|
|
|
|
bool yuri_794::yuri_4376() { return false; }
|