mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-10-18 20:14:31 +00:00
Merge branch 'master' into mcpe-0.11
This commit is contained in:
@@ -69,6 +69,7 @@ use pocketmine\inventory\InventoryHolder;
|
||||
use pocketmine\inventory\PlayerInventory;
|
||||
use pocketmine\inventory\SimpleTransactionGroup;
|
||||
use pocketmine\inventory\StonecutterShapelessRecipe;
|
||||
use pocketmine\item\Armor;
|
||||
use pocketmine\item\Item;
|
||||
use pocketmine\level\format\FullChunk;
|
||||
use pocketmine\level\format\LevelProvider;
|
||||
@@ -217,6 +218,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{
|
||||
public function setBanned($value){
|
||||
if($value === true){
|
||||
$this->server->getNameBans()->addBan($this->getName(), null, null, null);
|
||||
$this->kick("You have been banned");
|
||||
}else{
|
||||
$this->server->getNameBans()->remove($this->getName());
|
||||
}
|
||||
@@ -1250,7 +1252,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{
|
||||
|
||||
$this->entityBaseTick(1);
|
||||
|
||||
if(!$this->forceMovement and $this->speed and $this->isSurvival()){
|
||||
if($this->forceMovement === null and $this->speed and $this->isSurvival()){
|
||||
$speed = sqrt($this->speed->x ** 2 + $this->speed->z ** 2);
|
||||
if($speed > 0.45){
|
||||
$this->highSpeedTicks += $speed > 3 ? 2 : 1;
|
||||
@@ -1280,10 +1282,8 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{
|
||||
if(!$this->hasEffect(Effect::JUMP) and $diff > 0.6 and $expectedVelocity < $this->speed->y and !$this->server->getAllowFlight()){
|
||||
if($this->inAirTicks < 100){
|
||||
$this->setMotion(new Vector3(0, $expectedVelocity, 0));
|
||||
}else{
|
||||
if($this->kick("Flying is not enabled on this server")){
|
||||
return false;
|
||||
}
|
||||
}elseif($this->kick("Flying is not enabled on this server")){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1975,6 +1975,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{
|
||||
EntityDamageEvent::MODIFIER_BASE => isset($damageTable[$item->getId()]) ? $damageTable[$item->getId()] : 1,
|
||||
];
|
||||
|
||||
$points = 0;
|
||||
if($this->distance($target) > 8){
|
||||
$cancelled = true;
|
||||
}elseif($target instanceof Player){
|
||||
@@ -1984,34 +1985,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{
|
||||
$cancelled = true;
|
||||
}
|
||||
|
||||
$armorValues = [
|
||||
Item::LEATHER_CAP => 1,
|
||||
Item::LEATHER_TUNIC => 3,
|
||||
Item::LEATHER_PANTS => 2,
|
||||
Item::LEATHER_BOOTS => 1,
|
||||
Item::CHAIN_HELMET => 1,
|
||||
Item::CHAIN_CHESTPLATE => 5,
|
||||
Item::CHAIN_LEGGINGS => 4,
|
||||
Item::CHAIN_BOOTS => 1,
|
||||
Item::GOLD_HELMET => 1,
|
||||
Item::GOLD_CHESTPLATE => 5,
|
||||
Item::GOLD_LEGGINGS => 3,
|
||||
Item::GOLD_BOOTS => 1,
|
||||
Item::IRON_HELMET => 2,
|
||||
Item::IRON_CHESTPLATE => 6,
|
||||
Item::IRON_LEGGINGS => 5,
|
||||
Item::IRON_BOOTS => 2,
|
||||
Item::DIAMOND_HELMET => 3,
|
||||
Item::DIAMOND_CHESTPLATE => 8,
|
||||
Item::DIAMOND_LEGGINGS => 6,
|
||||
Item::DIAMOND_BOOTS => 3,
|
||||
];
|
||||
$points = 0;
|
||||
foreach($target->getInventory()->getArmorContents() as $index => $i){
|
||||
if(isset($armorValues[$i->getId()])){
|
||||
$points += $armorValues[$i->getId()];
|
||||
}
|
||||
}
|
||||
$points = $target->getInventory()->getArmorPoints();
|
||||
|
||||
$damage[EntityDamageEvent::MODIFIER_ARMOR] = -floor($damage[EntityDamageEvent::MODIFIER_BASE] * $points * 0.04);
|
||||
}
|
||||
@@ -2039,7 +2013,6 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
break;
|
||||
case ProtocolInfo::ANIMATE_PACKET:
|
||||
if($this->spawned === false or $this->dead === true){
|
||||
@@ -2633,6 +2606,10 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{
|
||||
if($ev->getDeathMessage() != ""){
|
||||
$this->server->broadcast($ev->getDeathMessage(), Server::BROADCAST_CHANNEL_USERS);
|
||||
}
|
||||
|
||||
if($this->server->isHardcore()){
|
||||
$this->setBanned(true);
|
||||
}
|
||||
}
|
||||
|
||||
public function setHealth($amount){
|
||||
@@ -2671,8 +2648,24 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{
|
||||
|
||||
parent::attack($damage, $source);
|
||||
|
||||
if($source instanceof EntityDamageEvent and $source->isCancelled()){
|
||||
return;
|
||||
if($source instanceof EntityDamageEvent){
|
||||
if($source->isCancelled()){
|
||||
return;
|
||||
}
|
||||
if($source->getDamage(EntityDamageEvent::MODIFIER_ARMOR) > 0){
|
||||
for($i = 0; $i < 4; $i++){
|
||||
$piece = $this->getInventory()->getArmorItem($i);
|
||||
if($piece instanceof Armor){
|
||||
$damage = $piece->getDamage();
|
||||
if($damage >= $piece->getMaxDurability()){
|
||||
$this->getInventory()->setArmorItem($i, Item::get(Item::AIR));
|
||||
}else{
|
||||
$piece->setDamage($damage + 1);
|
||||
$this->getInventory()->setArmorItem($i, $piece);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($this->getLastDamageCause() === $source){
|
||||
@@ -2681,6 +2674,8 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{
|
||||
$pk->event = 2;
|
||||
$this->dataPacket($pk);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public function teleport(Vector3 $pos, $yaw = null, $pitch = null){
|
||||
|
Reference in New Issue
Block a user