mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-06-27 05:40:01 +00:00
Remove Inventory->sendSlot() and Inventory->sendContents()
the plan is to remove this from inventory entirely and use listeners for this.
This commit is contained in:
parent
7ba1dd3242
commit
8551d1e282
@ -116,7 +116,9 @@ abstract class BaseInventory implements Inventory{
|
||||
}
|
||||
|
||||
if($send){
|
||||
$this->sendContents($this->getViewers());
|
||||
foreach($this->getViewers() as $viewer){
|
||||
$viewer->getNetworkSession()->syncInventoryContents($this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -380,34 +382,9 @@ abstract class BaseInventory implements Inventory{
|
||||
$listener->onSlotChange($this, $index);
|
||||
}
|
||||
if($send){
|
||||
$this->sendSlot($index, $this->getViewers());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Player|Player[] $target
|
||||
*/
|
||||
public function sendContents($target) : void{
|
||||
if($target instanceof Player){
|
||||
$target = [$target];
|
||||
}
|
||||
|
||||
foreach($target as $player){
|
||||
$player->getNetworkSession()->syncInventoryContents($this);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $index
|
||||
* @param Player|Player[] $target
|
||||
*/
|
||||
public function sendSlot(int $index, $target) : void{
|
||||
if($target instanceof Player){
|
||||
$target = [$target];
|
||||
}
|
||||
|
||||
foreach($target as $player){
|
||||
$player->getNetworkSession()->syncInventorySlot($this, $index);
|
||||
foreach($this->viewers as $viewer){
|
||||
$viewer->getNetworkSession()->syncInventorySlot($this, $index);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -49,7 +49,7 @@ abstract class ContainerInventory extends BaseInventory{
|
||||
$who->sendDataPacket(ContainerOpenPacket::blockInv($windowId, $this->getNetworkType(), $holder->getFloorX(), $holder->getFloorY(), $holder->getFloorZ()));
|
||||
}
|
||||
|
||||
$this->sendContents($who);
|
||||
$who->getNetworkSession()->syncInventoryContents($this);
|
||||
}
|
||||
|
||||
protected function onClose(Player $who) : void{
|
||||
|
@ -107,17 +107,6 @@ interface Inventory{
|
||||
*/
|
||||
public function setContents(array $items, bool $send = true) : void;
|
||||
|
||||
/**
|
||||
* @param Player|Player[] $target
|
||||
*/
|
||||
public function sendContents($target) : void;
|
||||
|
||||
/**
|
||||
* @param int $index
|
||||
* @param Player|Player[] $target
|
||||
*/
|
||||
public function sendSlot(int $index, $target) : void;
|
||||
|
||||
/**
|
||||
* Checks if the inventory contains any Item with the same material data.
|
||||
* It will check id, amount, and metadata (if not null)
|
||||
|
@ -137,12 +137,12 @@ class PlayerInventory extends BaseInventory{
|
||||
if(!is_array($target)){
|
||||
$target->sendDataPacket($pk);
|
||||
if($target === $this->getHolder()){
|
||||
$this->sendSlot($this->getHeldItemIndex(), $target);
|
||||
$target->getNetworkSession()->syncInventorySlot($this, $this->getHeldItemIndex());
|
||||
}
|
||||
}else{
|
||||
$this->getHolder()->getWorld()->getServer()->broadcastPacket($target, $pk);
|
||||
if(in_array($this->getHolder(), $target, true)){
|
||||
$this->sendSlot($this->getHeldItemIndex(), $this->getHolder());
|
||||
$target->getNetworkSession()->syncInventorySlot($this, $this->getHeldItemIndex());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -282,7 +282,7 @@ class InventoryTransaction{
|
||||
|
||||
protected function sendInventories() : void{
|
||||
foreach($this->inventories as $inventory){
|
||||
$inventory->sendContents($this->source);
|
||||
$this->source->getNetworkSession()->syncInventoryContents($inventory);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -27,7 +27,6 @@ use pocketmine\inventory\Inventory;
|
||||
use pocketmine\inventory\transaction\InventoryTransaction;
|
||||
use pocketmine\item\Item;
|
||||
use pocketmine\Player;
|
||||
use function spl_object_id;
|
||||
|
||||
/**
|
||||
* Represents an action causing a change in an inventory slot.
|
||||
@ -110,9 +109,9 @@ class SlotChangeAction extends InventoryAction{
|
||||
* @param Player $source
|
||||
*/
|
||||
public function onExecuteSuccess(Player $source) : void{
|
||||
$viewers = $this->inventory->getViewers();
|
||||
unset($viewers[spl_object_id($source)]);
|
||||
$this->inventory->sendSlot($this->inventorySlot, $viewers);
|
||||
foreach($this->inventory->getViewers() as $viewer){
|
||||
$viewer->getNetworkSession()->syncInventorySlot($this->inventory, $this->inventorySlot);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -121,6 +120,6 @@ class SlotChangeAction extends InventoryAction{
|
||||
* @param Player $source
|
||||
*/
|
||||
public function onExecuteFail(Player $source) : void{
|
||||
$this->inventory->sendSlot($this->inventorySlot, $source);
|
||||
$source->getNetworkSession()->syncInventorySlot($this->inventory, $this->inventorySlot);
|
||||
}
|
||||
}
|
||||
|
@ -339,7 +339,7 @@ class InGameSessionHandler extends SessionHandler{
|
||||
switch($data->getActionType()){
|
||||
case ReleaseItemTransactionData::ACTION_RELEASE:
|
||||
if(!$this->player->releaseHeldItem()){
|
||||
$this->player->getInventory()->sendContents($this->player);
|
||||
$this->session->syncInventoryContents($this->player->getInventory());
|
||||
}
|
||||
return true;
|
||||
case ReleaseItemTransactionData::ACTION_CONSUME:
|
||||
|
Loading…
x
Reference in New Issue
Block a user