mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-09-06 01:46:04 +00:00
Item factory refactor and added capability to register custom items
This commit is contained in:
@ -83,6 +83,7 @@ use pocketmine\inventory\ShapedRecipe;
|
||||
use pocketmine\inventory\ShapelessRecipe;
|
||||
use pocketmine\inventory\SimpleTransactionGroup;
|
||||
use pocketmine\item\Item;
|
||||
use pocketmine\item\ItemFactory;
|
||||
use pocketmine\level\ChunkLoader;
|
||||
use pocketmine\level\format\Chunk;
|
||||
use pocketmine\level\Level;
|
||||
@ -1416,7 +1417,7 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{
|
||||
}
|
||||
|
||||
if($entity instanceof Arrow and $entity->hadCollision){
|
||||
$item = Item::get(Item::ARROW, 0, 1);
|
||||
$item = ItemFactory::get(Item::ARROW, 0, 1);
|
||||
if($this->isSurvival() and !$this->inventory->canAddItem($item)){
|
||||
continue;
|
||||
}
|
||||
@ -2320,7 +2321,7 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{
|
||||
if($this->isSurvival()){
|
||||
if($item->isTool()){
|
||||
if($item->useOn($target) and $item->getDamage() >= $item->getMaxDurability()){
|
||||
$this->inventory->setItemInHand(Item::get(Item::AIR, 0, 1));
|
||||
$this->inventory->setItemInHand(ItemFactory::get(Item::AIR, 0, 1));
|
||||
}else{
|
||||
$this->inventory->setItemInHand($item);
|
||||
}
|
||||
@ -2453,7 +2454,7 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{
|
||||
$snowball->setMotion($snowball->getMotion()->multiply($f));
|
||||
if($this->isSurvival()){
|
||||
$item->setCount($item->getCount() - 1);
|
||||
$this->inventory->setItemInHand($item->getCount() > 0 ? $item : Item::get(Item::AIR));
|
||||
$this->inventory->setItemInHand($item->getCount() > 0 ? $item : ItemFactory::get(Item::AIR));
|
||||
}
|
||||
if($snowball instanceof Projectile){
|
||||
$this->server->getPluginManager()->callEvent($projectileEv = new ProjectileLaunchEvent($snowball));
|
||||
@ -2521,7 +2522,7 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{
|
||||
if($this->startAction > -1 and $this->getGenericFlag(self::DATA_FLAG_ACTION)){
|
||||
if($this->inventory->getItemInHand()->getId() === Item::BOW){
|
||||
$bow = $this->inventory->getItemInHand();
|
||||
if($this->isSurvival() and !$this->inventory->contains(Item::get(Item::ARROW, 0, 1))){
|
||||
if($this->isSurvival() and !$this->inventory->contains(ItemFactory::get(Item::ARROW, 0, 1))){
|
||||
$this->inventory->sendContents($this);
|
||||
break;
|
||||
}
|
||||
@ -2562,10 +2563,10 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{
|
||||
}else{
|
||||
$ev->getProjectile()->setMotion($ev->getProjectile()->getMotion()->multiply($ev->getForce()));
|
||||
if($this->isSurvival()){
|
||||
$this->inventory->removeItem(Item::get(Item::ARROW, 0, 1));
|
||||
$this->inventory->removeItem(ItemFactory::get(Item::ARROW, 0, 1));
|
||||
$bow->setDamage($bow->getDamage() + 1);
|
||||
if($bow->getDamage() >= 385){
|
||||
$this->inventory->setItemInHand(Item::get(Item::AIR, 0, 0));
|
||||
$this->inventory->setItemInHand(ItemFactory::get(Item::AIR, 0, 0));
|
||||
}else{
|
||||
$this->inventory->setItemInHand($bow);
|
||||
}
|
||||
@ -2602,7 +2603,7 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{
|
||||
$slot = $this->inventory->getItemInHand();
|
||||
--$slot->count;
|
||||
$this->inventory->setItemInHand($slot);
|
||||
$this->inventory->addItem(Item::get(Item::BUCKET, 0, 1));
|
||||
$this->inventory->addItem(ItemFactory::get(Item::BUCKET, 0, 1));
|
||||
}
|
||||
|
||||
$this->removeAllEffects();
|
||||
@ -2757,7 +2758,7 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{
|
||||
return true;
|
||||
}
|
||||
|
||||
$this->inventory->setItemInHand(Item::get(Item::AIR, 0, 1));
|
||||
$this->inventory->setItemInHand(ItemFactory::get(Item::AIR, 0, 1));
|
||||
$motion = $this->getDirectionVector()->multiply(0.4);
|
||||
|
||||
$this->level->dropItem($this->add(0, 1.3, 0), $item, $motion, 40);
|
||||
@ -2983,7 +2984,7 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{
|
||||
$newItem = clone $item;
|
||||
$newItem->setCount($item->getCount() - $count);
|
||||
}else{
|
||||
$newItem = Item::get(Item::AIR, 0, 0);
|
||||
$newItem = ItemFactory::get(Item::AIR, 0, 0);
|
||||
}
|
||||
|
||||
$this->inventory->setItem($slot, $newItem);
|
||||
@ -3015,7 +3016,7 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{
|
||||
case Item::CAKE:
|
||||
//TODO: detect complex recipes like cake that leave remains
|
||||
$this->awardAchievement("bakeCake");
|
||||
$this->inventory->addItem(Item::get(Item::BUCKET, 0, 3));
|
||||
$this->inventory->addItem(ItemFactory::get(Item::BUCKET, 0, 3));
|
||||
break;
|
||||
case Item::STONE_PICKAXE:
|
||||
case Item::GOLDEN_PICKAXE:
|
||||
|
Reference in New Issue
Block a user