aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/RemotePlayer.cpp
diff options
context:
space:
mode:
authordaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
committerdaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
commitb691c43c44ff180d10e7d4a9afc83b98551ff586 (patch)
tree3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.Client/RemotePlayer.cpp
parentdef8cb415354ac390b7e89052a50605285f1aca9 (diff)
Initial commit
Diffstat (limited to 'Minecraft.Client/RemotePlayer.cpp')
-rw-r--r--Minecraft.Client/RemotePlayer.cpp152
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