first commit
This commit is contained in:
116
Minecraft.World/PrimedTnt.cpp
Normal file
116
Minecraft.World/PrimedTnt.cpp
Normal file
@@ -0,0 +1,116 @@
|
||||
#include "stdafx.h"
|
||||
#include "JavaMath.h"
|
||||
#include "com.mojang.nbt.h"
|
||||
#include "net.minecraft.world.level.h"
|
||||
#include "PrimedTnt.h"
|
||||
|
||||
|
||||
|
||||
void PrimedTnt::_init()
|
||||
{
|
||||
life = 0;
|
||||
|
||||
// Original Java Ctor
|
||||
blocksBuilding = true;
|
||||
setSize(0.98f, 0.98f);
|
||||
heightOffset = bbHeight / 2.0f;
|
||||
}
|
||||
|
||||
PrimedTnt::PrimedTnt(Level *level) : Entity( level )
|
||||
{
|
||||
// 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();
|
||||
|
||||
_init();
|
||||
}
|
||||
|
||||
PrimedTnt::PrimedTnt(Level *level, double x, double y, double z) : Entity( level )
|
||||
{
|
||||
_init();
|
||||
|
||||
setPos(x, y, z);
|
||||
|
||||
float rot = (float) (Math::random() * PI * 2);
|
||||
xd = -sin(rot) * 0.02f;
|
||||
yd = +0.2f;
|
||||
zd = -cos(rot) * 0.02f;
|
||||
|
||||
life = 80;
|
||||
|
||||
xo = x;
|
||||
yo = y;
|
||||
zo = z;
|
||||
}
|
||||
|
||||
void PrimedTnt::defineSynchedData()
|
||||
{
|
||||
}
|
||||
|
||||
bool PrimedTnt::makeStepSound()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool PrimedTnt::isPickable()
|
||||
{
|
||||
return !removed;
|
||||
}
|
||||
|
||||
void PrimedTnt::tick()
|
||||
{
|
||||
xo = x;
|
||||
yo = y;
|
||||
zo = z;
|
||||
|
||||
yd -= 0.04f;
|
||||
move(xd, yd, zd);
|
||||
xd *= 0.98f;
|
||||
yd *= 0.98f;
|
||||
zd *= 0.98f;
|
||||
|
||||
if (onGround)
|
||||
{
|
||||
xd *= 0.7f;
|
||||
zd *= 0.7f;
|
||||
yd *= -0.5f;
|
||||
}
|
||||
|
||||
if (life-- <= 0)
|
||||
{
|
||||
remove();
|
||||
if (!level->isClientSide)
|
||||
{
|
||||
explode();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
level->addParticle(eParticleType_smoke, x, y + 0.5f, z, 0, 0, 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
void PrimedTnt::explode()
|
||||
{
|
||||
float r = 4.0f;
|
||||
level->explode(nullptr, x, y, z, r, true);
|
||||
}
|
||||
|
||||
|
||||
void PrimedTnt::addAdditonalSaveData(CompoundTag *entityTag)
|
||||
{
|
||||
entityTag->putByte(L"Fuse", (byte) life);
|
||||
}
|
||||
|
||||
void PrimedTnt::readAdditionalSaveData(CompoundTag *tag)
|
||||
{
|
||||
life = tag->getByte(L"Fuse");
|
||||
}
|
||||
|
||||
|
||||
float PrimedTnt::getShadowHeightOffs()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user