mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-05-15 18:29:46 +00:00
Merge branch 'master' into api3/network
This commit is contained in:
commit
52f2596dc5
@ -3487,6 +3487,9 @@ class Player extends Human implements CommandSender, InventoryHolder, ChunkLoade
|
||||
foreach($this->usedChunks as $index => $d){
|
||||
Level::getXZ($index, $chunkX, $chunkZ);
|
||||
$this->level->unregisterChunkLoader($this, $chunkX, $chunkZ);
|
||||
foreach($this->level->getChunkEntities($chunkX, $chunkZ) as $entity){
|
||||
$entity->despawnFrom($this, false);
|
||||
}
|
||||
unset($this->usedChunks[$index]);
|
||||
}
|
||||
|
||||
|
@ -704,11 +704,13 @@ abstract class Entity extends Location implements Metadatable{
|
||||
/**
|
||||
* @param Player $player
|
||||
*/
|
||||
public function despawnFrom(Player $player){
|
||||
public function despawnFrom(Player $player, bool $send = true){
|
||||
if(isset($this->hasSpawned[$player->getLoaderId()])){
|
||||
$pk = new RemoveEntityPacket();
|
||||
$pk->eid = $this->id;
|
||||
$player->dataPacket($pk);
|
||||
if($send){
|
||||
$pk = new RemoveEntityPacket();
|
||||
$pk->eid = $this->id;
|
||||
$player->dataPacket($pk);
|
||||
}
|
||||
unset($this->hasSpawned[$player->getLoaderId()]);
|
||||
}
|
||||
}
|
||||
|
@ -503,17 +503,6 @@ class Human extends Creature implements ProjectileSource, InventoryHolder{
|
||||
}
|
||||
}
|
||||
|
||||
public function despawnFrom(Player $player){
|
||||
if(isset($this->hasSpawned[$player->getLoaderId()])){
|
||||
|
||||
$pk = new RemoveEntityPacket();
|
||||
$pk->eid = $this->getId();
|
||||
|
||||
$player->dataPacket($pk);
|
||||
unset($this->hasSpawned[$player->getLoaderId()]);
|
||||
}
|
||||
}
|
||||
|
||||
public function close(){
|
||||
if(!$this->closed){
|
||||
if(!($this instanceof Player) or $this->loggedIn){
|
||||
|
@ -1522,10 +1522,10 @@ class Level implements ChunkManager, Metadatable{
|
||||
return false;
|
||||
}
|
||||
|
||||
$breakTime = $target->getBreakTime($item);
|
||||
$breakTime = ceil($target->getBreakTime($item) * 20);
|
||||
|
||||
if($player->isCreative() and $breakTime > 0.15){
|
||||
$breakTime = 0.15;
|
||||
if($player->isCreative() and $breakTime > 3){
|
||||
$breakTime = 3;
|
||||
}
|
||||
|
||||
if($player->hasEffect(Effect::HASTE)){
|
||||
@ -1536,13 +1536,13 @@ class Level implements ChunkManager, Metadatable{
|
||||
$breakTime *= 1 + (0.3 * ($player->getEffect(Effect::MINING_FATIGUE)->getAmplifier() + 1));
|
||||
}
|
||||
|
||||
$breakTime -= 0.05; //1 tick compensation
|
||||
$breakTime -= 1; //1 tick compensation
|
||||
|
||||
if(!$ev->getInstaBreak() and ($player->lastBreak + $breakTime) > microtime(true)){
|
||||
if(!$ev->getInstaBreak() and ((ceil($player->lastBreak * 20)) + $breakTime) > ceil(microtime(true) * 20)){
|
||||
return false;
|
||||
}
|
||||
|
||||
$player->lastBreak = microtime(true);
|
||||
$player->lastBreak = PHP_INT_MAX;
|
||||
|
||||
$drops = $ev->getDrops();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user