Fixed things

This commit is contained in:
Shoghi Cervantes 2014-05-22 20:48:17 +02:00
parent 98e9b5594c
commit 48af130269
3 changed files with 24 additions and 10 deletions

View File

@ -371,7 +371,7 @@ class Player extends Human implements CommandSender, IPlayer{
$this->spawnPosition = $this->server->getDefaultLevel()->getSafeSpawn(); $this->spawnPosition = $this->server->getDefaultLevel()->getSafeSpawn();
$this->timeout = microtime(true) + 20; $this->timeout = microtime(true) + 20;
$this->gamemode = $this->server->getGamemode(); $this->gamemode = $this->server->getGamemode();
$this->getLevel() = $this->server->getDefaultLevel(); $this->setLevel($this->server->getDefaultLevel(), true);
$this->viewDistance = $this->server->getViewDistance(); $this->viewDistance = $this->server->getViewDistance();
$this->slot = 0; $this->slot = 0;
$this->hotbar = array(0, -1, -1, -1, -1, -1, -1, -1, -1); $this->hotbar = array(0, -1, -1, -1, -1, -1, -1, -1, -1);
@ -488,7 +488,7 @@ class Player extends Human implements CommandSender, IPlayer{
* @param bool $force * @param bool $force
* @param bool $ev * @param bool $ev
* *
* @return bool|void * @return void|bool
*/ */
public function getNextChunk($force = false, $ev = null){ public function getNextChunk($force = false, $ev = null){
if($this->connected === false){ if($this->connected === false){
@ -566,7 +566,7 @@ class Player extends Human implements CommandSender, IPlayer{
return false; return false;
} }
$this->chunkCount = []; $this->chunkCount = [];
foreach($cnt as $i => $count){ foreach($cnt as $count){
$this->chunkCount[$count] = true; $this->chunkCount[$count] = true;
} }
@ -803,8 +803,8 @@ class Player extends Human implements CommandSender, IPlayer{
*/ */
public function checkSleep(){ public function checkSleep(){
if($this->sleeping !== false){ if($this->sleeping !== false){
//TODO //TODO: Move to Level
if($this->server->api->time->getPhase($this->getLevel()) === "night"){ /*if($this->server->api->time->getPhase($this->getLevel()) === "night"){
foreach($this->getLevel()->getPlayers() as $p){ foreach($this->getLevel()->getPlayers() as $p){
if($p->sleeping === false){ if($p->sleeping === false){
return; return;
@ -814,7 +814,7 @@ class Player extends Human implements CommandSender, IPlayer{
foreach($this->getLevel()->getPlayers() as $p){ foreach($this->getLevel()->getPlayers() as $p){
$p->stopSleep(); $p->stopSleep();
} }
} }*/
} }
return; return;
@ -1336,12 +1336,14 @@ class Player extends Human implements CommandSender, IPlayer{
$nbt["NameTag"] = $this->username; $nbt["NameTag"] = $this->username;
} }
$this->gamemode = $nbt["playerGameType"] & 0x03; $this->gamemode = $nbt["playerGameType"] & 0x03;
if(($this->getLevel() = $this->server->getLevel($nbt["Level"])) === null){ if(($level = $this->server->getLevel($nbt["Level"])) === null){
$this->getLevel() = $this->server->getDefaultLevel(); $this->setLevel($this->server->getDefaultLevel(), true);
$nbt["Level"] = $this->getLevel()->getName(); $nbt["Level"] = $this->getLevel()->getName();
$nbt["Pos"][0] = $this->getLevel()->getSpawn()->x; $nbt["Pos"][0] = $this->getLevel()->getSpawn()->x;
$nbt["Pos"][1] = $this->getLevel()->getSpawn()->y; $nbt["Pos"][1] = $this->getLevel()->getSpawn()->y;
$nbt["Pos"][2] = $this->getLevel()->getSpawn()->z; $nbt["Pos"][2] = $this->getLevel()->getSpawn()->z;
}else{
$this->setLevel($level, true);
} }
if(!($nbt instanceof Compound)){ if(!($nbt instanceof Compound)){
@ -1351,6 +1353,8 @@ class Player extends Human implements CommandSender, IPlayer{
} }
$this->achievements = []; $this->achievements = [];
/** @var Byte $achievement */
foreach($nbt->Achievements as $achievement){ foreach($nbt->Achievements as $achievement){
$this->achievements[$achievement->getName()] = $achievement->getValue() > 0 ? true : false; $this->achievements[$achievement->getName()] = $achievement->getValue() > 0 ? true : false;
} }
@ -1509,7 +1513,7 @@ class Player extends Human implements CommandSender, IPlayer{
$item = $this->getSlot($packet->slot); $item = $this->getSlot($packet->slot);
} }
if($packet->slot === false){ if(!isset($item) or $packet->slot === false){
$this->sendInventorySlot($packet->slot); $this->sendInventorySlot($packet->slot);
}else{ }else{
$this->server->getPluginManager()->callEvent($ev = new PlayerItemHeldEvent($this, $item, $packet->slot, 0)); $this->server->getPluginManager()->callEvent($ev = new PlayerItemHeldEvent($this, $item, $packet->slot, 0));
@ -2078,6 +2082,7 @@ class Player extends Human implements CommandSender, IPlayer{
} }
if(is_array($this->windows[$packet->windowid])){ if(is_array($this->windows[$packet->windowid])){
/** @var \pocketmine\tile\Container[] $tiles */
$tiles = $this->windows[$packet->windowid]; $tiles = $this->windows[$packet->windowid];
if($packet->slot >= 0 and $packet->slot < Chest::SLOTS){ if($packet->slot >= 0 and $packet->slot < Chest::SLOTS){
$tile = $tiles[0]; $tile = $tiles[0];
@ -2090,7 +2095,6 @@ class Player extends Human implements CommandSender, IPlayer{
}else{ }else{
break; break;
} }
$item = Item::get($packet->item->getID(), $packet->item->getDamage(), $packet->item->getCount()); $item = Item::get($packet->item->getID(), $packet->item->getDamage(), $packet->item->getCount());
$slot = $tile->getSlot($slotn); $slot = $tile->getSlot($slotn);

View File

@ -230,6 +230,11 @@ class Human extends Creature implements ProjectileSource, InventorySource{
return true; return true;
} }
/**
* @param int $slot
*
* @return Item
*/
public function getArmorSlot($slot){ public function getArmorSlot($slot){
$slot = (int) $slot; $slot = (int) $slot;
if(!isset($this->armor[$slot])){ if(!isset($this->armor[$slot])){

View File

@ -149,6 +149,11 @@ trait Container{
return -1; return -1;
} }
/**
* @param int $s
*
* @return Item
*/
public function getSlot($s){ public function getSlot($s){
$i = $this->getSlotIndex($s); $i = $this->getSlotIndex($s);
if($i === false or $i < 0){ if($i === false or $i < 0){