diff options
Diffstat (limited to 'Minecraft.World/FishingRodItem.cpp')
| -rw-r--r-- | Minecraft.World/FishingRodItem.cpp | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/Minecraft.World/FishingRodItem.cpp b/Minecraft.World/FishingRodItem.cpp new file mode 100644 index 00000000..858005e0 --- /dev/null +++ b/Minecraft.World/FishingRodItem.cpp @@ -0,0 +1,67 @@ +#include "stdafx.h" +#include "net.minecraft.network.packet.h" +#include "net.minecraft.world.entity.h" +#include "net.minecraft.world.entity.player.h" +#include "net.minecraft.world.level.h" +#include "net.minecraft.world.level.chunk.h" +#include "net.minecraft.world.level.material.h" +#include "net.minecraft.world.level.saveddata.h" +#include "net.minecraft.world.level.tile.h" +#include "net.minecraft.world.entity.projectile.h" +#include "net.minecraft.world.h" +#include "ItemInstance.h" +#include "FishingRodItem.h" +#include "SoundTypes.h" + +const wstring FishingRodItem::TEXTURE_EMPTY = L"fishingRod_empty"; + +FishingRodItem::FishingRodItem(int id) : Item(id) +{ + setMaxDamage(64); + setMaxStackSize(1); + emptyIcon = NULL; +} + +bool FishingRodItem::isHandEquipped() +{ + return true; +} + +bool FishingRodItem::isMirroredArt() +{ + return true; +} + +shared_ptr<ItemInstance> FishingRodItem::use(shared_ptr<ItemInstance> instance, Level *level, shared_ptr<Player> player) +{ + if (player->fishing != NULL) + { + int dmg = player->fishing->retrieve(); + instance->hurt(dmg, player); + player->swing(); + } + else + { + level->playSound(player, eSoundType_RANDOM_BOW, 0.5f, 0.4f / (random->nextFloat() * 0.4f + 0.8f)); + if (!level->isClientSide) + { + // 4J Stu - Move the player->fishing out of the ctor as we cannot reference 'this' + shared_ptr<FishingHook> hook = shared_ptr<FishingHook>( new FishingHook(level, player) ); + player->fishing = hook; + level->addEntity( shared_ptr<FishingHook>( hook ) ); + } + player->swing(); + } + return instance; +} + +void FishingRodItem::registerIcons(IconRegister *iconRegister) +{ + Item::registerIcons(iconRegister); + emptyIcon = iconRegister->registerIcon(TEXTURE_EMPTY); +} + +Icon *FishingRodItem::getEmptyIcon() +{ + return emptyIcon; +} |
