Skip to content
This repository has been archived by the owner on Jan 18, 2023. It is now read-only.

Commit

Permalink
Merge pull request #5 from supercrafter333/test
Browse files Browse the repository at this point in the history
test -> main
  • Loading branch information
supercrafter333 authored Dec 14, 2020
2 parents 48be5a8 + 787e695 commit 17b2138
Show file tree
Hide file tree
Showing 8 changed files with 192 additions and 110 deletions.
24 changes: 24 additions & 0 deletions .changelogs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Changelogs


### Changelog 1.0.0 » 1.1.0
> This verions doesn't contains any important changes.
- bug fixes
- version bump


### Changelog 1.1.0 » 1.2.0
> This verions doesn't contains any important changes.
- added config version check
- added "banconfig.yml" for more customizing
- added configuration for the banned days (at "banconfig.yml")
- version bump


### Changelog 1.2.0 » 1.3.0
> This version contains big code changes and ohter changes! **All ban files of this plugin don't working yet!** Thanks to jasonwhynn10 for helping me!
- Code cleanup [by: jasonwhynn10]
- Use pocketmine Ban API (removed own ban management) [by: jasonwhynn10]
- added warn count
- fixed bugs
- version bump

Large diffs are not rendered by default.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

67 changes: 44 additions & 23 deletions .idea/workspace.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions plugin.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: theWarn
version: 1.1.0
version: 1.3.0
api: 3.0.0
main: supercrafter333\theWarn\theWarn
author: supercrafter333
Expand All @@ -21,4 +21,4 @@ permissions:
default: op
thewarn.thewarnunban.cmd:
description: Unban a banned player by theWarn
default: op
default: op
7 changes: 7 additions & 0 deletions resources/banconfig.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#here you can set the ban time in days. Please set a number and don't write day/s after the number!
banned-days: 7
#here you can set the count of warns
warn-count: 3

#don't change this
version: 1.3
2 changes: 1 addition & 1 deletion resources/messages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ manual-unban-usage-message: "§4Usage: §r/thewarnunban <playername>"
manual-unban-invalid-playername-message: "This player is not banned!"

#don't change this
version: 1.1
version: 1.3
136 changes: 52 additions & 84 deletions src/supercrafter333/theWarn/theWarn.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,35 +2,37 @@

namespace supercrafter333\theWarn;

use DateInterval;
use DateTime;
use Error;
use pocketmine\command\Command;
use pocketmine\command\CommandSender;
use pocketmine\event\Listener;
use pocketmine\event\player\PlayerJoinEvent;
use pocketmine\event\player\PlayerPreLoginEvent;
use pocketmine\Player;
use pocketmine\plugin\PluginBase;
use pocketmine\Server;
use pocketmine\utils\Config;

