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); level->addParticle(eParticleType_largesmoke, xt + Math::random(), yt + Math::random(), zt + Math::random(), 0, 0, 0);
} }
return true;
} }
else else
{ {
+6 -1
View File
@@ -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);
} }
+4
View File
@@ -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