Item factory refactor and added capability to register custom items

This commit is contained in:
Dylan K. Taylor
2017-08-20 19:11:21 +01:00
parent 604d11a8fd
commit 876659cc73
66 changed files with 491 additions and 347 deletions

View File

@ -27,6 +27,7 @@ use pocketmine\block\BlockFactory;
use pocketmine\event\entity\EntityBlockChangeEvent;
use pocketmine\event\entity\EntityDamageEvent;
use pocketmine\item\Item as ItemItem;
use pocketmine\item\ItemFactory;
use pocketmine\math\Vector3;
use pocketmine\nbt\tag\ByteTag;
use pocketmine\nbt\tag\IntTag;
@ -95,7 +96,7 @@ class FallingSand extends Entity{
$block = $this->level->getBlock($pos);
if($block->getId() > 0 and $block->isTransparent() and !$block->canBeReplaced()){
//FIXME: anvils are supposed to destroy torches
$this->getLevel()->dropItem($this, ItemItem::get($this->getBlock(), $this->getDamage(), 1));
$this->getLevel()->dropItem($this, ItemFactory::get($this->getBlock(), $this->getDamage(), 1));
}else{
$this->server->getPluginManager()->callEvent($ev = new EntityBlockChangeEvent($this, $block, BlockFactory::get($this->getBlock(), $this->getDamage())));
if(!$ev->isCancelled()){

View File

@ -26,6 +26,7 @@ namespace pocketmine\entity;
use pocketmine\event\entity\EntityDamageByEntityEvent;
use pocketmine\event\entity\EntityDamageEvent;
use pocketmine\item\Item as ItemItem;
use pocketmine\item\ItemFactory;
use pocketmine\math\Vector3;
use pocketmine\network\mcpe\protocol\AddEntityPacket;
use pocketmine\network\mcpe\protocol\EntityEventPacket;
@ -147,7 +148,7 @@ class Squid extends WaterAnimal{
public function getDrops() : array{
return [
ItemItem::get(ItemItem::DYE, 0, mt_rand(1, 3))
ItemFactory::get(ItemItem::DYE, 0, mt_rand(1, 3))
];
}
}

View File

@ -25,6 +25,7 @@ namespace pocketmine\entity;
use pocketmine\event\entity\EntityDamageByEntityEvent;
use pocketmine\item\Item as ItemItem;
use pocketmine\item\ItemFactory;
use pocketmine\network\mcpe\protocol\AddEntityPacket;
use pocketmine\Player;
@ -59,19 +60,19 @@ class Zombie extends Monster{
public function getDrops() : array{
$drops = [
ItemItem::get(ItemItem::FEATHER, 0, 1)
ItemFactory::get(ItemItem::FEATHER, 0, 1)
];
if($this->lastDamageCause instanceof EntityDamageByEntityEvent and $this->lastDamageCause->getEntity() instanceof Player){
if(mt_rand(0, 199) < 5){
switch(mt_rand(0, 2)){
case 0:
$drops[] = ItemItem::get(ItemItem::IRON_INGOT, 0, 1);
$drops[] = ItemFactory::get(ItemItem::IRON_INGOT, 0, 1);
break;
case 1:
$drops[] = ItemItem::get(ItemItem::CARROT, 0, 1);
$drops[] = ItemFactory::get(ItemItem::CARROT, 0, 1);
break;
case 2:
$drops[] = ItemItem::get(ItemItem::POTATO, 0, 1);
$drops[] = ItemFactory::get(ItemItem::POTATO, 0, 1);
break;
}
}