WaterCauldron: remove more repeated code

This commit is contained in:
Dylan K. Taylor 2023-05-19 15:45:12 +01:00
parent 4a3843a881
commit 8454076235
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D

View File

@ -108,6 +108,7 @@ final class WaterCauldron extends FillableCauldron{
}
public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{
$world = $this->position->getWorld();
if(($dyeColor = match($item->getTypeId()){
ItemTypeIds::LAPIS_LAZULI => DyeColor::BLUE(),
ItemTypeIds::INK_SAC => DyeColor::BLACK(),
@ -117,8 +118,8 @@ final class WaterCauldron extends FillableCauldron{
default => null
}) !== null && ($newColor = $dyeColor->getRgbValue())->toRGBA() !== $this->customWaterColor?->toRGBA()
){
$this->position->getWorld()->setBlock($this->position, $this->setCustomWaterColor($this->customWaterColor === null ? $newColor : Color::mix($this->customWaterColor, $newColor)));
$this->position->getWorld()->addSound($this->position->add(0.5, 0.5, 0.5), new CauldronAddDyeSound());
$world->setBlock($this->position, $this->setCustomWaterColor($this->customWaterColor === null ? $newColor : Color::mix($this->customWaterColor, $newColor)));
$world->addSound($this->position->add(0.5, 0.5, 0.5), new CauldronAddDyeSound());
$item->pop();
}elseif($item instanceof Potion || $item instanceof SplashPotion){ //TODO: lingering potion
@ -137,13 +138,13 @@ final class WaterCauldron extends FillableCauldron{
default => false
} && $item->getCustomColor()?->toRGBA() !== $this->customWaterColor->toRGBA()){
$item->setCustomColor($this->customWaterColor);
$this->position->getWorld()->setBlock($this->position, $this->withFillLevel($this->getFillLevel() - self::DYE_ARMOR_USE_AMOUNT));
$this->position->getWorld()->addSound($this->position->add(0.5, 0.5, 0.5), new CauldronDyeItemSound());
$world->setBlock($this->position, $this->withFillLevel($this->getFillLevel() - self::DYE_ARMOR_USE_AMOUNT));
$world->addSound($this->position->add(0.5, 0.5, 0.5), new CauldronDyeItemSound());
}
}elseif($item->getCustomColor() !== null){
$item->clearCustomColor();
$this->position->getWorld()->setBlock($this->position, $this->withFillLevel($this->getFillLevel() - self::CLEAN_ARMOR_USE_AMOUNT));
$this->position->getWorld()->addSound($this->position->add(0.5, 0.5, 0.5), new CauldronCleanItemSound());
$world->setBlock($this->position, $this->withFillLevel($this->getFillLevel() - self::CLEAN_ARMOR_USE_AMOUNT));
$world->addSound($this->position->add(0.5, 0.5, 0.5), new CauldronCleanItemSound());
}
}elseif($item instanceof Banner){
$patterns = $item->getPatterns();
@ -151,8 +152,8 @@ final class WaterCauldron extends FillableCauldron{
array_pop($patterns);
$item->setPatterns($patterns);
$this->position->getWorld()->setBlock($this->position, $this->withFillLevel($this->getFillLevel() - self::CLEAN_BANNER_USE_AMOUNT));
$this->position->getWorld()->addSound($this->position->add(0.5, 0.5, 0.5), new CauldronCleanItemSound());
$world->setBlock($this->position, $this->withFillLevel($this->getFillLevel() - self::CLEAN_BANNER_USE_AMOUNT));
$world->addSound($this->position->add(0.5, 0.5, 0.5), new CauldronCleanItemSound());
}
}elseif(ItemTypeIds::toBlockTypeId($item->getTypeId()) === BlockTypeIds::DYED_SHULKER_BOX){
if($this->customWaterColor === null){
@ -162,8 +163,8 @@ final class WaterCauldron extends FillableCauldron{
$item->pop();
$returnedItems[] = $newItem;
$this->position->getWorld()->setBlock($this->position, $this->withFillLevel($this->getFillLevel() - self::CLEAN_SHULKER_BOX_USE_AMOUNT));
$this->position->getWorld()->addSound($this->position->add(0.5, 0.5, 0.5), new CauldronCleanItemSound());
$world->setBlock($this->position, $this->withFillLevel($this->getFillLevel() - self::CLEAN_SHULKER_BOX_USE_AMOUNT));
$world->addSound($this->position->add(0.5, 0.5, 0.5), new CauldronCleanItemSound());
}
}else{
match($item->getTypeId()){