diff options
author | KingCol13 <48412633+KingCol13@users.noreply.github.com> | 2021-07-10 22:05:00 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-10 22:05:00 +0200 |
commit | 1d1fa914012125126d1a3656edc428859696f54f (patch) | |
tree | d0190a09b6f519ce528e6d8e25d99141a3faa29f /src/Items/ItemChorusFruit.h | |
parent | Symmetry in MultiVersionProtocol to fix a crash (#5261) (diff) | |
download | cuberite-1d1fa914012125126d1a3656edc428859696f54f.tar cuberite-1d1fa914012125126d1a3656edc428859696f54f.tar.gz cuberite-1d1fa914012125126d1a3656edc428859696f54f.tar.bz2 cuberite-1d1fa914012125126d1a3656edc428859696f54f.tar.lz cuberite-1d1fa914012125126d1a3656edc428859696f54f.tar.xz cuberite-1d1fa914012125126d1a3656edc428859696f54f.tar.zst cuberite-1d1fa914012125126d1a3656edc428859696f54f.zip |
Diffstat (limited to 'src/Items/ItemChorusFruit.h')
-rw-r--r-- | src/Items/ItemChorusFruit.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/Items/ItemChorusFruit.h b/src/Items/ItemChorusFruit.h new file mode 100644 index 000000000..261088411 --- /dev/null +++ b/src/Items/ItemChorusFruit.h @@ -0,0 +1,44 @@ + +#pragma once + +#include "ItemFood.h" +#include "../Entities/Pawn.h" + + + + + +class cItemChorusFruitHandler: + public cItemFoodHandler +{ + using Super = cItemFoodHandler; + +public: + + cItemChorusFruitHandler(): + Super(E_ITEM_CHORUS_FRUIT, FoodInfo(4, 2.4)) + { + } + + virtual bool EatItem(cPlayer * a_Player, cItem * a_Item) override + { + cItemHandler::EatItem(a_Player, a_Item); + + if (!a_Player->IsGameModeCreative()) + { + a_Player->GetInventory().RemoveOneEquippedItem(); + } + + // Attempt to find a teleport destination + Vector3d Destination; + cWorld * World = a_Player->GetWorld(); + if (cPawn::FindTeleportDestination(*World, 2, 16, Destination, a_Player->GetPosition(), 8)) + { + // Broadcast sound effect to _pre-teleport_ location, then teleport player. + World->BroadcastSoundEffect("item.chorus_fruit.teleport", a_Player->GetPosition(), 1, 1); + a_Player->TeleportToCoords(Destination.x, Destination.y, Destination.z); + } + return true; + } + +}; |