Fixed items being consumed on CREATIVE mode

This commit is contained in:
Shoghi Cervantes 2013-06-07 20:02:25 +02:00
parent 6fa0ef652e
commit 9d1369bfe9
7 changed files with 30 additions and 11 deletions

View File

@ -266,10 +266,11 @@ class BlockAPI{
$player->lastBreak = microtime(true);
if($this->server->api->dhandle("player.block.break", array("player" => $player, "target" => $target, "item" => $item)) !== false){
$drops = $target->getDrops($item, $player);
if($target->onBreak($item, $player) === false){
return $this->cancelAction($target, $player, false);
}
$item->useOn($target);
$drops = $target->getDrops($item, $player);
}else{
return $this->cancelAction($target, $player, false);
}

View File

@ -365,13 +365,19 @@ class Player{
return;
$s = (int) $s;
if(!isset($this->inventory[$s])){
return false;
$this->dataPacket(MC_CONTAINER_SET_SLOT, array(
"windowid" => 0,
"slot" => (int) $s,
"block" => AIR,
"stack" => 0,
"meta" => 0,
));
}
$slot = $this->inventory[$s];
$this->dataPacket(MC_CONTAINER_SET_SLOT, array(
"windowid" => 0,
"slot" => ((int) $s) + 9,
"slot" => (int) $s,
"block" => $slot->getID(),
"stack" => $slot->count,
"meta" => $slot->getMetadata(),
@ -1349,7 +1355,7 @@ class Player{
$damage = 1;//$this->server->difficulty;
}
$target->harm($damage, $this->eid);
if($slot->isTool() === true){
if($slot->isTool() === true and ($this->gamemode & 0x01) === 0){
$slot->useOn($target);
}
}
@ -1630,7 +1636,7 @@ class Player{
$this->dataPacket(MC_CONTAINER_SET_CONTENT, array(
"windowid" => 0,
"count" => count($this->inventory),
"slots" => $this->inventory
"slots" => $this->inventory,
));
}

View File

@ -76,7 +76,9 @@ class MelonStemBlock extends FlowableBlock{
if($item->getID() === DYE and $item->getMetadata() === 0x0F){ //Bonemeal
$this->meta = 0x07;
$this->level->setBlock($this, $this);
$item->count--;
if(($player->gamemode & 0x01) === 0){
$item->count--;
}
return true;
}
return false;

View File

@ -55,7 +55,9 @@ class SaplingBlock extends FlowableBlock{
public function onActivate(Item $item, Player $player){
if($item->getID() === DYE and $item->getMetadata() === 0x0F){ //Bonemeal
TreeObject::growTree($this->level, $this, new Random(), $this->meta & 0x03);
$item->count--;
if(($player->gamemode & 0x01) === 0){
$item->count--;
}
return true;
}
return false;

View File

@ -45,7 +45,9 @@ class WheatBlock extends FlowableBlock{
if($item->getID() === DYE and $item->getMetadata() === 0x0F){ //Bonemeal
$this->meta = 0x07;
$this->level->setBlock($this, $this);
$item->count--;
if(($player->gamemode & 0x01) === 0){
$item->count--;
}
return true;
}
return false;

View File

@ -33,7 +33,9 @@ class DirtBlock extends SolidBlock{
public function onActivate(Item $item, Player $player){
if($item->isHoe()){
$item->useOn($this);
if(($this->gamemode & 0x01) === 0){
$item->useOn($this);
}
$this->level->setBlock($this, BlockAPI::get(FARMLAND, 0));
return true;
}

View File

@ -38,11 +38,15 @@ class GrassBlock extends SolidBlock{
public function onActivate(Item $item, Player $player){
if($item->getID() === DYE and $item->getMetadata() === 0x0F){
$item->count--;
if(($player->gamemode & 0x01) === 0){
$item->count--;
}
TallGrassObject::growGrass($this->level, $this, new Random());
return true;
}elseif($item->isHoe()){
$item->useOn($this);
if(($this->gamemode & 0x01) === 0){
$item->useOn($this);
}
$this->level->setBlock($this, new FarmlandBlock());
return true;
}