fix(TU20): Fixed a crash when a dispenser is dispensing water or lava when the dispenser is blocked.

This commit is contained in:
2026-07-10 14:09:15 +03:00
parent 6e8da80919
commit da76eed8f7
3 changed files with 12 additions and 1 deletions
+2
View File
@@ -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
{
+6 -1
View File
@@ -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);
}
+4
View File
@@ -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