Fixed CPU leak

This commit is contained in:
Shoghi Cervantes
2014-10-31 21:05:37 +01:00
parent ae06681b60
commit 8601405a88
73 changed files with 304 additions and 564 deletions

View File

@ -131,7 +131,7 @@ abstract class BaseInventory implements Inventory{
$holder = $this->getHolder();
if($holder instanceof Entity){
Server::getInstance()->getPluginManager()->callEvent($ev = EntityInventoryChangeEvent::createEvent($holder, $this->getItem($index), $item, $index));
Server::getInstance()->getPluginManager()->callEvent($ev = new EntityInventoryChangeEvent($holder, $this->getItem($index), $item, $index));
if($ev->isCancelled()){
$this->sendContents($this->getViewers());
@ -298,7 +298,7 @@ abstract class BaseInventory implements Inventory{
$old = $this->slots[$index];
$holder = $this->getHolder();
if($holder instanceof Entity){
Server::getInstance()->getPluginManager()->callEvent($ev = EntityInventoryChangeEvent::createEvent($holder, $old, $item, $index));
Server::getInstance()->getPluginManager()->callEvent($ev = new EntityInventoryChangeEvent($holder, $old, $item, $index));
if($ev->isCancelled()){
$this->sendContents($this->getViewers());
@ -350,7 +350,7 @@ abstract class BaseInventory implements Inventory{
}
public function open(Player $who){
$who->getServer()->getPluginManager()->callEvent($ev = InventoryOpenEvent::createEvent($this, $who));
$who->getServer()->getPluginManager()->callEvent($ev = new InventoryOpenEvent($this, $who));
if($ev->isCancelled()){
return false;
}
@ -384,7 +384,7 @@ abstract class BaseInventory implements Inventory{
$target = [$target];
}
$pk = ContainerSetContentPacket::getFromPool();
$pk = new ContainerSetContentPacket();
$pk->slots = [];
for($i = 0; $i < $this->getSize(); ++$i){
$pk->slots[$i] = $this->getItem($i);
@ -409,7 +409,7 @@ abstract class BaseInventory implements Inventory{
$target = [$target];
}
$pk = ContainerSetSlotPacket::getFromPool();
$pk = new ContainerSetSlotPacket();
$pk->slot = $index;
$pk->item = clone $this->getItem($index);

View File

@ -43,7 +43,7 @@ class ChestInventory extends ContainerInventory{
parent::onOpen($who);
if(count($this->getViewers()) === 1){
$pk = TileEventPacket::getFromPool();
$pk = new TileEventPacket();
$pk->x = $this->getHolder()->getX();
$pk->y = $this->getHolder()->getY();
$pk->z = $this->getHolder()->getZ();
@ -57,7 +57,7 @@ class ChestInventory extends ContainerInventory{
public function onClose(Player $who){
if(count($this->getViewers()) === 1){
$pk = TileEventPacket::getFromPool();
$pk = new TileEventPacket();
$pk->x = $this->getHolder()->getX();
$pk->y = $this->getHolder()->getY();
$pk->z = $this->getHolder()->getZ();

View File

@ -29,7 +29,7 @@ use pocketmine\Player;
abstract class ContainerInventory extends BaseInventory{
public function onOpen(Player $who){
parent::onOpen($who);
$pk = ContainerOpenPacket::getFromPool();
$pk = new ContainerOpenPacket();
$pk->windowid = $who->getWindowId($this);
$pk->type = $this->getType()->getNetworkType();
$pk->slots = $this->getSize();
@ -48,7 +48,7 @@ abstract class ContainerInventory extends BaseInventory{
}
public function onClose(Player $who){
$pk = ContainerClosePacket::getFromPool();
$pk = new ContainerClosePacket();
$pk->windowid = $who->getWindowId($this);
$who->dataPacket($pk);
parent::onClose($who);

View File

@ -92,7 +92,7 @@ class CraftingTransactionGroup extends SimpleTransactionGroup{
return false;
}
Server::getInstance()->getPluginManager()->callEvent($ev = CraftItemEvent::createEvent($this, $this->getMatchingRecipe()));
Server::getInstance()->getPluginManager()->callEvent($ev = new CraftItemEvent($this, $this->getMatchingRecipe()));
if($ev->isCancelled()){
foreach($this->inventories as $inventory){
$inventory->sendContents($inventory->getViewers());

View File

@ -91,7 +91,7 @@ class DoubleChestInventory extends ChestInventory implements InventoryHolder{
parent::onOpen($who);
if(count($this->getViewers()) === 1){
$pk = TileEventPacket::getFromPool();
$pk = new TileEventPacket();
$pk->x = $this->right->getHolder()->getX();
$pk->y = $this->right->getHolder()->getY();
$pk->z = $this->right->getHolder()->getZ();
@ -105,7 +105,7 @@ class DoubleChestInventory extends ChestInventory implements InventoryHolder{
public function onClose(Player $who){
if(count($this->getViewers()) === 1){
$pk = TileEventPacket::getFromPool();
$pk = new TileEventPacket();
$pk->x = $this->right->getHolder()->getX();
$pk->y = $this->right->getHolder()->getY();
$pk->z = $this->right->getHolder()->getZ();

View File

@ -66,7 +66,7 @@ class PlayerInventory extends BaseInventory{
$this->itemInHandIndex = $index;
$item = $this->getItemInHand();
$pk = PlayerEquipmentPacket::getFromPool();
$pk = new PlayerEquipmentPacket();
$pk->eid = $this->getHolder()->getID();
$pk->item = $item->getID();
$pk->meta = $item->getDamage();
@ -103,7 +103,7 @@ class PlayerInventory extends BaseInventory{
if($slot >= -1 and $slot < $this->getSize()){
$item = $this->getItem($slot);
if($this->getHolder() instanceof Player){
Server::getInstance()->getPluginManager()->callEvent($ev = PlayerItemHeldEvent::createEvent($this->getHolder(), $item, $slot, $this->itemInHandIndex));
Server::getInstance()->getPluginManager()->callEvent($ev = new PlayerItemHeldEvent($this->getHolder(), $item, $slot, $this->itemInHandIndex));
if($ev->isCancelled()){
$this->sendHeldItem($this->getHolder());
@ -126,7 +126,7 @@ class PlayerInventory extends BaseInventory{
$item = $this->getItemInHand();
$pk = PlayerEquipmentPacket::getFromPool();
$pk = new PlayerEquipmentPacket();
$pk->eid = $this->getHolder()->getID();
$pk->item = $item->getID();
$pk->meta = $item->getDamage();
@ -203,7 +203,7 @@ class PlayerInventory extends BaseInventory{
}
if($index >= $this->getSize()){ //Armor change
Server::getInstance()->getPluginManager()->callEvent($ev = EntityArmorChangeEvent::createEvent($this->getHolder(), $this->getItem($index), $item, $index));
Server::getInstance()->getPluginManager()->callEvent($ev = new EntityArmorChangeEvent($this->getHolder(), $this->getItem($index), $item, $index));
if($ev->isCancelled() and $this->getHolder() instanceof Player){
$this->sendArmorContents($this->getViewers());
$this->sendContents($this->getViewers());
@ -229,7 +229,7 @@ class PlayerInventory extends BaseInventory{
$item = Item::get(Item::AIR, null, 0);
$old = $this->slots[$index];
if($index >= $this->getSize() and $index < $this->size){ //Armor change
Server::getInstance()->getPluginManager()->callEvent($ev = EntityArmorChangeEvent::createEvent($this->getHolder(), $old, $item, $index));
Server::getInstance()->getPluginManager()->callEvent($ev = new EntityArmorChangeEvent($this->getHolder(), $old, $item, $index));
if($ev->isCancelled()){
$this->sendArmorContents($this->getViewers());
$this->sendContents($this->getViewers());
@ -286,7 +286,7 @@ class PlayerInventory extends BaseInventory{
}
}
$pk = PlayerArmorEquipmentPacket::getFromPool();
$pk = new PlayerArmorEquipmentPacket();
$pk->eid = $this->getHolder()->getID();
$pk->slots = $slots;
$pk->encode();
@ -298,7 +298,7 @@ class PlayerInventory extends BaseInventory{
//$pk2 = clone $pk;
//$pk2->eid = 0;
$pk2 = ContainerSetContentPacket::getFromPool();
$pk2 = new ContainerSetContentPacket();
$pk2->windowid = 0x78; //Armor window id constant
$pk2->slots = $armor;
$player->dataPacket($pk2);
@ -333,7 +333,7 @@ class PlayerInventory extends BaseInventory{
$target = [$target];
}
$pk = ContainerSetContentPacket::getFromPool();
$pk = new ContainerSetContentPacket();
$pk->slots = [];
for($i = 0; $i < $this->getSize(); ++$i){ //Do not send armor by error here
$pk->slots[$i] = $this->getItem($i);
@ -365,7 +365,7 @@ class PlayerInventory extends BaseInventory{
$target = [$target];
}
$pk = ContainerSetSlotPacket::getFromPool();
$pk = new ContainerSetSlotPacket();
$pk->slot = $index;
$pk->item = clone $this->getItem($index);

View File

@ -138,7 +138,7 @@ class SimpleTransactionGroup implements TransactionGroup{
return false;
}
Server::getInstance()->getPluginManager()->callEvent($ev = InventoryTransactionEvent::createEvent($this));
Server::getInstance()->getPluginManager()->callEvent($ev = new InventoryTransactionEvent($this));
if($ev->isCancelled()){
foreach($this->inventories as $inventory){
$inventory->sendContents($inventory->getViewers());