forked from cafeberry/cafeberry
fix(TU20): Fixed a crash when a dispenser is dispensing water or lava when the dispenser is blocked.
This commit is contained in:
@@ -225,6 +225,8 @@ bool BucketItem::emptyBucket(Level *level, int xt, int yt, int zt)
|
|||||||
{
|
{
|
||||||
level->addParticle(eParticleType_largesmoke, xt + Math::random(), yt + Math::random(), zt + Math::random(), 0, 0, 0);
|
level->addParticle(eParticleType_largesmoke, xt + Math::random(), yt + Math::random(), zt + Math::random(), 0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -271,6 +271,11 @@ void BoatDispenseBehavior::playSound(BlockSource *source, eOUTCOME outcome)
|
|||||||
|
|
||||||
/* FilledBucket */
|
/* FilledBucket */
|
||||||
|
|
||||||
|
FilledBucketDispenseBehavior::FilledBucketDispenseBehavior()
|
||||||
|
{
|
||||||
|
dispenseBehavior = new DefaultDispenseItemBehavior();
|
||||||
|
}
|
||||||
|
|
||||||
shared_ptr<ItemInstance> FilledBucketDispenseBehavior::execute(BlockSource *source, shared_ptr<ItemInstance> dispensed, eOUTCOME &outcome)
|
shared_ptr<ItemInstance> FilledBucketDispenseBehavior::execute(BlockSource *source, shared_ptr<ItemInstance> dispensed, eOUTCOME &outcome)
|
||||||
{
|
{
|
||||||
BucketItem *bucket = (BucketItem *)dispensed->getItem();
|
BucketItem *bucket = (BucketItem *)dispensed->getItem();
|
||||||
@@ -288,7 +293,7 @@ shared_ptr<ItemInstance> FilledBucketDispenseBehavior::execute(BlockSource *sour
|
|||||||
return dispensed;
|
return dispensed;
|
||||||
}
|
}
|
||||||
|
|
||||||
return DefaultDispenseItemBehavior::dispense(source, dispensed);
|
return dispenseBehavior->dispense(source, dispensed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -83,7 +83,11 @@ private:
|
|||||||
class FilledBucketDispenseBehavior : public DefaultDispenseItemBehavior
|
class FilledBucketDispenseBehavior : public DefaultDispenseItemBehavior
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
FilledBucketDispenseBehavior();
|
||||||
|
|
||||||
virtual shared_ptr<ItemInstance> execute(BlockSource *source, shared_ptr<ItemInstance> dispensed, eOUTCOME &outcome);
|
virtual shared_ptr<ItemInstance> execute(BlockSource *source, shared_ptr<ItemInstance> dispensed, eOUTCOME &outcome);
|
||||||
|
private:
|
||||||
|
DefaultDispenseItemBehavior* dispenseBehavior;
|
||||||
};
|
};
|
||||||
|
|
||||||
class EmptyBucketDispenseBehavior : public DefaultDispenseItemBehavior
|
class EmptyBucketDispenseBehavior : public DefaultDispenseItemBehavior
|
||||||
|
|||||||
Reference in New Issue
Block a user