From 39aeab2f9991995130f03fc8b624ae1c0adeabd4 Mon Sep 17 00:00:00 2001 From: ethxn <163630159+ethxnblxd@users.noreply.github.com> Date: Mon, 16 Mar 2026 20:02:23 +0800 Subject: [PATCH] Add files via upload --- Minecraft.World/Player.cpp | 50 ++++++++++++++++++++++++++++++++++++++ Minecraft.World/Player.h | 4 +++ 2 files changed, 54 insertions(+) diff --git a/Minecraft.World/Player.cpp b/Minecraft.World/Player.cpp index 00c7148e4..94308ed80 100644 --- a/Minecraft.World/Player.cpp +++ b/Minecraft.World/Player.cpp @@ -1205,6 +1205,56 @@ shared_ptr Player::drop(shared_ptr item, bool randomly return thrownItem; } +shared_ptr Player::dropall(bool all) +{ + return dropall(inventory->removeItem(inventory->selected, all && inventory->getSelected() != nullptr ? inventory->getSelected()->count : inventory->getSelected()->count), false); +} + +shared_ptr Player::dropall(shared_ptr item) +{ + return dropall(item, false); +} + +shared_ptr Player::dropall(shared_ptr item, bool randomly) +{ + if (item == nullptr) return nullptr; + if (item->count == 0) return nullptr; + + shared_ptr thrownItem = std::make_shared(level, x, y - 0.3f + getHeadHeight(), z, item); + thrownItem->throwTime = 20 * 2; + + thrownItem->setThrower(getName()); + + float pow = 0.1f; + if (randomly) + { + float _pow = random->nextFloat() * 0.5f; + float dir = random->nextFloat() * PI * 2; + thrownItem->xd = -sin(dir) * _pow; + thrownItem->zd = cos(dir) * _pow; + thrownItem->yd = 0.2f; + + } + else + { + pow = 0.3f; + thrownItem->xd = -sin(yRot / 180 * PI) * cos(xRot / 180 * PI) * pow; + thrownItem->zd = cos(yRot / 180 * PI) * cos(xRot / 180 * PI) * pow; + thrownItem->yd = -sin(xRot / 180 * PI) * pow + 0.1f; + pow = 0.02f; + + float dir = random->nextFloat() * PI * 2; + pow *= random->nextFloat(); + thrownItem->xd += cos(dir) * pow; + thrownItem->yd += (random->nextFloat() - random->nextFloat()) * 0.1f; + thrownItem->zd += sin(dir) * pow; + } + + reallyDrop(thrownItem); + + return thrownItem; +} + void Player::reallyDrop(shared_ptr thrownItem) { diff --git a/Minecraft.World/Player.h b/Minecraft.World/Player.h index 2e223a1e5..24351404d 100644 --- a/Minecraft.World/Player.h +++ b/Minecraft.World/Player.h @@ -201,6 +201,10 @@ public: shared_ptr drop(shared_ptr item); shared_ptr drop(shared_ptr item, bool randomly); + virtual shared_ptr dropall(bool all); + shared_ptr dropall(shared_ptr item); + shared_ptr dropall(shared_ptr item, bool randomly); + protected: virtual void reallyDrop(shared_ptr thrownItem);