#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) { shared_ptr 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, shared_ptr 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; }