38 private ?
Record $record =
null;
45 if($player instanceof
Player){
46 if($this->record !==
null){
48 }elseif($item instanceof
Record){
49 $player->sendJukeboxPopup(KnownTranslationFactory::record_nowPlaying($item->getRecordType()->getTranslatableName()));
50 $this->insertRecord($item->
pop());
54 $this->position->getWorld()->setBlock($this->position, $this);
59 public function getRecord() : ?Record{
63 public function ejectRecord() : void{
64 if($this->record !== null){
65 $this->position->getWorld()->dropItem($this->position->add(0.5, 1, 0.5), $this->record);
71 public function insertRecord(Record $record) : void{
72 if($this->record === null){
73 $this->record = $record;
78 public function startSound() : void{
79 if($this->record !== null){
80 $this->position->getWorld()->addSound($this->position,
new RecordSound($this->record->getRecordType()));
84 public function stopSound() : void{
85 $this->position->getWorld()->addSound($this->position, new RecordStopSound());
88 public function onBreak(
Item $item, ?
Player $player =
null, array &$returnedItems = []) : bool{
90 return parent::onBreak($item, $player, $returnedItems);
94 $drops = parent::getDropsForCompatibleTool($item);
95 if($this->record !==
null){
96 $drops[] = $this->record;
102 parent::readStateFromWorld();
103 $jukebox = $this->position->getWorld()->getTile($this->position);
104 if($jukebox instanceof JukeboxTile){
105 $this->record = $jukebox->getRecord();
112 parent::writeStateToWorld();
113 $jukebox = $this->position->getWorld()->getTile($this->position);
114 if($jukebox instanceof JukeboxTile){
115 $jukebox->setRecord($this->record);