mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-05-13 09:19:42 +00:00
Move responsibility of copying block-picked item NBT to Block instead of Player
This commit is contained in:
parent
c29523baf4
commit
066eadd687
@ -105,7 +105,6 @@ use pocketmine\permission\PermissionAttachment;
|
||||
use pocketmine\permission\PermissionAttachmentInfo;
|
||||
use pocketmine\permission\PermissionManager;
|
||||
use pocketmine\plugin\Plugin;
|
||||
use pocketmine\tile\Tile;
|
||||
use pocketmine\timings\Timings;
|
||||
use pocketmine\utils\TextFormat;
|
||||
use pocketmine\utils\UUID;
|
||||
@ -1837,17 +1836,7 @@ class Player extends Human implements CommandSender, ChunkLoader, ChunkListener,
|
||||
return true;
|
||||
}
|
||||
|
||||
$item = $block->getPickedItem();
|
||||
if($addTileNBT){
|
||||
$tile = $this->getWorld()->getTile($block);
|
||||
if($tile instanceof Tile){
|
||||
$nbt = $tile->getCleanedNBT();
|
||||
if($nbt instanceof CompoundTag){
|
||||
$item->setCustomBlockData($nbt);
|
||||
$item->setLore(["+(DATA)"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
$item = $block->getPickedItem($addTileNBT);
|
||||
|
||||
$ev = new PlayerBlockPickEvent($this, $block, $item);
|
||||
$ev->call();
|
||||
|
@ -42,7 +42,7 @@ class Beetroot extends Crops{
|
||||
];
|
||||
}
|
||||
|
||||
public function getPickedItem() : Item{
|
||||
public function getPickedItem(bool $addUserData = false) : Item{
|
||||
return ItemFactory::get(Item::BEETROOT_SEEDS);
|
||||
}
|
||||
}
|
||||
|
@ -37,9 +37,11 @@ use pocketmine\math\RayTraceResult;
|
||||
use pocketmine\math\Vector3;
|
||||
use pocketmine\metadata\Metadatable;
|
||||
use pocketmine\metadata\MetadataValue;
|
||||
use pocketmine\nbt\tag\CompoundTag;
|
||||
use pocketmine\network\mcpe\protocol\types\RuntimeBlockMapping;
|
||||
use pocketmine\Player;
|
||||
use pocketmine\plugin\Plugin;
|
||||
use pocketmine\tile\Tile;
|
||||
use pocketmine\tile\TileFactory;
|
||||
use pocketmine\world\Position;
|
||||
use pocketmine\world\World;
|
||||
@ -500,10 +502,24 @@ class Block extends Position implements BlockLegacyIds, Metadatable{
|
||||
|
||||
/**
|
||||
* Returns the item that players will equip when middle-clicking on this block.
|
||||
*
|
||||
* @param bool $addUserData
|
||||
*
|
||||
* @return Item
|
||||
*/
|
||||
public function getPickedItem() : Item{
|
||||
return $this->asItem();
|
||||
public function getPickedItem(bool $addUserData = false) : Item{
|
||||
$item = $this->asItem();
|
||||
if($addUserData){
|
||||
$tile = $this->world->getTile($this);
|
||||
if($tile instanceof Tile){
|
||||
$nbt = $tile->getCleanedNBT();
|
||||
if($nbt instanceof CompoundTag){
|
||||
$item->setCustomBlockData($nbt);
|
||||
$item->setLore(["+(DATA)"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
return $item;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -35,7 +35,7 @@ class Carrot extends Crops{
|
||||
];
|
||||
}
|
||||
|
||||
public function getPickedItem() : Item{
|
||||
public function getPickedItem(bool $addUserData = false) : Item{
|
||||
return ItemFactory::get(Item::CARROT);
|
||||
}
|
||||
}
|
||||
|
@ -118,7 +118,7 @@ class CocoaBlock extends Transparent{
|
||||
];
|
||||
}
|
||||
|
||||
public function getPickedItem() : Item{
|
||||
public function getPickedItem(bool $addUserData = false) : Item{
|
||||
return ItemFactory::get(Item::DYE, 3); //cocoa beans
|
||||
}
|
||||
}
|
||||
|
@ -105,7 +105,7 @@ class Farmland extends Transparent{
|
||||
return false;
|
||||
}
|
||||
|
||||
public function getPickedItem() : Item{
|
||||
public function getPickedItem(bool $addUserData = false) : Item{
|
||||
return ItemFactory::get(Item::DIRT);
|
||||
}
|
||||
}
|
||||
|
@ -150,8 +150,8 @@ class FlowerPot extends Flowable{
|
||||
return $items;
|
||||
}
|
||||
|
||||
public function getPickedItem() : Item{
|
||||
return $this->plant !== null ? $this->plant->asItem() : parent::getPickedItem();
|
||||
public function getPickedItem(bool $addUserData = false) : Item{
|
||||
return $this->plant !== null ? $this->plant->asItem() : parent::getPickedItem($addUserData);
|
||||
}
|
||||
|
||||
public function isAffectedBySilkTouch() : bool{
|
||||
|
@ -197,8 +197,8 @@ class ItemFrame extends Flowable{
|
||||
return $drops;
|
||||
}
|
||||
|
||||
public function getPickedItem() : Item{
|
||||
return $this->framedItem !== null ? clone $this->framedItem : parent::getPickedItem();
|
||||
public function getPickedItem(bool $addUserData = false) : Item{
|
||||
return $this->framedItem !== null ? clone $this->framedItem : parent::getPickedItem($addUserData);
|
||||
}
|
||||
|
||||
public function isAffectedBySilkTouch() : bool{
|
||||
|
@ -35,7 +35,7 @@ class Potato extends Crops{
|
||||
];
|
||||
}
|
||||
|
||||
public function getPickedItem() : Item{
|
||||
public function getPickedItem(bool $addUserData = false) : Item{
|
||||
return ItemFactory::get(Item::POTATO);
|
||||
}
|
||||
}
|
||||
|
@ -42,7 +42,7 @@ class Wheat extends Crops{
|
||||
}
|
||||
}
|
||||
|
||||
public function getPickedItem() : Item{
|
||||
public function getPickedItem(bool $addUserData = false) : Item{
|
||||
return ItemFactory::get(Item::WHEAT_SEEDS);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user