Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update for PM4.0 #73

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 27 additions & 33 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,39 +22,33 @@ SimpleWarp is the original warp plugin for PocketMine-MP. It allows players to m
## Permissions
```yaml
simplewarp:
default: op
children:
simplewarp.command:
default: op
children:
simplewarp.command.list:
default: true
children:
simplewarp.command.list.xyz:
default: op
simplewarp.command.list.visual:
default: op
simplewarp.command.addwarp:
default: op
simplewarp.command.delwarp:
default: op
simplewarp.command.warp:
default: true
children:
simplewarp.command.warp.other:
default: op
simplewarp.command.openwarp:
default: op
simplewarp.command.closewarp:
default: op
simplewarp.command.closewarp:
default: op
simplewarp.essentials.notice:
default: op
description: Recieve messages when their is warp conflict in Essentials
simplewarp.warp:
default: op
description: Allows usage of all warps
default: op
simplewarp.command:
default: op
simplewarp.command.list:
default: true
simplewarp.command.list.xyz:
default: op
simplewarp.command.list.visual:
default: op
simplewarp.command.addwarp:
default: op
simplewarp.command.delwarp:
default: op
simplewarp.command.warp:
default: true
simplewarp.command.warp.other:
default: op
simplewarp.command.openwarp:
default: op
simplewarp.command.closewarp:
default: op
simplewarp.essentials.notice:
default: op
description: Recieve messages when their is warp conflict in Essentials
simplewarp.warp:
default: op
description: Allows usage of all warps
```

## API
Expand Down
59 changes: 27 additions & 32 deletions plugin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,40 +3,35 @@ name: SimpleWarp
main: falkirks\simplewarp\SimpleWarp
version: 4.0.1
author: Falkirks
api: [3.0.0, 4.0.0]
api: [4.0.0]
load: POSTWORLD
softdepend: ["FastTransfer", "SlowTransfer", "EssentialsPE"]
permissions:
simplewarp:
default: op
children:
simplewarp.command:
default: op
children:
simplewarp.command.list:
default: true
children:
simplewarp.command.list.xyz:
default: op
simplewarp.command.list.visual:
default: op
simplewarp.command.addwarp:
default: op
simplewarp.command.delwarp:
default: op
simplewarp.command.warp:
default: true
simplewarp.command.warp.other:
default: op
simplewarp.command.openwarp:
default: op
simplewarp.command.closewarp:
default: op
simplewarp.command.closewarp:
default: op
simplewarp.essentials.notice:
default: op
description: Recieve messages when their is warp conflict in Essentials
simplewarp.warp:
default: op
description: Allows usage of all warps
simplewarp.command:
default: op
simplewarp.command.list:
default: true
simplewarp.command.list.xyz:
default: op
simplewarp.command.list.visual:
default: op
simplewarp.command.addwarp:
default: op
simplewarp.command.delwarp:
default: op
simplewarp.command.warp:
default: true
simplewarp.command.warp.other:
default: op
simplewarp.command.openwarp:
default: op
simplewarp.command.closewarp:
default: op
simplewarp.essentials.notice:
default: op
description: Recieve messages when their is warp conflict in Essentials
simplewarp.warp:
default: op
description: Allows usage of all warps
16 changes: 8 additions & 8 deletions src/falkirks/simplewarp/Destination.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@

