4jcraft/Minecraft.World/Entities/Mobs/FishingHook.h
2026-03-13 17:06:56 -05:00

64 lines
1.4 KiB
C++

#pragma once
#include "../Entity.h"
class Player;
class FishingHook : public Entity {
public:
eINSTANCEOF GetType() { return eTYPE_FISHINGHOOK; }
private:
int xTile;
int yTile;
int zTile;
int lastTile;
bool inGround;
public:
int shakeTime;
std::shared_ptr<Player> owner;
private:
int life;
int flightTime;
int nibble;
public:
std::shared_ptr<Entity> hookedIn;
private:
void _init();
public:
FishingHook(Level* level);
FishingHook(Level* level, double x, double y, double z,
std::shared_ptr<Player> owner);
FishingHook(Level* level, std::shared_ptr<Player> mob);
protected:
virtual void defineSynchedData();
public:
bool shouldRenderAtSqrDistance(double distance);
void shoot(double xd, double yd, double zd, float pow, float uncertainty);
private:
int lSteps;
double lx, ly, lz, lyr, lxr;
double lxd, lyd, lzd;
public:
virtual void lerpTo(double x, double y, double z, float yRot, float xRot,
int steps);
virtual void lerpMotion(double xd, double yd, double zd);
virtual void tick();
virtual void addAdditonalSaveData(CompoundTag* tag);
virtual void readAdditionalSaveData(CompoundTag* tag);
virtual float getShadowHeightOffs();
int retrieve();
// 4J Stu - Brought forward from 1.4
virtual void remove();
};