2026-03-01 12:16:08 +08:00
# 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 )
{
2026-03-02 17:37:16 +07:00
shared_ptr < ItemInstance > item = inventory - > items [ inventory - > selected ] ;
2026-03-01 12:16:08 +08:00
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
2026-03-02 17:37:16 +07:00
void RemotePlayer : : setEquippedSlot ( int slot , shared_ptr < ItemInstance > item )
2026-03-01 12:16:08 +08:00
{
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 ;
}