Files
MinecraftConsoles/Minecraft.Client/RemotePlayer.cpp
void_17 7074f35e4b shared_ptr -> std::shared_ptr
This is one of the first commits in a plan to remove all `using namespace std;` lines in the entire codebase as it is considered anti-pattern today.
2026-03-02 15:58:20 +07:00

152 lines
3.6 KiB
C++

#include "stdafx.h"
#include "RemotePlayer.h"
#include "..\Minecraft.World\net.minecraft.world.item.h"
#include "..\Minecraft.World\Mth.h"
RemotePlayer::RemotePlayer(Level *level, const wstring& name) : Player(level)
{
// 4J - added initialisers
hasStartedUsingItem = false;
lSteps = 0;
lx = ly = lz = lyr = lxr = 0.0;
fallTime = 0.0f;
this->name = name;
m_UUID = name;
app.DebugPrintf("Created RemotePlayer with name %ls\n", name.c_str() );
heightOffset = 0;
this->footSize = 0;
if (name.length() > 0)
{
customTextureUrl = L"";//L"http://s3.amazonaws.com/MinecraftSkins/" + name + L".png";
}
this->noPhysics = true;
bedOffsetY = 4 / 16.0f;
this->viewScale = 10;
}
void RemotePlayer::setDefaultHeadHeight()
{
heightOffset = 0;
}
bool RemotePlayer::hurt(DamageSource *source, int dmg)
{
return true;
}
void RemotePlayer::lerpTo(double x, double y, double z, float yRot, float xRot, int steps)
{
// heightOffset = 0;
lx = x;
ly = y;
lz = z;
lyr = yRot;
lxr = xRot;
lSteps = steps;
}
void RemotePlayer::tick()
{
bedOffsetY = 0 / 16.0f;
Player::tick();
walkAnimSpeedO = walkAnimSpeed;
double xxd = x - xo;
double zzd = z - zo;
float wst = Mth::sqrt(xxd * xxd + zzd * zzd) * 4;
if (wst > 1) wst = 1;
walkAnimSpeed += (wst - walkAnimSpeed) * 0.4f;
walkAnimPos += walkAnimSpeed;
if (!hasStartedUsingItem && isUsingItemFlag() && inventory->items[inventory->selected] != NULL)
{
std::shared_ptr<ItemInstance> item = inventory->items[inventory->selected];
startUsingItem(inventory->items[inventory->selected], Item::items[item->id]->getUseDuration(item));
hasStartedUsingItem = true;
}
else if (hasStartedUsingItem && !isUsingItemFlag())
{
stopUsingItem();
hasStartedUsingItem = false;
}
// if (eatItem != null) {
// if (eatItemTickCount <= 25 && eatItemTickCount % 4 == 0) {
// spawnEatParticles(eatItem, 5);
// }
// eatItemTickCount--;
// if (eatItemTickCount <= 0) {
// spawnEatParticles(eatItem, 16);
// swing();
// eatItem = null;
// }
// }
}
float RemotePlayer::getShadowHeightOffs()
{
return 0;
}
void RemotePlayer::aiStep()
{
Player::serverAiStep();
if (lSteps > 0)
{
double xt = x + (lx - x) / lSteps;
double yt = y + (ly - y) / lSteps;
double zt = z + (lz - z) / lSteps;
double yrd = lyr - yRot;
while (yrd < -180)
yrd += 360;
while (yrd >= 180)
yrd -= 360;
yRot += (float)((yrd) / lSteps);
xRot += (float)((lxr - xRot) / lSteps);
lSteps--;
this->setPos(xt, yt, zt);
this->setRot(yRot, xRot);
}
oBob = bob;
float tBob = (float) Mth::sqrt(xd * xd + zd * zd);
float tTilt = (float) atan(-yd * 0.2f) * 15.0f;
if (tBob > 0.1f) tBob = 0.1f;
if (!onGround || getHealth() <= 0) tBob = 0;
if (onGround || getHealth() <= 0) tTilt = 0;
bob += (tBob - bob) * 0.4f;
tilt += (tTilt - tilt) * 0.8f;
}
// 4J Stu - Brought forward change from 1.3 to fix #64688 - Customer Encountered: TU7: Content: Art: Aura of enchanted item is not displayed for other players in online game
void RemotePlayer::setEquippedSlot(int slot, std::shared_ptr<ItemInstance> item)
{
if (slot == 0)
{
inventory->items[inventory->selected] = item;
}
else
{
inventory->armor[slot - 1] = item;
}
}
void RemotePlayer::animateRespawn()
{
// Player.animateRespawn(this, level);
}
float RemotePlayer::getHeadHeight()
{
return 1.82f;
}