Skip to content

Commit

Permalink
Some work...
Browse files Browse the repository at this point in the history
  • Loading branch information
iksaku committed Jul 24, 2014
1 parent 0d79b34 commit 428236d
Show file tree
Hide file tree
Showing 4 changed files with 151 additions and 59 deletions.
1 change: 1 addition & 0 deletions plugin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ version: 1.0.0
api: 1.0.0
author: iksaku

This comment has been minimized.

Copy link
@PEMapModder

PEMapModder Jul 24, 2014

Member

Change it to our org name.

This comment has been minimized.

Copy link
@iksaku

iksaku Jul 24, 2014

Author Contributor

Do you helped on this? xD just kidding, I will upload it has mine... but I will thank the organization (I already told you that :P)

website: https://github.com/LegendOfMCPE/HealthBar
softdepend: EssentialsPE

permissions:
healthbar:
Expand Down
38 changes: 26 additions & 12 deletions src/HealthBar/EventHandler.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<?php
namespace HealthBar;

use EssentialsPE\Events\PlayerNickChangeEvent;
use pocketmine\event\entity\EntityDamageByEntityEvent;
use pocketmine\event\entity\EntityDamageEvent;
use pocketmine\event\entity\EntityRegainHealthEvent;
Expand All @@ -16,21 +17,18 @@ public function __construct(Loader $plugin){
$this->plugin = $plugin;
}

/**
* @param PlayerJoinEvent $event
*/
public function onPlayerJoin(PlayerJoinEvent $event){
$player = $event->getPlayer();
$this->plugin->updateHealthBar($player);
}

