Uploading finished plugin !

This commit is contained in:
Ad5001 2017-03-17 20:37:04 +01:00
commit 0af5edc852
No known key found for this signature in database
GPG key ID: 359332C59162FFDC
2 changed files with 111 additions and 0 deletions

17
plugin.yml Normal file
View file

@ -0,0 +1,17 @@
---
# Base generated with ImagicalPlugCreator by Ad5001 (C) 2017 for Ad5001
# link: https://ad5001.eu
name: FloatingTexts
author: Ad5001
main: Ad5001\FloatingTexts\Main
version: 1.0
api: [3.0.0, 3.0.0-ALPHA3]
commands:
createfloat:
description: Create a floating text !
usage: /createfloat <text...>
permission: floatingtexts.cmd
permissions:
floatingtexts.cmd:
default: op
...

View file

@ -0,0 +1,94 @@
<?php
# FloatingTexts
# A new production from Ad5001 generated using ImagicalPlugCreator by Ad5001 (C) 2017
namespace Ad5001\FloatingTexts;
use pocketmine\Server;
use pocketmine\Player;
use pocketmine\plugin\PluginBase;
use pocketmine\entity\Entity;
class Main extends PluginBase implements \pocketmine\event\Listener {
/*
Called when the plugin enables
*/
public function onEnable() {
$this->getServer()->getPluginManager()->registerEvents($this, $this);
$this->sessions = [];
}
/*
Called when the plugin disables
*/
public function onDisable() {
}
/*
Called when one of the defined commands of the plugin has been called
@param $sender \pocketmine\command\CommandSender
@param $cmd \pocketmine\command\Command
@param $label mixed
@param $args array
return bool
*/
public function onCommand(\pocketmine\command\CommandSender $sender, \pocketmine\command\Command $cmd, $label, array $args): bool {
switch($cmd->getName()) {
case "createfloat":
if($sender instanceof Player) {
if(isset($args[0])) {
$text = implode(" ", $args);
$text = str_ireplace("\\n", "\n", $text);
$this->sessions[$sender->getName()] = $text;
$sender->sendMessage("Tap an entity !");
}
}
return true;
break;
}
}
/*
WHen a player hits an entity with a session, set his nametag
@param $event \pocketmine\event\entity\EntityDamageEvent
*/
public function onEntityDamage(\pocketmine\event\entity\EntityDamageEvent $event) {
if($event instanceof \pocketmine\event\entity\EntityDamageByEntityEvent) {
if($event->getDamager() instanceof Player &&
isset($this->sessions[$event->getDamager()->getName()])) {
$event->getEntity()->addEffect(\pocketmine\entity\Effect::getEffectByName("invisibility")->setDuration(99999)->setVisible(false));
$event->getEntity()->setNameTag($this->sessions[$event->getDamager()->getName()]);
$event->getEntity()->setNameTagAlwaysVisible(true);
$event->getEntity()->setNameTagVisible(true);
$event->getEntity()->setImmobile(true);
$event->getEntity()->namedtag->isUsedToFloat = new \pocketmine\nbt\tag\StringTag("isUsedToFloat", "true");
$event->getEntity()->setNameTag($this->sessions[$event->getDamager()->getName()]);
$event->setCancelled();
unset($this->sessions[$event->getDamager()->getName()]);
} elseif(isset($event->getEntity()->namedtag->isUsedToFloat)) {
if(!($event->getDamager() instanceof Player && $event->getDamager()->isOp())) $event->setCancelled();
}
} elseif(isset($event->getEntity()->namedtag->isUsedToFloat)) {
$event->setCancelled();
}
}
/*
Checks when a level loads with floats to regive them the flags and effects.
@param $event \pocketmine\event\level\LevelLoadEvent
*/
public function onLevelLoad(\pocketmine\event\level\LevelLoadEvent $event) {
foreach ($event->getLevel()->getEntities() as $et) {
if(isset($event->getEntity()->namedtag->isUsedToFloat)) {
$event->getEntity()->addEffect(\pocketmine\entity\Effect::getEffectByName("invisibility")->setDuration(99999)->setVisible(false));
$event->getEntity()->setNameTagAlwaysVisible(true);
$event->getEntity()->setNameTagVisible(true);
$event->getEntity()->setImmobile(true);
}
}
}
}