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);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -271,6 +271,11 @@ void BoatDispenseBehavior::playSound(BlockSource *source, eOUTCOME outcome)
|
||||
|
||||
/* FilledBucket */
|
||||
|
||||
FilledBucketDispenseBehavior::FilledBucketDispenseBehavior()
|
||||
{
|
||||
dispenseBehavior = new DefaultDispenseItemBehavior();
|
||||
}
|
||||
|
||||
shared_ptr<ItemInstance> FilledBucketDispenseBehavior::execute(BlockSource *source, shared_ptr<ItemInstance> dispensed, eOUTCOME &outcome)
|
||||
{
|
||||
BucketItem *bucket = (BucketItem *)dispensed->getItem();
|
||||
@@ -288,7 +293,7 @@ shared_ptr<ItemInstance> FilledBucketDispenseBehavior::execute(BlockSource *sour
|
||||
return dispensed;
|
||||
}
|
||||
|
||||
return DefaultDispenseItemBehavior::dispense(source, dispensed);
|
||||
return dispenseBehavior->dispense(source, dispensed);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -83,7 +83,11 @@ private:
|
||||
class FilledBucketDispenseBehavior : public DefaultDispenseItemBehavior
|
||||
{
|
||||
public:
|
||||
FilledBucketDispenseBehavior();
|
||||
|
||||
virtual shared_ptr<ItemInstance> execute(BlockSource *source, shared_ptr<ItemInstance> dispensed, eOUTCOME &outcome);
|
||||
private:
|
||||
DefaultDispenseItemBehavior* dispenseBehavior;
|
||||
};
|
||||
|
||||
class EmptyBucketDispenseBehavior : public DefaultDispenseItemBehavior
|
||||
|
||||
Reference in New Issue
Block a user