/**
* @param EntityRegainHealthEvent $event
*/
public function onRegainHealth(EntityRegainHealthEvent $event){
$entity = $event->getEntity();
$health = $event->getAmount();
if($entity instanceof Player){
if($entity instanceof Player && !$event->isCancelled()){
$health = $entity->getHealth() + $event->getAmount();
if($health > $entity->getMaxHealth()){
$health = $entity->getMaxHealth();
}elseif($health <= 0){
$health = 0;
}
$this->plugin->updateHealthBar($entity, $health);
}
}
Expand All @@ -40,7 +38,7 @@ public function onRegainHealth(EntityRegainHealthEvent $event){
*/
public function onHealthLose(EntityDamageEvent $event){
$entity = $event->getEntity();
if($entity instanceof Player){
if($entity instanceof Player && !$event->isCancelled()){
$health = $entity->getHealth() - $event->getFinalDamage();
$this->plugin->updateHealthBar($entity, $health);
}
Expand All @@ -51,9 +49,25 @@ public function onHealthLose(EntityDamageEvent $event){
*/
public function onAttack(EntityDamageByEntityEvent $event){
$entity = $event->getEntity();
if($entity instanceof Player){
if($entity instanceof Player && !$event->isCancelled()){
$health = $entity->getHealth() - $event->getFinalDamage();
$this->plugin->updateHealthBar($entity, $health);
}
}

/**
* @param PlayerNickChangeEvent $event
*/
public function onNickChange(PlayerNickChangeEvent $event){
$player = $event->getPlayer();
$nick = $event->getNewNick();
$nametag = $event->getNameTag();

$bar = $this->plugin->getHealthBar();
$bar = str_replace("maxhealth", $player->getMaxHealth(), $bar);
$bar = str_replace("health", $player->getHealth(), $bar);
$bar = str_replace("name", $nick, $bar);

$event->setNameTag($bar);
}
}
10 changes: 6 additions & 4 deletions src/HealthBar/HealthBarCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,8 @@ public function execute(CommandSender $sender, $alias, array $args){
}
switch($args[1]){
case "default":
case "retro":
case "slim":
$this->plugin->setStyle($args[1]);
$sender->sendMessage(TextFormat::YELLOW . "[HealthBar] Updating style...");
return true;
Expand Down Expand Up @@ -123,12 +125,12 @@ public function execute(CommandSender $sender, $alias, array $args){
switch($args[1]){
case "on":
$sender->sendMessage(TextFormat::YELLOW . "Setting your HealthBar...");
$this->plugin->updateHealthBar($sender);
$this->plugin->setHealthBar($sender, true, $sender->getHealth());
return true;
break;
case "off":
$sender->sendMessage(TextFormat::YELLOW . "Removing your HealthBar...");
$this->plugin->removeHealthBar($sender);
$this->plugin->setHealthBar($sender, false);
return true;
break;
default:
Expand Down Expand Up @@ -160,13 +162,13 @@ public function execute(CommandSender $sender, $alias, array $args){
case "on":
$sender->sendMessage(TextFormat::YELLOW . "Setting player' HealthBar...");
$player->sendMessage(TextFormat::YELLOW . "Setting your HealthBar...");
$this->plugin->updateHealthBar($player);
$this->plugin->setHealthBar($player, true, $player->getHealth());
return true;
break;
case "off":
$sender->sendMessage(TextFormat::YELLOW . "Removing player' HealthBar...");
$player->sendMessage(TextFormat::YELLOW . "Removing your HealthBar...");
$this->plugin->removeHealthBar($player);
$this->plugin->setHealthBar($player, false);
return true;
break;
default:
Expand Down
161 changes: 118 additions & 43 deletions src/HealthBar/Loader.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,30 @@
namespace HealthBar;

use pocketmine\Player;
use pocketmine\plugin\Plugin;
use pocketmine\plugin\PluginBase;
use pocketmine\utils\TextFormat;
use EssentialsPE\Loader as EssentialsPE;

class Loader extends PluginBase{
public $essentialspe;
private $canRemove;

public function onEnable(){
$this->saveDefaultConfig();
$this->getServer()->getCommandMap()->register("healthbar", new HealthBarCommand($this));
$this->getServer()->getPluginManager()->registerEvents(new EventHandler($this), $this);
$this->checkConfiguration();
$ess = $this->getServer()->getPluginManager()->getPlugin("EssentialsPE");
if($ess instanceof Plugin && $ess->isEnabled()){
$this->essentialspe = new EssentialsPE();
}
}

public function onDisable(){
if($this->canRemove === true){
foreach($this->getServer()->getOnlinePlayers() as $p){
$this->removeHealthBar($p);
$this->setHealthBar($p, false);
}
}
}
Expand All @@ -43,7 +50,7 @@ private function checkConfiguration(){
private function enableHealthBar(){
$this->canRemove = true;
foreach($this->getServer()->getOnlinePlayers() as $p){
$this->updateHealthBar($p);
$this->setHealthBar($p, true);
}
}

Expand All @@ -62,51 +69,55 @@ private function enableHealthBar(){
*
*/

protected $players = [];

public function getPlayer($player){
$r = "";
$player = strtolower($player);
$r = false;
foreach($this->getServer()->getOnlinePlayers() as $p){
if(strtolower($p->getDisplayName()) == strtolower($player) || strtolower($p->getName()) == strtolower($player)){
$r = $this->getServer()->getPlayerExact($p->getName());
if(strtolower($p->getName()) == $player || strtolower($p->getDisplayName()) == $player){
$r = $p;
}
}
if($r == ""){
return false;
}else{
return $r;
}
return $r;
}

public function getStyle(){
$style = $this->getConfig()->get("style");
if($style == "default"){
return "default";
}elseif($style == "retro"){
return "retro";
}elseif($style == "slim"){
return "slim";
}else{
return false;
switch($style){
case "default":
case "retro":
case "slim":
return $style;
break;
}
return false;
}

public function getPosition(){
$position = $this->getConfig()->get("position");
if($position == "above" || $position == "under" || $position == "left" || $position == "right"){
return $position;
}else{
return false;
switch($position){
case "above":
case "under":
case "left":
case "right":
return $position;
break;
}
return false;
}

public function setStyle($style){
switch($style){
case "default":
case "retro":
case "slim":
$this->getConfig()->set("style", $style);
$this->getConfig()->save();
break;
}
$this->getConfig()->save();
foreach($this->getServer()->getOnlinePlayers() as $p){
$this->updateHealthBar($p);
$this->updateHealthBar($p, $p->getMaxHealth(), $p->getDisplayName());
}
return true;
}
Expand All @@ -118,21 +129,26 @@ public function setPosition($position){
case "left":
case "right":
$this->getConfig()->set("position", $position);
$this->getConfig()->save();
break;
}
$this->getConfig()->save();
foreach($this->getServer()->getOnlinePlayers() as $p){
$this->updateHealthBar($p);
$this->updateHealthBar($p, $p->getMaxHealth(), $p->getDisplayName());
}
return true;
}

public function updateHealthBar(Player $player, $health = false){
public function updateHealthBar(Player $player, $health = false, $name = false){
if(!$this->isHealthBarEnabled($player)){
return false;
}
$style = $this->getStyle();
$position = $this->getPosition();
$maxhealth = $player->getMaxHealth();
if($health === false){
$health = $player->getHealth();
}elseif($name === false){
$name = $player->getDisplayName();
}

if($style === false || $position === false){
Expand All @@ -146,45 +162,45 @@ public function updateHealthBar(Player $player, $health = false){
case "retro":
$bar = "";
$h = $health;
$nh = $maxhealth - $health;
while($nh >= 1){
$bar = $bar . ":";
$nh--;
}
$mh = $maxhealth - $health;
while($h >= 1){
$bar = $bar . "|";
$bar .= $bar . "|";
$h--;
}
while($mh >= 1){
$bar .= $bar . ":";
$mh--;
}
$style = $bar;
break;
case "slim":
$bar = "";
$h = $health;
$nh = $maxhealth - $health;
while($nh >= 1){
$bar = $bar . "-";
$nh--;
}
$mh = $maxhealth - $health;
while($h >= 1){
$bar = $bar . "=";
$bar .= $bar . "=";
$h--;
}
while($mh >= 1){
$bar .= $bar . "-";
$mh--;
}
$style = $bar;
break;
}

switch($position){
case "above":
$player->setNameTag($style . "\n" . $player->getDisplayName());
$player->setNameTag($style . "\n" . $name);
break;
case "under":
$player->setNameTag($player->getDisplayName() . "\n" . $style);
$player->setNameTag($name . "\n" . $style);
break;
case "left":
$player->setNameTag($style . " " . $player->getDisplayName());
$player->setNameTag($style . " " . $name);
break;
case "right":
$player->setNameTag($player->getDisplayName() . " " . $style);
$player->setNameTag($name . " " . $style);
break;
}
return true;
Expand All @@ -195,4 +211,63 @@ public function removeHealthBar(Player $player){
$player->setNameTag($player->getDisplayName());
}
}

public function getHealthBar(){
$style = $this->getStyle();
$position = $this->getPosition();
$maxhealth = "maxhealth";
$health = "health";
$name = "name";

if($style === false || $position === false){
return false;
}

switch($style){
case "default":
$style = "[" . $health . "/" . $maxhealth . "]";
break;
}

$bar = "";
switch($position){
case "above":
$bar = $style . "\n" . $name;
break;
case "under":
$bar = $name . "\n" . $style;
break;
case "left":
$bar = $style . " " . $name;
break;
case "right":
$bar = $name . " " . $style;
break;
}
return $bar;
}

public function isHealthBarEnabled(Player $player){
if(!isset($this->players[$player->getName()])){
$this->players[$player->getName()] = true;
}
if($this->players[$player->getName()] === false){
return false;
}else{
return true;
}
}

public function setHealthBar(Player $player, $value = true, $health = false){
if(!is_bool($value)){
return false;
}
$this->players[$player->getName()] = $value;
if($value === false){
$this->removeHealthBar($player);
}else{
$this->updateHealthBar($player, $health);
}
return true;
}
}

1 comment on commit 428236d

@iksaku
Copy link
Contributor Author

@iksaku iksaku commented on 428236d Jul 24, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now works with EssentialsPE's nick changes :D (May not work if Essentials is not installed :P I will try to fix that bug if it's present)

Please sign in to comment.