class theWarn extends PluginBase implements Listener {

public function onEnable()
{
$this->saveResource("messages.yml");
$this->saveResource("banconfig.yml");
$this->getServer()->getPluginManager()->registerEvents($this, $this);
$messages = new Config($this->getDataFolder() . "messages.yml", Config::YAML);
if (!$messages->exists("version") && !$messages->get("version") == "1.1") {
$banconfig = new Config($this->getDataFolder() . "banconfig.yml", Config::YAML);
if (!$messages->exists("version") && !$messages->get("version") == "1.3") {
$this->getServer()->getLogger()->error("<theWarn> !!OUTDATED CONFIG!! Please delete the file »messages.yml« and restart your server!");
$this->getServer()->getPluginManager()->disablePlugin($this);
}
if (!$banconfig->exists("version") && !$banconfig->get("version") == "1.3") {
$this->getServer()->getLogger()->error("<theWarn> !!OUTDATED CONFIG!! Please delete the file »banconfig.yml« and restart your server!");
$this->getServer()->getPluginManager()->disablePlugin($this);
}
}

public function onJoin(PlayerJoinEvent $event) {
$config = new Config($this->getDataFolder()."warns.yml", Config::YAML);
if (!$event->getPlayer()->hasPlayedBefore() || !$config->exists($event->getPlayer()->getName())) {
if (!$config->exists($event->getPlayer()->getName())) {
$config->set($event->getPlayer()->getName(), "0");
$config->save();
}
Expand All @@ -39,97 +41,63 @@ public function onJoin(PlayerJoinEvent $event) {
public function onCommand(CommandSender $s, Command $cmd, string $label, array $args): bool
{
$prefix = "§f[§7the§dWarn§f] §8»§r ";
$name = $s->getName();
$config = new Config($this->getDataFolder() . "warns.yml", Config::YAML);
$messages = new Config($this->getDataFolder() . "messages.yml", Config::YAML);
if ($cmd->getName() == "thewarn") {
if ($s->hasPermission("thewarn.warn.cmd")) {
if (count($args) >= 2) {
$warnplayer = $this->getServer()->getPlayer($args[0]);
if (!$warnplayer == null) {
$warnplayername = $warnplayer->getName();
if ($config->get($warnplayername) < 3) {
$config->set($warnplayername, intval($config->get($warnplayername) + 1));
$config->save();
$warnplayer->sendMessage(str_replace(["{player}"], [$s->getName()], str_replace(["{warnplayer}"], [$warnplayername], str_replace(["{warnnumber}"], [$config->get($warnplayername)], $prefix . $messages->get("warn-message")))));
$s->sendMessage(str_replace(["{warnplayer}"], [$warnplayername], str_replace(["{warnnumber}"], [$config->get($warnplayername)], $prefix . $messages->get("player-was-warned-message"))));
return true;
} elseif ($config->get($warnplayername) >= 3) {
$ban = new Config($this->getDataFolder() . "bans.yml", Config::YAML);
$warnplayer->kick(str_replace(["{player}"], [$s->getName()], $messages->get("ban-kick-message")), false);
$config->set($warnplayername, "banned");
$config->save();
$bantime = new DateTime('+7 days');
$bt = $bantime->format('Y-m-d H:i:s');
$ban->set($warnplayername, $bt);
$ban->save();
$s->sendMessage(str_replace(["{warnplayer}"], [$warnplayer->getName()], $prefix . $messages->get("player-was-banned-message")));
return true;
}
} else {
$s->sendMessage($prefix . $messages->get("invalid-playername-message"));
return true;
}
} else {
$s->sendMessage($prefix . $messages->get("usage-message"));
return true;
}
} else {
$banconfig = new Config($this->getDataFolder() . "banconfig.yml", Config::YAML);
if ($cmd->getName() === "thewarn") {
if (!$s->hasPermission("thewarn.warn.cmd")) {
$s->sendMessage($prefix . $messages->get("missing-permissions-message"));
return true;
}
}
if ($cmd->getName() == "thewarnunban") {
$ban = new Config($this->getDataFolder() . "bans.yml", Config::YAML);
if ($s->hasPermission("thewarn.thewarnunban.cmd")) {
if (count($args) >= 1) {
if (isset($args[0])) {
if ($config->exists($args[0]) && $ban->exists($args[0])) {
$config->remove($args[0]);
$config->save();
$ban->remove($args[0]);
$ban->save();
$s->sendMessage(str_replace(["{player}"], [$args[0]], $prefix . $messages->get("manual-unban-message")));
} else {
$s->sendMessage(str_replace(["{player}"], [$args[0]], $prefix.$messages->get("manual-unban-invalid-playername-message")));
}
} else {
$s->sendMessage(str_replace(["{player}"], [$args[0]], $prefix . $messages->get("manual-unban-usage-message")));
}
} else {
$s->sendMessage(str_replace(["{player}"], [$args[0]], $prefix . $messages->get("manual-unban-usage-message")));
}
} else {
if (count($args) < 2) {
$s->sendMessage($prefix . $messages->get("usage-message"));
return false;
}
$warnplayer = $this->getServer()->getPlayer($args[0]);
if ($warnplayer !== null) {
$s->sendMessage($prefix . $messages->get("invalid-playername-message"));
return true;
}
$warnplayername = $warnplayer->getName();
if ($config->get($warnplayername) < $banconfig->get("warn-count")) {
$config->set($warnplayername, intval($config->get($warnplayername) + 1));
$config->save();
$warnplayer->sendMessage(str_replace(["{player}"], [$s->getName()], str_replace(["{warnplayer}"], [$warnplayername], str_replace(["{warnnumber}"], [$config->get($warnplayername)], $prefix . $messages->get("warn-message")))));
$s->sendMessage(str_replace(["{warnplayer}"], [$warnplayername], str_replace(["{warnnumber}"], [$config->get($warnplayername)], $prefix . $messages->get("player-was-warned-message"))));
} elseif ($config->get($warnplayername) >= $banconfig->get("warn-count")) {
$this->getServer()->getNameBans()->addBan($warnplayername, $messages->get("ban-kick-message"), new DateTime('+' . $banconfig->get("banned-days") . ' days'), $s->getName());
$warnplayer->kick(str_replace(["{player}"], [$s->getName()], $messages->get("ban-kick-message")), false);
$config->set($warnplayername, "banned");
$config->save();
$s->sendMessage(str_replace(["{warnplayer}"], [$warnplayer->getName()], $prefix . $messages->get("player-was-banned-message")));
}
}elseif ($cmd->getName() === "thewarnunban") {
if (!$s->hasPermission("thewarn.thewarnunban.cmd")) {
$s->sendMessage($prefix . $messages->get("missing-permissions-message"));
return true;
}
if (count($args) < 1) {
$s->sendMessage(str_replace(["{player}"], [$args[0]], $prefix . $messages->get("manual-unban-usage-message")));
return false;
}
if (!$config->exists($args[0]) || !$this->getServer()->getNameBans()->isBanned($args[0])) {
$s->sendMessage(str_replace(["{player}"], [$args[0]], $prefix . $messages->get("manual-unban-invalid-playername-message")));
return true;
}
$config->remove($args[0]);
$config->save();
$this->getServer()->getNameBans()->remove($args[0]);
$s->sendMessage(str_replace(["{player}"], [$args[0]], $prefix . $messages->get("manual-unban-message")));
}
return true;
}

public function onPreLogin(PlayerPreLoginEvent $event) {
$player = $event->getPlayer();
$playername = $player->getName();
$ban = new Config($this->getDataFolder()."bans.yml", Config::YAML);
$playername = $event->getPlayer()->getName();
$config = new Config($this->getDataFolder()."warns.yml", Config::YAML);
$messages = new Config($this->getDataFolder()."messages.yml", Config::YAML);
$now = new DateTime("now");
if ($config->exists($playername)) {
if ($config->get($playername) == "banned") {
$bantimer = new DateTime($ban->get($playername));
if ($bantimer > $now) {
$player->close("", $messages->get("you-are-banned-message"));
} elseif ($bantimer < $now) {
$event->setCancelled(false);
$config->remove($playername);
$config->save();
$ban->remove($playername);
$ban->save();
}
} else {
$event->setCancelled(false);
}
} else {
$event->setCancelled(false);
if ($config->get($playername, null) === "banned" && !$this->getServer()->getNameBans()->isBanned($playername)) {
$config->remove($playername);
$config->save();
}
}
}

0 comments on commit 17b2138

Please sign in to comment.