4jcraft/Minecraft.World/Entities/MinecartHopper.h
2026-03-21 16:29:02 -05:00

81 lines
2.7 KiB
C++

#pragma once
#include "MinecartContainer.h"
#include "../Blocks/TileEntities/Hopper.h"
class MinecartHopper : public MinecartContainer, public Hopper {
public:
eINSTANCEOF GetType() { return eTYPE_MINECART_HOPPER; };
static Entity* create(Level* level) { return new MinecartHopper(level); }
public:
static const int MOVE_ITEM_SPEED;
private:
bool enabled;
int cooldownTime;
void _init();
public:
MinecartHopper(Level* level);
MinecartHopper(Level* level, double x, double y, double z);
virtual int getType();
virtual Tile* getDefaultDisplayTile();
virtual int getDefaultDisplayOffset();
virtual unsigned int getContainerSize();
virtual bool interact(std::shared_ptr<Player> player);
virtual void activateMinecart(int xt, int yt, int zt, bool state);
virtual bool isEnabled();
virtual void setEnabled(bool enabled);
virtual Level* getLevel();
virtual double getLevelX();
virtual double getLevelY();
virtual double getLevelZ();
virtual void tick();
virtual bool suckInItems();
virtual void destroy(DamageSource* source);
protected:
virtual void addAdditonalSaveData(CompoundTag* base);
virtual void readAdditionalSaveData(CompoundTag* base);
public:
void setCooldown(int time);
bool isOnCooldown();
// 4J For Hopper
virtual std::shared_ptr<ItemInstance> getItem(unsigned int slot) {
return MinecartContainer::getItem(slot);
}
virtual std::shared_ptr<ItemInstance> removeItem(unsigned int slot,
int count) {
return MinecartContainer::removeItem(slot, count);
}
virtual std::shared_ptr<ItemInstance> removeItemNoUpdate(int slot) {
return MinecartContainer::removeItemNoUpdate(slot);
}
virtual void setItem(unsigned int slot,
std::shared_ptr<ItemInstance> item) {
MinecartContainer::setItem(slot, item);
}
virtual std::wstring getName() { return MinecartContainer::getName(); }
virtual std::wstring getCustomName() {
return MinecartContainer::getCustomName();
}
virtual bool hasCustomName() { return MinecartContainer::hasCustomName(); }
virtual int getMaxStackSize() {
return MinecartContainer::getMaxStackSize();
}
virtual void setChanged() { MinecartContainer::setChanged(); }
virtual bool stillValid(std::shared_ptr<Player> player) {
return MinecartContainer::stillValid(player);
}
virtual void startOpen() { MinecartContainer::startOpen(); }
virtual void stopOpen() { MinecartContainer::stopOpen(); }
virtual bool canPlaceItem(int slot, std::shared_ptr<ItemInstance> item) {
return MinecartContainer::canPlaceItem(slot, item);
}
};