
PHP
logoHarigami
ログイン
anonymous タイトルなし No License PHP
コピー
<?php
namespace smo\WarnSystem;
use pocketmine\plugin\PluginBase;
use pocketmine\command\CommandSender;
use pocketmine\command\Command;
use pocketmine\event\Listener;
use pocketmine\event\player\PlayerJoinEvent;
use pocketmine\Player;
use pocketmine\utils\Config;
class Main extends PluginBase implements Listener{
/*
* Config保存の方法:
*
* ・N === 警告なし
* ・1 === 警告一個 (⚠)
* ・2 === 警告二個 (⚠⚠)
* ・3 === 警告三個 (⚠⚠⚠)
*/
private function setWarnTag(Player $player, WarnPoint $p) :void{
switch($p){
case 1:
$player->setNameTag("§c⚠§r".$name);
$player->setDisplayName("§c⚠§r".$name);
$player->save();
break;
case 2:
$player->setNameTag("§c⚠⚠§r".$name);
$player->setDisplayName("§c⚠⚠§r".$name);
$player->save();
break;
case 3:
$player->setNameTag("§c⚠⚠⚠§r".$name);
$player->setDisplayName("§c⚠⚠⚠§r".$name);
$player->save();
break;
}
}
public function onEnable() :void{
$this->getLogger()->notice("WarnSystemを読み込みました by smo");
$this->getServer()->getPluginManager()->registerEvents($this, $this);
if(!file_exists($this->getDataFolder())) @mkdir($this->getDataFolder(), 0744, true);
$this->c = new Config($this->getDataFolder() . "config.yml", Config::YAML);
}
/**
* @priority MONITOR
*/
public function onJoin(PlayerJoinEvent $event) :void{
$player = $event->getPlayer();
$name = $event->getPlayer()->getName();
if(!$this->c->exists($name)) {
$this->c->set($name, "N");
$this->c->save();
}else{
switch($this->c->get($name)){
case "N":
break;
case "1":
$this->setWarnTag($player, 1);
break;
case "2":
$this->setWarnTag($player, 2);
break;
case "3":
$this->setWarnTag($player, 3);
break;
}
}
public function onCommand(CommandSender $sender, Command $command, string $label, array $args) : bool{
switch($label){
case "checkwarn":
if(!$sender instanceof Player){
$sender->sendMessage("§6>>§cゲーム内で実行してください");
}else{
switch($this->c->get($sender->getName())){
case "N":
$sender->sendMessage("§6>>§aあなたは警告されていません");
break;
case "1":
$sender->sendMessage("§6>>§cあなたな累積警告は§e1§cです");
break;
case "2":
$sender->sendMessage("§6>>§cあなたな累積警告は§e2§cです");
break;
case "3":
$sender->sendMessage("§6>>§cあなたな累積警告は§e3§cです");
break;
}
}
break;
case "warn":
if(!isset($args[0])) return false;
if(!issrt($args[1])) return false;
switch($args[0]){
case "add":
if(!$this->c->exists($args[1])){
$sender->sendMessage("§6>>§e".$args[1]."§cのデータがありません");
}elseif($this->c->get($args[1]) === "N"){
$sender->sendMessage("§6>>§e".$args[1]."§aの累積警告を§e1§aにしました");
$this->c->set($args[1], "1");
$this->c->save();
}elseif($this->c->get($args[1]) === "1"){
$sender->sendMessage("§6>>§e".$args[1]."§aの累積警告を§e2§aにしました");
$this->c->set($args[1], "2");
$this->c->save();
}elseif($this->c->get($args[1]) === "2"){
$sender->sendMessage("§6>>§e".$args[1]."§aの累積警告を§e3§aにしました");
$this->c->set($args[1], "3");
$this->c->save();
}elseif($this->c->get($args[1]) === "3"){
$sender->sendMessage("§6>>§e".$args[1]."§cの累積警告は既に最大値です");
}
break;
case "remove":
if(!$this->c->exists($args[1])){
$sender->sendMessage("§6>>§e".$args[1]."§cのデータがありません");
}elseif($this->c->get($args[1]) === "N"){
$sender->sendMessage("§6>>§e".$args[1]."§cは警告されていません");
}elseif($this->c->get($args[1]) === "1"){
$sender->sendMessage("§6>>§e".$args[1]."§aの累積警告を取り消しました");
$this->c->set($args[1], "N");
$this->c->save();
}elseif($this->c->get($args[1]) === "2"){
$sender->sendMessage("§6>>§e".$args[1]."§aの累積警告を§e1§aにしました");
$this->c->set($args[1], "1");
$this->c->save();
}elseif($this->c->get($args[1]) === "3"){
$sender->sendMessage("§6>>§e".$args[1]."§aの累積警告を§e2§aにしました");
$this->c->set($args[1], "2");
$this->c->save();
}
break;
case "check":
if(!$this->c->exists($args[1])){
$sender->sendMessage("§6>>§e".$args[1]."§cのデータがありません");
}elseif($this->c->get($args[1]) === "N"){
$sender->sendMessage("§6>>§e".$args[1]."§aの累積警告:§eなし");
}elseif($this->c->get($args[1]) === "1"){
$sender->sendMessage("§6>>§e".$args[1]."§aの累積警告:§e1");
}elseif($this->c->get($args[1]) === "2"){
$sender->sendMessage("§6>>§e".$args[1]."§aの累積警告:§e2");
}elseif($this->c->get($args[1]) === "3"){
$sender->sendMessage("§6>>§e".$args[1]."§aの累積警告:§e3");
}
break;
}
break;
}
return true;
}
}
}