Skip to content

Instantly share code, notes, and snippets.

@byteandahalf
Last active June 22, 2016 14:46
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save byteandahalf/d1749611db34ac720386 to your computer and use it in GitHub Desktop.
Save byteandahalf/d1749611db34ac720386 to your computer and use it in GitHub Desktop.
Entity header for MCPE 0.14.3
#pragma once
#include <string>
#include <memory>
#include <vector>
#include "../phys/Vec3.h"
class BlockSource;
class Level;
class Material;
class Player;
class EntityPos;
class BlockPos;
class MaterialType;
struct Vec2;
class CompoundTag;
class EntityLink;
class EntityDamageSource;
class EntityEvent;
class ItemInstance;
class DimensionId;
class ChangeDimensionPacket;
class ArmorSlot;
struct AABB;
class Entity
{
public:
/* constructors */
Entity(BlockSource&);
Entity(Level&);
/* fields */
void* idk; // 4
Vec3 pos; // 8
Vec3 oldPos; // 20
Vec3 chunkPos; // 32
Vec3 velocity; // 44
float yaw; // 56
float pitch; // 60
float _oldYaw; // 64
float _oldPitch; // 68
char filler[48]; // 72
Level& level; // 120
char filler2[68]; // 124
float heightOffset; // 192
char filler3[68]; // 196
std::vector<Entity*> _riders; // 264
Entity& immediateRider; // 276
Entity& riding; // 280
char filler4[80]; // 284
BlockSource& region; // 364
/* vtable */
virtual ~Entity();
virtual void _postInit();
virtual void reset();
virtual int getOwnerEntityType();
virtual void remove();
virtual void setPos(const Vec3&);
virtual Vec3& getPos() const;
virtual Vec3& getPosOld() const;
virtual Vec3& getPosExtrapolated(float) const;
virtual Vec3& getVelocity() const;
virtual void move(const Vec3&);
virtual void checkBlockCollisions(const AABB&);
virtual void checkBlockCollisions();
virtual void moveRelative(float, float, float);
virtual void lerpTo(const Vec3&, const Vec2&, int);
virtual void lerpMotion(const Vec3&);
virtual void turn(const Vec2&);
virtual void interpolateTurn(const Vec2&);
virtual void* getAddPacket();
virtual void normalTick();
virtual void baseTick();
virtual void rideTick();
virtual void* positionRider(Entity&) const;
virtual float getRidingHeight();
virtual float getRideHeight() const;
virtual void startRiding(Entity&);
virtual void addRider(Entity&);
virtual void removeRider(Entity&);
virtual bool intersects(const Vec3&, const Vec3&);
virtual bool isFree(const Vec3&, float);
virtual bool isFree(const Vec3&);
virtual bool isInWall();
virtual bool isInvisible();
virtual bool canShowNameTag();
virtual void setNameTagVisible(bool);
virtual const std::string& getNameTag() const;
virtual void setNameTag(const std::string&);
virtual bool isInWater() const;
virtual bool isInWaterOrRain();
virtual bool isInLava();
virtual bool isBaby() const;
virtual bool isUnderLiquid(MaterialType) const;
virtual void makeStuckInWeb();
virtual float getHeadHeight() const;
virtual float getShadowHeightOffs();
virtual float getShadowRadius() const;
virtual bool isSkyLit(float);
virtual float getBrightness(float);
virtual bool interactPreventDefault();
virtual void interactWithPlayer(Player&);
virtual bool canInteractWith(Player&);
virtual std::string getInteractText(Player&);
virtual void playerTouch(Player&);
virtual void push(Entity&, bool);
virtual void push(const Vec3&);
virtual bool isImmobile() const;
virtual bool isSilent();
virtual bool isPickable();
virtual bool isPushable() const;
virtual bool isShootable();
virtual bool isSneaking() const;
virtual bool isAlive();
virtual bool isOnFire() const;
virtual bool isCreativeModeAllowed();
virtual bool isSurfaceMob() const;
virtual void hurt(const EntityDamageSource&, int);
virtual void animateHurt();
virtual void doFireHurt(int);
virtual void onLightningHit();
virtual void onBounceStarted(const BlockPos&, const FullBlock&);
virtual void handleEntityEvent(EntityEvent);
virtual int getPickRadius();
virtual void spawnAtLocation(int, int);
virtual void spawnAtLocation(int, int, float);
virtual void spawnAtLocation(const ItemInstance&, float);
virtual void awardKillScore(Entity&, int);
virtual void setEquippedSlot(ArmorSlot, int, int);
virtual void setEquippedSlot(ArmorSlot, const ItemInstance&);
virtual void save(CompoundTag&);
virtual void saveWithoutId(CompoundTag&);
virtual void load(const CompoundTag&);
virtual void loadLinks(const CompoundTag&, std::vector<EntityLink>&);
virtual int getEntityTypeId() const = 0;
virtual void queryEntityRenderer();
virtual long getSourceUniqueID();
virtual void setOnFire(int);
virtual AABB getHandleWaterAABB() const;
virtual void handleInsidePortal();
virtual int getPortalCooldown() const;
virtual int getPortalWaitTime() const;
virtual DimensionId getDimensionId() const;
virtual void changeDimension(DimensionId);
virtual void changeDimension(ChangeDimensionPacket&);
virtual Player* getControllingPlayer() const;
virtual void checkFallDamage(float, bool);
virtual void causeFallDamage(float);
virtual void playSound(const std::string&, float, float);
virtual void onSynchedDataUpdate(int);
virtual bool canAddRider(Entity&) const;
virtual float getEyeHeight() const;
virtual void sendMotionPacketIfNeeded();
virtual void stopRiding(bool);
virtual void buildDebugInfo(std::string&) const;
virtual bool hasOutputSignal(signed char) const;
virtual int getOutputSignal() const;
virtual std::string getDebugText(std::vector<std::string>&);
virtual void setSize(float, float);
virtual void setPos(const EntityPos&);
virtual void outOfWorld();
virtual void markHurt();
virtual void burn(int);
virtual void lavaHurt();
virtual void readAdditionalSaveData(const CompoundTag*) = 0;
virtual void addAdditionalSaveData(CompoundTag*) = 0;
virtual void _playStepSound(const BlockPos&, int);
virtual void checkInsideBlocks(float);
virtual void pushOutOfBlocks(const Vec3&);
virtual void updateWaterState();
virtual void doWaterSplashEffect();
virtual void updateInsideBlock();
virtual void onBlockCollision(int);
};
typedef std::vector<Entity*> EntityList;
@jose-vm
Copy link

jose-vm commented Nov 16, 2015

I think EntityType of an entity is at 0x148 / 328, as of 0026B802. Can you try adding it?

@byteandahalf
Copy link
Author

I don't think Entities store their EntityType; They each have a getEntityTypeId override.

@byteandahalf
Copy link
Author

Updated for 0.14.3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment