diff options
| author | daoge_cmd <3523206925@qq.com> | 2026-03-01 12:16:08 +0800 |
|---|---|---|
| committer | daoge_cmd <3523206925@qq.com> | 2026-03-01 12:16:08 +0800 |
| commit | b691c43c44ff180d10e7d4a9afc83b98551ff586 (patch) | |
| tree | 3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.Client/RemotePlayer.cpp | |
| parent | def8cb415354ac390b7e89052a50605285f1aca9 (diff) | |
Initial commit
Diffstat (limited to 'Minecraft.Client/RemotePlayer.cpp')
| -rw-r--r-- | Minecraft.Client/RemotePlayer.cpp | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/Minecraft.Client/RemotePlayer.cpp b/Minecraft.Client/RemotePlayer.cpp new file mode 100644 index 00000000..c1b72864 --- /dev/null +++ b/Minecraft.Client/RemotePlayer.cpp @@ -0,0 +1,152 @@ +#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<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, 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; +}
\ No newline at end of file |
