mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-06-12 14:35:35 +00:00
Implemented Infinity enchantment (#2259)
This commit is contained in:
parent
814a949580
commit
1c0b49343c
@ -24,6 +24,7 @@ declare(strict_types=1);
|
|||||||
namespace pocketmine\item;
|
namespace pocketmine\item;
|
||||||
|
|
||||||
use pocketmine\entity\Entity;
|
use pocketmine\entity\Entity;
|
||||||
|
use pocketmine\entity\projectile\Arrow as ArrowEntity;
|
||||||
use pocketmine\entity\projectile\Projectile;
|
use pocketmine\entity\projectile\Projectile;
|
||||||
use pocketmine\event\entity\EntityShootBowEvent;
|
use pocketmine\event\entity\EntityShootBowEvent;
|
||||||
use pocketmine\event\entity\ProjectileLaunchEvent;
|
use pocketmine\event\entity\ProjectileLaunchEvent;
|
||||||
@ -65,6 +66,10 @@ class Bow extends Tool{
|
|||||||
|
|
||||||
$entity = Entity::createEntity("Arrow", $player->getLevel(), $nbt, $player, $force == 2);
|
$entity = Entity::createEntity("Arrow", $player->getLevel(), $nbt, $player, $force == 2);
|
||||||
if($entity instanceof Projectile){
|
if($entity instanceof Projectile){
|
||||||
|
$infinity = $this->hasEnchantment(Enchantment::INFINITY);
|
||||||
|
if($infinity and $entity instanceof ArrowEntity){
|
||||||
|
$entity->setPickupMode(ArrowEntity::PICKUP_CREATIVE);
|
||||||
|
}
|
||||||
if(($powerLevel = $this->getEnchantmentLevel(Enchantment::POWER)) > 0){
|
if(($powerLevel = $this->getEnchantmentLevel(Enchantment::POWER)) > 0){
|
||||||
$entity->setBaseDamage($entity->getBaseDamage() + (($powerLevel + 1) / 2));
|
$entity->setBaseDamage($entity->getBaseDamage() + (($powerLevel + 1) / 2));
|
||||||
}
|
}
|
||||||
@ -84,7 +89,9 @@ class Bow extends Tool{
|
|||||||
}else{
|
}else{
|
||||||
$entity->setMotion($entity->getMotion()->multiply($ev->getForce()));
|
$entity->setMotion($entity->getMotion()->multiply($ev->getForce()));
|
||||||
if($player->isSurvival()){
|
if($player->isSurvival()){
|
||||||
|
if(!$infinity){ //TODO: tipped arrows are still consumed when Infinity is applied
|
||||||
$player->getInventory()->removeItem(ItemFactory::get(Item::ARROW, 0, 1));
|
$player->getInventory()->removeItem(ItemFactory::get(Item::ARROW, 0, 1));
|
||||||
|
}
|
||||||
$this->applyDamage(1);
|
$this->applyDamage(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -123,6 +123,8 @@ class Enchantment{
|
|||||||
|
|
||||||
self::registerEnchantment(new Enchantment(self::POWER, "%enchantment.arrowDamage", self::RARITY_COMMON, self::SLOT_BOW, self::SLOT_NONE, 5));
|
self::registerEnchantment(new Enchantment(self::POWER, "%enchantment.arrowDamage", self::RARITY_COMMON, self::SLOT_BOW, self::SLOT_NONE, 5));
|
||||||
|
|
||||||
|
self::registerEnchantment(new Enchantment(self::INFINITY, "%enchantment.arrowInfinite", self::RARITY_MYTHIC, self::SLOT_BOW, self::SLOT_NONE, 1));
|
||||||
|
|
||||||
self::registerEnchantment(new Enchantment(self::VANISHING, "%enchantment.curse.vanishing", self::RARITY_MYTHIC, self::SLOT_NONE, self::SLOT_ALL, 1));
|
self::registerEnchantment(new Enchantment(self::VANISHING, "%enchantment.curse.vanishing", self::RARITY_MYTHIC, self::SLOT_NONE, self::SLOT_ALL, 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user