mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-04-20 16:00:20 +00:00
Merge 'minor-next' into 'major-next'
Automatic merge performed by: https://github.com/pmmp/RestrictedActions/actions/runs/12701510185
This commit is contained in:
commit
976fc63567
@ -1058,8 +1058,7 @@ class NetworkSession{
|
||||
];
|
||||
|
||||
$layers = [
|
||||
//TODO: dynamic flying speed! FINALLY!!!!!!!!!!!!!!!!!
|
||||
new AbilitiesLayer(AbilitiesLayer::LAYER_BASE, $boolAbilities, 0.05, 0.1),
|
||||
new AbilitiesLayer(AbilitiesLayer::LAYER_BASE, $boolAbilities, $for->getFlightSpeedMultiplier(), 0.1),
|
||||
];
|
||||
if(!$for->hasBlockCollision()){
|
||||
//TODO: HACK! In 1.19.80, the client starts falling in our faux spectator mode when it clips into a
|
||||
|
@ -185,6 +185,8 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{
|
||||
private const MAX_REACH_DISTANCE_SURVIVAL = 7;
|
||||
private const MAX_REACH_DISTANCE_ENTITY_INTERACTION = 8;
|
||||
|
||||
public const DEFAULT_FLIGHT_SPEED_MULTIPLIER = 0.05;
|
||||
|
||||
public const TAG_FIRST_PLAYED = "firstPlayed"; //TAG_Long
|
||||
public const TAG_LAST_PLAYED = "lastPlayed"; //TAG_Long
|
||||
private const TAG_GAME_MODE = "playerGameType"; //TAG_Int
|
||||
@ -286,6 +288,8 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{
|
||||
protected bool $blockCollision = true;
|
||||
protected bool $flying = false;
|
||||
|
||||
protected float $flightSpeedMultiplier = self::DEFAULT_FLIGHT_SPEED_MULTIPLIER;
|
||||
|
||||
/** @phpstan-var positive-int|null */
|
||||
protected ?int $lineHeight = null;
|
||||
protected string $locale = "en_US";
|
||||
@ -523,6 +527,41 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{
|
||||
return $this->flying;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the player's flight speed multiplier.
|
||||
*
|
||||
* Normal flying speed in blocks-per-tick is (multiplier * 10) blocks per tick.
|
||||
* When sprint-flying, this is doubled to 20.
|
||||
*
|
||||
* If set to zero, the player will not be able to move in the xz plane when flying.
|
||||
* Negative values will invert the controls.
|
||||
*
|
||||
* Note: Movement speed attribute does not influence flight speed.
|
||||
*
|
||||
* @see Player::DEFAULT_FLIGHT_SPEED_MULTIPLIER
|
||||
*/
|
||||
public function setFlightSpeedMultiplier(float $flightSpeedMultiplier) : void{
|
||||
if($this->flightSpeedMultiplier !== $flightSpeedMultiplier){
|
||||
$this->flightSpeedMultiplier = $flightSpeedMultiplier;
|
||||
$this->getNetworkSession()->syncAbilities($this);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the player's flight speed multiplier.
|
||||
*
|
||||
* Normal flying speed in blocks-per-tick is (multiplier * 10) blocks per tick.
|
||||
* When sprint-flying, this is doubled to 20.
|
||||
*
|
||||
* If set to zero, the player will not be able to move in the xz plane when flying.
|
||||
* Negative values will invert the controls.
|
||||
*
|
||||
* @see Player::DEFAULT_FLIGHT_SPEED_MULTIPLIER
|
||||
*/
|
||||
public function getFlightSpeedMultiplier() : float{
|
||||
return $this->flightSpeedMultiplier;
|
||||
}
|
||||
|
||||
public function setAutoJump(bool $value) : void{
|
||||
if($this->autoJump !== $value){
|
||||
$this->autoJump = $value;
|
||||
|
Loading…
x
Reference in New Issue
Block a user