Fixed #1614, possible solution for #1678

This commit is contained in:
Shoghi Cervantes 2014-07-15 13:17:29 +02:00
parent 6e77901453
commit bd2cb4b851
5 changed files with 7 additions and 6 deletions

View File

@ -1411,11 +1411,11 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{
if($blockVector->distance($this) > 10){ if($blockVector->distance($this) > 10){
}elseif(($this->gamemode & 0x01) === 1){ }elseif(($this->gamemode & 0x01) === 1){
$item = $this->inventory->getItemInHand();; $item = $this->inventory->getItemInHand();
if($this->getLevel()->useItemOn($blockVector, $item, $packet->face, $packet->fx, $packet->fy, $packet->fz, $this) === true){ if($this->getLevel()->useItemOn($blockVector, $item, $packet->face, $packet->fx, $packet->fy, $packet->fz, $this) === true){
break; break;
} }
}elseif($this->inventory->getItemInHand()->getID() !== $packet->item or ($this->inventory->getItemInHand()->isTool() === false and $this->inventory->getItemInHand()->getDamage() !== $packet->meta)){ }elseif($this->inventory->getItemInHand()->getID() !== $packet->item or (($damage = $this->inventory->getItemInHand()->getDamage()) !== $packet->meta and $damage !== null)){
$this->inventory->sendHeldItem($this); $this->inventory->sendHeldItem($this);
}else{ }else{
$item = clone $this->inventory->getItemInHand(); $item = clone $this->inventory->getItemInHand();

View File

@ -83,7 +83,7 @@ class PlayerInventory extends BaseInventory{
if($item instanceof Item){ if($item instanceof Item){
return $item; return $item;
}else{ }else{
return Item::get(Item::AIR); return Item::get(Item::AIR, 0, 0);
} }
} }

View File

@ -33,7 +33,7 @@ class Block extends Item{
} }
public function setDamage($meta){ public function setDamage($meta){
$this->meta = $meta !== null ? $meta & 0xFF : null; $this->meta = $meta !== null ? $meta & 0xf : null;
$this->block->setDamage($this->meta); $this->block->setDamage($this->meta);
} }

View File

@ -898,6 +898,7 @@ class Level implements ChunkManager, Metadatable{
} }
if($player instanceof Player){ if($player instanceof Player){
$ev = new BlockPlaceEvent($player, $hand, $block, $target, $item); $ev = new BlockPlaceEvent($player, $hand, $block, $target, $item);
if(!$player->isOp() and ($distance = $this->server->getConfigInt("spawn-protection", 16)) > -1){ if(!$player->isOp() and ($distance = $this->server->getConfigInt("spawn-protection", 16)) > -1){

View File

@ -48,9 +48,9 @@ LOOPS=0
set +e set +e
while [ "$LOOPS" -eq 0 ] || [ "$DO_LOOP" == "yes" ]; do while [ "$LOOPS" -eq 0 ] || [ "$DO_LOOP" == "yes" ]; do
if [ "$DO_LOOP" == "yes" ]; then if [ "$DO_LOOP" == "yes" ]; then
"$PHP_BINARY" "$POCKETMINE_FILE" "$@" "$PHP_BINARY" "$POCKETMINE_FILE" $@
else else
exec "$PHP_BINARY" "$POCKETMINE_FILE" "$@" exec "$PHP_BINARY" "$POCKETMINE_FILE" $@
fi fi
((LOOPS++)) ((LOOPS++))
done done