use falkirks\simplewarp\api\SimpleWarpAPI;
use falkirks\simplewarp\utils\WeakPosition;
use pocketmine\level\Position;
use pocketmine\Player;
use pocketmine\world\Position;
use pocketmine\player\Player;
use pocketmine\plugin\PluginBase;
use pocketmine\Server;
use pocketmine\utils\TextFormat;
Expand Down Expand Up @@ -54,7 +54,7 @@ public function teleport(Player $player){
$player->teleport($this->position);
}
else{
$player->sendMessage($this->getApi()->executeTranslationItem("level-not-loaded-warp"));
$player->sendMessage($this->getApi()->executeTranslationItem("world-not-loaded-warp"));
}
}
else{
Expand All @@ -63,7 +63,7 @@ public function teleport(Player $player){
$player->transfer($this->address, $this->port);
}
elseif($plugin instanceof PluginBase && $plugin->isEnabled()){
$plugin->transferPlayer($player, $this->address, $this->port);
$player->transfer($this->address, $this->port);
}
else{
$player->getServer()->getPluginManager()->getPlugin("SimpleWarp")->getLogger()->warning("In order to use warps to other servers, you must install " . TextFormat::AQUA . "FastTransfer" . TextFormat::RESET . " or use a newer PocketMine version.");
Expand Down Expand Up @@ -98,16 +98,16 @@ public function getPort(){
public function toString(){
if($this->isInternal()) {
if($this->position instanceof WeakPosition){
$levelName = $this->position->levelName;
$worldName = $this->position->worldName;
}
else{
$levelName = $this->position->getLevel()->getName();
$worldName = $this->position->getWorld()->getFolderName();
}
if($this->getApi()->getConfigItem("display-exact-coordinates")) {
return "(X: {$this->getPosition()->x}, Y: {$this->getPosition()->y}, Z: {$this->getPosition()->z}, LEVEL: {$levelName})";
return "(X: {$this->getPosition()->x}, Y: {$this->getPosition()->y}, Z: {$this->getPosition()->z}, LEVEL: {$worldName})";
}
else{
return "(X: {$this->getPosition()->getFloorX()}, Y: {$this->getPosition()->getFloorY()}, Z: {$this->getPosition()->getFloorZ()}, LEVEL: " . $levelName . ")";
return "(X: {$this->getPosition()->getFloorX()}, Y: {$this->getPosition()->getFloorY()}, Z: {$this->getPosition()->getFloorZ()}, LEVEL: " . $worldName . ")";
}
}
return "(IP: {$this->getAddress()}, PORT: {$this->getPort()})";
Expand Down
4 changes: 2 additions & 2 deletions src/falkirks/simplewarp/SimpleWarp.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class SimpleWarp extends PluginBase{
/** @var Command[] */
private $commands;

public function onEnable(){
public function onEnable(): void {
$this->saveDefaultConfig();

$this->api = new SimpleWarpAPI($this);
Expand Down Expand Up @@ -82,7 +82,7 @@ public function onEnable(){
//TODO add negative response (in next version because I don't know if this works)
}
}
public function onDisable(){
public function onDisable(): void {
$this->warpManager->saveAll();

$this->warpManager = null;
Expand Down
6 changes: 2 additions & 4 deletions src/falkirks/simplewarp/Warp.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@
use falkirks\simplewarp\event\PlayerWarpEvent;
use falkirks\simplewarp\permission\SimpleWarpPermissions;
use pocketmine\command\CommandSender;
use pocketmine\metadata\Metadatable;
use pocketmine\Player;
use pocketmine\plugin\Plugin;
use pocketmine\player\Player;
use pocketmine\Server;

/**
Expand All @@ -32,7 +30,7 @@ public function __construct(WarpManager $manager, $name, Destination $destinatio
}
public function teleport(Player $player){
$ev = new PlayerWarpEvent($player, $this);
$this->getServer()->getPluginManager()->callEvent($ev);
$ev->call();
if($ev->isCancelled()){
return;
}
Expand Down
7 changes: 3 additions & 4 deletions src/falkirks/simplewarp/WarpManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,8 @@
use falkirks\simplewarp\store\Reloadable;
use falkirks\simplewarp\store\Saveable;
use falkirks\simplewarp\utils\WeakPosition;
use pocketmine\level\Level;
use pocketmine\level\Position;
use pocketmine\network\protocol\DataPacket;
use pocketmine\world\World;
use pocketmine\world\Position;
use pocketmine\utils\TextFormat;
use Traversable;

Expand Down Expand Up @@ -191,7 +190,7 @@ protected function warpToData(Warp $warp){
"x" => $pos->getX(),
"y" => $pos->getY(),
"z" => $pos->getZ(),
"level" => ($pos instanceof WeakPosition ? $pos->getLevelName() : $pos->getLevel()->getName()),
"world" => ($pos instanceof WeakPosition ? $pos->getWorldName() : $pos->getWorld()->getFolderName()),
"public" => $warp->isPublic(),
];
}
Expand Down
6 changes: 3 additions & 3 deletions src/falkirks/simplewarp/api/SimpleWarpAPI.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
use falkirks\simplewarp\SimpleWarp;
use falkirks\simplewarp\Warp;
use falkirks\simplewarp\WarpManager;
use pocketmine\Player;
use pocketmine\player\Player;
use pocketmine\plugin\PluginBase;

/**
Expand Down Expand Up @@ -121,9 +121,9 @@ public function warpPlayerTo(Player $player, $name): bool{
* Checks if a player has permission to use a warp
* @param Player $player
* @param $name
* @return bool
* @return null|bool
*/
public function canPlayerUse(Player $player, $name): bool{
public function canPlayerUse(Player $player, $name): ?bool{
$warp = $this->getWarp($name);
if($warp instanceof Warp){
return $warp->canUse($player);
Expand Down
47 changes: 17 additions & 30 deletions src/falkirks/simplewarp/command/AddWarpCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,18 @@
use falkirks\simplewarp\Destination;
use falkirks\simplewarp\event\WarpAddEvent;
use falkirks\simplewarp\permission\SimpleWarpPermissions;
use falkirks\simplewarp\SimpleWarp;
use falkirks\simplewarp\utils\WeakPosition;
use falkirks\simplewarp\Version;
use falkirks\simplewarp\Warp;
use pocketmine\command\Command;
use pocketmine\command\CommandSender;
use pocketmine\command\PluginIdentifiableCommand;
use pocketmine\level\Level;
use pocketmine\level\Position;
use pocketmine\Player;
use pocketmine\utils\TextFormat;
use pocketmine\world\Position;
use pocketmine\player\Player;
use pocketmine\plugin\Plugin;
use pocketmine\world\World;

class AddWarpCommand extends SimpleWarpCommand {
private $api;

private SimpleWarpAPI $api;

public function __construct(SimpleWarpAPI $api) {
parent::__construct($api->executeTranslationItem("addwarp-cmd"), $api->executeTranslationItem("addwarp-desc"), $api->executeTranslationItem("addwarp-usage"));
Expand All @@ -31,8 +28,6 @@ public function __construct(SimpleWarpAPI $api) {
* @param CommandSender $sender
* @param string $commandLabel
* @param string[] $args
*
* @return mixed
*/
public function execute(CommandSender $sender, string $commandLabel, array $args) {
if (parent::execute($sender, $commandLabel, $args)) {
Expand All @@ -43,12 +38,12 @@ public function execute(CommandSender $sender, string $commandLabel, array $args
$sender->sendMessage($this->api->executeTranslationItem("addwarp-ess-prefix-warning"));
}
if (isset($args[3])) {
$level = (isset($args[4]) ? $this->api->getSimpleWarp()->getServer()->getLevelByName($args[4]) : $this->api->getSimpleWarp()->getServer()->getDefaultLevel());
if ($level instanceof Level) {
$dest = new Destination(new WeakPosition($args[1], $args[2], $args[3], $level->getName()));
$world = (isset($args[4]) ? $this->api->getSimpleWarp()->getServer()->getWorldManager()->getWorldByName($args[4]) : $this->api->getSimpleWarp()->getServer()->getWorldManager()->getDefaultWorld());
if ($world instanceof World) {
$dest = new Destination(new WeakPosition($args[1], $args[2], $args[3], $world->getFolderName()));
$warp = new Warp($this->api->getWarpManager(), $args[0], $dest);
$ev = new WarpAddEvent($sender, $warp);
$this->getPlugin()->getServer()->getPluginManager()->callEvent($ev);
$ev->call();
if (!$ev->isCancelled()) {
$this->api->getWarpManager()[$args[0]] = $warp;
$sender->sendMessage($this->api->executeTranslationItem("warp-added-xyz", $args[0], $dest->toString()));
Expand All @@ -58,14 +53,14 @@ public function execute(CommandSender $sender, string $commandLabel, array $args
}
}
else {
$sender->sendMessage($this->api->executeTranslationItem("level-not-loaded"));
$sender->sendMessage($this->api->executeTranslationItem("world-not-loaded"));
}
}
elseif (isset($args[2])) {
$dest = new Destination($args[1], $args[2]);
$warp = new Warp($this->api->getWarpManager(), $args[0], $dest);
$ev = new WarpAddEvent($sender, $warp);
$this->getPlugin()->getServer()->getPluginManager()->callEvent($ev);
$ev->call();
if (!$ev->isCancelled()) {
$this->api->getWarpManager()[$args[0]] = $warp;
$sender->sendMessage($this->api->executeTranslationItem("warp-added-server", $args[0], $dest->toString()));
Expand All @@ -78,11 +73,11 @@ public function execute(CommandSender $sender, string $commandLabel, array $args
}
}
elseif (isset($args[1])) {
if (($player = $this->api->getSimpleWarp()->getServer()->getPlayer($args[1])) instanceof Player) {
$dest = new Destination(new Position($player->getX(), $player->getY(), $player->getZ(), $player->getLevel()));
if (($player = $this->api->getSimpleWarp()->getServer()->getPlayerExact($args[1])) instanceof Player) {
$dest = new Destination($player->getPosition());
$warp = new Warp($this->api->getWarpManager(), $args[0], $dest);
$ev = new WarpAddEvent($sender, $warp);
$this->getPlugin()->getServer()->getPluginManager()->callEvent($ev);
$ev->call();
if (!$ev->isCancelled()) {
$this->api->getWarpManager()[$args[0]] = $warp;
$sender->sendMessage($this->api->executeTranslationItem("warp-added-player", $args[0], $dest->toString()));
Expand All @@ -97,10 +92,10 @@ public function execute(CommandSender $sender, string $commandLabel, array $args
}
else {
if ($sender instanceof Player) {
$dest = new Destination(new Position($sender->getX(), $sender->getY(), $sender->getZ(), $sender->getLevel()));
$dest = new Destination($sender->getPosition());
$warp = new Warp($this->api->getWarpManager(), $args[0], $dest);
$ev = new WarpAddEvent($sender, $warp);
$this->getPlugin()->getServer()->getPluginManager()->callEvent($ev);
$ev->call();
if (!$ev->isCancelled()) {
$this->api->getWarpManager()[$args[0]] = $warp;
$sender->sendMessage($this->api->executeTranslationItem("warp-added-self", $args[0], $dest->toString()));
Expand Down Expand Up @@ -129,15 +124,7 @@ public function execute(CommandSender $sender, string $commandLabel, array $args
}
}

public function generateCustomCommandData(Player $player) {
return parent::generateCustomCommandData($player); // TODO: Change the autogenerated stub
}


/**
* @return \pocketmine\plugin\Plugin
*/
public function getPlugin(): Plugin{
public function getOwningPlugin(): Plugin{
return $this->api->getSimpleWarp();
}
}
Loading