mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-06-27 13:49:55 +00:00
Implemented swiftness, added invisible status to FloatingTextParticle
This commit is contained in:
parent
b42424eb22
commit
58253be0a0
@ -30,7 +30,7 @@ use pocketmine\Server;
|
|||||||
class Effect{
|
class Effect{
|
||||||
const SPEED = 1;
|
const SPEED = 1;
|
||||||
const SLOWNESS = 2;
|
const SLOWNESS = 2;
|
||||||
//TODO: const SWIFTNESS = 3;
|
const SWIFTNESS = 3;
|
||||||
const FATIGUE = 4;
|
const FATIGUE = 4;
|
||||||
const MINING_FATIGUE = 4;
|
const MINING_FATIGUE = 4;
|
||||||
//TODO: const STRENGTH = 5;
|
//TODO: const STRENGTH = 5;
|
||||||
@ -61,7 +61,7 @@ class Effect{
|
|||||||
|
|
||||||
self::$effects[Effect::SPEED] = new Effect(Effect::SPEED, "Speed", 124, 175, 198);
|
self::$effects[Effect::SPEED] = new Effect(Effect::SPEED, "Speed", 124, 175, 198);
|
||||||
self::$effects[Effect::SLOWNESS] = new Effect(Effect::SLOWNESS, "Slowness", 90, 108, 129, true);
|
self::$effects[Effect::SLOWNESS] = new Effect(Effect::SLOWNESS, "Slowness", 90, 108, 129, true);
|
||||||
//self::$effects[Effect::SWIFTNESS] = new Effect(Effect::SWIFTNESS, "Swiftness", 217, 192, 67);
|
self::$effects[Effect::SWIFTNESS] = new Effect(Effect::SWIFTNESS, "Swiftness", 217, 192, 67);
|
||||||
self::$effects[Effect::FATIGUE] = new Effect(Effect::FATIGUE, "Mining Fatigue", 74, 66, 23, true);
|
self::$effects[Effect::FATIGUE] = new Effect(Effect::FATIGUE, "Mining Fatigue", 74, 66, 23, true);
|
||||||
//self::$effects[Effect::STRENGTH] = new Effect(Effect::STRENGTH, "Strength", 147, 36, 35);
|
//self::$effects[Effect::STRENGTH] = new Effect(Effect::STRENGTH, "Strength", 147, 36, 35);
|
||||||
//self::$effects[Effect::HEALING] = new InstantEffect(Effect::HEALING, "Healing", 248, 36, 35);
|
//self::$effects[Effect::HEALING] = new InstantEffect(Effect::HEALING, "Healing", 248, 36, 35);
|
||||||
|
@ -285,6 +285,10 @@ abstract class Entity extends Location implements Metadatable{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getEffect($effectId){
|
||||||
|
return isset($this->effects[$effectId]) ? $this->effects[$effectId] : null;
|
||||||
|
}
|
||||||
|
|
||||||
public function hasEffect($effectId){
|
public function hasEffect($effectId){
|
||||||
return isset($this->effects[$effectId]);
|
return isset($this->effects[$effectId]);
|
||||||
}
|
}
|
||||||
|
@ -98,6 +98,7 @@ use pocketmine\utils\ReversePriorityQueue;
|
|||||||
use pocketmine\utils\TextFormat;
|
use pocketmine\utils\TextFormat;
|
||||||
use pocketmine\level\particle\Particle;
|
use pocketmine\level\particle\Particle;
|
||||||
use pocketmine\level\sound\Sound;
|
use pocketmine\level\sound\Sound;
|
||||||
|
use pocketmine\entity\Effect;
|
||||||
use pocketmine\level\particle\DestroyBlockParticle;
|
use pocketmine\level\particle\DestroyBlockParticle;
|
||||||
|
|
||||||
#include <rules/Level.h>
|
#include <rules/Level.h>
|
||||||
@ -1289,6 +1290,9 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
}
|
}
|
||||||
|
|
||||||
$breakTime = $player->isCreative() ? 0.15 : $target->getBreakTime($item);
|
$breakTime = $player->isCreative() ? 0.15 : $target->getBreakTime($item);
|
||||||
|
if($player->hasEffect(Effect::SWIFTNESS)){
|
||||||
|
$breakTime *= pow(0.80, $player->getEffect(Effect::SWIFTNESS)->getAmplifier() + 1);
|
||||||
|
}
|
||||||
|
|
||||||
if(!$ev->getInstaBreak() and ($player->lastBreak + $breakTime) >= microtime(true)){
|
if(!$ev->getInstaBreak() and ($player->lastBreak + $breakTime) >= microtime(true)){
|
||||||
return false;
|
return false;
|
||||||
|
@ -38,6 +38,7 @@ class FloatingTextParticle extends Particle{
|
|||||||
protected $text;
|
protected $text;
|
||||||
protected $title;
|
protected $title;
|
||||||
protected $entityId;
|
protected $entityId;
|
||||||
|
protected $invisible = false;
|
||||||
|
|
||||||
public function __construct(Vector3 $pos, $text, $title = ""){
|
public function __construct(Vector3 $pos, $text, $title = ""){
|
||||||
parent::__construct($pos->x, $pos->y, $pos->z);
|
parent::__construct($pos->x, $pos->y, $pos->z);
|
||||||
@ -52,6 +53,14 @@ class FloatingTextParticle extends Particle{
|
|||||||
public function setTitle($title){
|
public function setTitle($title){
|
||||||
$this->title = $title;
|
$this->title = $title;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isInvisible(){
|
||||||
|
return $this->invisible;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setInvisible($value = true){
|
||||||
|
$this->invisible = (bool) $value;
|
||||||
|
}
|
||||||
|
|
||||||
public function encode(){
|
public function encode(){
|
||||||
$p = [];
|
$p = [];
|
||||||
@ -66,24 +75,27 @@ class FloatingTextParticle extends Particle{
|
|||||||
$p[] = $pk0;
|
$p[] = $pk0;
|
||||||
}
|
}
|
||||||
|
|
||||||
$pk = new AddPlayerPacket();
|
if(!$this->invisible){
|
||||||
$pk->eid = $this->entityId;
|
|
||||||
$pk->username = $this->title . "\n" . $this->text;
|
$pk = new AddPlayerPacket();
|
||||||
$pk->clientID = $this->entityId;
|
$pk->eid = $this->entityId;
|
||||||
$pk->x = $this->x;
|
$pk->username = $this->title . "\n" . $this->text;
|
||||||
$pk->y = $this->y - 2;
|
$pk->clientID = $this->entityId;
|
||||||
$pk->z = $this->z;
|
$pk->x = $this->x;
|
||||||
$pk->yaw = 0;
|
$pk->y = $this->y - 2;
|
||||||
$pk->pitch = 0;
|
$pk->z = $this->z;
|
||||||
$pk->item = 0;
|
$pk->yaw = 0;
|
||||||
$pk->meta = 0;
|
$pk->pitch = 0;
|
||||||
$pk->metadata = [
|
$pk->item = 0;
|
||||||
Entity::DATA_FLAGS => [Entity::DATA_TYPE_BYTE, 1 << Entity::DATA_FLAG_INVISIBLE],
|
$pk->meta = 0;
|
||||||
Entity::DATA_AIR => [Entity::DATA_TYPE_SHORT, 300],
|
$pk->metadata = [
|
||||||
Entity::DATA_SHOW_NAMETAG => [Entity::DATA_TYPE_BYTE, 1]
|
Entity::DATA_FLAGS => [Entity::DATA_TYPE_BYTE, 1 << Entity::DATA_FLAG_INVISIBLE],
|
||||||
];
|
Entity::DATA_AIR => [Entity::DATA_TYPE_SHORT, 300],
|
||||||
|
Entity::DATA_SHOW_NAMETAG => [Entity::DATA_TYPE_BYTE, 1]
|
||||||
|
];
|
||||||
|
|
||||||
$p[] = $pk;
|
$p[] = $pk;
|
||||||
|
}
|
||||||
|
|
||||||
return $pk;
|
return $pk;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user