Skip to content

Commit 384e20d

Browse files
committed
Version 1.0.0
This is the base plugin, version 1.0.0 of Prefixes
1 parent d7d814e commit 384e20d

File tree

109 files changed

+5952
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

109 files changed

+5952
-0
lines changed

.idea/.gitignore

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/Prefixes.iml

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/inspectionProfiles/Project_Default.xml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/modules.xml

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/php.xml

Lines changed: 26 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

plugin.yml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
name: Prefixes
2+
version: 1.0.0
3+
main: frostcheat\prefixes\Prefixes
4+
author: FrostCheat
5+
website: http://www.aquamcpe.xyz/
6+
api: 5.0.0
7+
description: Plugin de prefixes para tus usuarios
8+
9+
permissions:
10+
prefixes.command:
11+
default: true
12+
prefixes.command.help:
13+
default: op
14+
prefixes.command.create:
15+
default: op
16+
prefixes.command.reload:
17+
default: op
18+
prefixes.command.set:
19+
default: op
20+
prefixes.command.remove:
21+
default: op
22+
prefixes.command.delete:
23+
default: op

resources/config.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Don't touch this setting it may break the entire plugin
2+
config-version: 1
3+
4+
# This is the placeholder by which your prefix in the chat will be replaced RankSystem Supports
5+
prefix-replace: "{prefix}"
6+
7+
prefix-max-characters-name: 10
8+
prefix-max-characters-format: 20

resources/messages.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
plugin-prefix: "&7[&cPrefixes&7]&r"
2+
3+
no-permission-command-message: "%plugin-prefix% &cYou do not have permission to run this command"
4+
no-command-found: "%plugin-prefix% &cNo subcommand provided, try using: /prefix help"
5+
plugin-reload: "%plugin-prefix% &cYou can't send messages while prefixes are loading, wait a moment"
6+
plugin-reload-message: "%plugin-prefix% &aYou have reloaded the plugin configuration, wait a few seconds for the changes to be applied"
7+
8+
prefix-already-exists: "%plugin-prefix% &cA prefix already exists with this name"
9+
prefix-max-characters-name: "%plugin-prefix% &cThe prefix name cannot contain more than %max-characters-name% characters in name"
10+
prefix-max-characters-format: "%plugin-prefix% &cThe prefix name cannot contain more than %max-characters-format% characters in format"
11+
prefix-no-spaces-name: "%plugin-prefix% &cThe prefix name cannot contain spaces"
12+
prefix-no-spaces-format: "%plugin-prefix% &cThe prefix format cannot contain spaces"
13+
prefix-succesfuly-created: "%plugin-prefix% &aYou have created the prefix %prefix-name%"
14+
15+
prefix-set-no-player: "%plugin-prefix% &cThe player has not joined the server, or you have the wrong name"
16+
prefix-set-no-prefix-exists: "%plugin-prefix% &cPrefix %prefix-name% does not exist"
17+
prefix-set-succesfuly: "%plugin-prefix% &aYou have given the prefix %prefix-name% to %player%"
18+
19+
player-remove-succesfuly: "%plugin-prefix% &aYou just removed the prefix %prefix-name% from %player%"
20+
player-remove-player-no-prefix: "%plugin-prefix% &cPlayer %player% does not have a prefix"
21+
22+
prefix-delete-no-exists: "%plugin-prefix% &cThe prefix %prefix-name% non exists"
23+
prefix-delete-succesfuly: "%plugin-prefix% &aThe prefix %prefix-name% has been deleted"
24+
25+
player-sets-prefix-succesfuly: "%plugin-prefix% &aYou have set the prefix %prefix%"
26+
player-sets-prefix-no-permission: "%plugin-prefix% &cYou do not have permission to use this prefix"
27+
28+
player-no-prefix: "%plugin-prefix% &cYou don't have any prefix"
29+
player-prefix: "%plugin-prefix% &aYour prefix is: %prefix-format%"
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
<?php
2+
3+
namespace frostcheat\prefixes;
4+
5+
use pocketmine\event\Listener;
6+
use pocketmine\event\player\PlayerChatEvent;
7+
use pocketmine\event\player\PlayerLoginEvent;
8+
use pocketmine\utils\TextFormat;
9+
10+
class EventListener implements Listener
11+
{
12+
public function handleLogin(PlayerLoginEvent $event): void
13+
{
14+
$player = $event->getPlayer();
15+
$session = Prefixes::getInstance()->getSessionManager()->getSession((string)$player->getUniqueId());
16+
17+
if ($session === null) {
18+
Prefixes::getInstance()->getSessionManager()->addSession((string)$player->getUniqueId(), [
19+
"name" => $player->getName(),
20+
"prefix" => null,
21+
]);
22+
} else {
23+
if ($player->getName() !== $session->getName()) {
24+
$session->setName($player->getName());
25+
}
26+
}
27+
}
28+
29+
public function handleChat(PlayerChatEvent $event): void
30+
{
31+
$player = $event->getPlayer();
32+
$message = $event->getMessage();
33+
34+
if (Prefixes::getInstance()->isCharge()) {
35+
$player->sendMessage(TextFormat::colorize(str_replace("%plugin-prefix%", Prefixes::getInstance()->getProvider()->getMessages()->get("plugin-prefix"), Prefixes::getInstance()->getProvider()->getMessages()->get("plugin-reload"))));
36+
$event->cancel();
37+
return;
38+
}
39+
40+
$session = Prefixes::getInstance()->getSessionManager()->getSession((string)$player->getUniqueId());
41+
if ($session !== null) {
42+
if ($session->getPrefix() !== null) {
43+
$prefix = Prefixes::getInstance()->getPrefixManager()->getPrefix($session->getPrefix());
44+
if ($prefix === null) {
45+
$event->setMessage(TextFormat::colorize(str_replace("%prefix%", " ", $message)));
46+
return;
47+
}
48+
49+
$event->setMessage(TextFormat::colorize(str_replace("%prefix%", $prefix->getFormat(), $message)));
50+
51+
if ($message === "%prefix%") {
52+
$player->sendMessage(TextFormat::colorize(str_replace(["%prefix-format%", "%plugin-prefix%"], [$prefix->getFormat(), Prefixes::getInstance()->getProvider()->getMessages()->get("plugin-prefix")], Prefixes::getInstance()->getProvider()->getMessages()->get("player-prefix"))));
53+
$event->cancel();
54+
}
55+
} else {
56+
if ($message === "%prefix%") {
57+
$player->sendMessage(TextFormat::colorize(str_replace("%plugin-prefix%", Prefixes::getInstance()->getProvider()->getMessages()->get("plugin-prefix"), Prefixes::getInstance()->getProvider()->getMessages()->get("player-no-prefix"))));
58+
$event->cancel();
59+
}
60+
}
61+
}
62+
}
63+
}
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
<?php
2+
3+
namespace frostcheat\prefixes;
4+
5+
use frostcheat\prefixes\command\PrefixCommand;
6+
use frostcheat\prefixes\command\PrefixesCommand;
7+
use frostcheat\prefixes\libs\CortexPE\Commando\PacketHooker;
8+
use frostcheat\prefixes\libs\muqsit\invmenu\InvMenuHandler;
9+
use frostcheat\prefixes\prefix\PrefixManager;
10+
use frostcheat\prefixes\provider\Provider;
11+
use frostcheat\prefixes\session\SessionManager;
12+
use pocketmine\event\Listener;
13+
use pocketmine\plugin\PluginBase;
14+
use pocketmine\scheduler\ClosureTask;
15+
16+
class Prefixes extends PluginBase
17+
{
18+
public static Prefixes $instance;
19+
private bool $charge = false;
20+
private Provider $provider;
21+
private PrefixManager $prefixManager;
22+
private SessionManager $sessionManager;
23+
24+
protected function onLoad(): void
25+
{
26+
self::$instance = $this;
27+
}
28+
29+
public function onEnable(): void
30+
{
31+
$this->provider = new Provider();
32+
$this->prefixManager = new PrefixManager();
33+
$this->sessionManager = new SessionManager();
34+
35+
if (!PacketHooker::isRegistered())
36+
PacketHooker::register($this);
37+
38+
if (!InvMenuHandler::isRegistered())
39+
InvMenuHandler::register($this);
40+
41+
$this->getScheduler()->scheduleRepeatingTask(new ClosureTask(function (): void {
42+
$this->getProvider()->save();
43+
}), 300 * 20);
44+
45+
$this->unregisterCommands(["prefix", "prefixes"]);
46+
$this->registerListeners([new EventListener()]);
47+
$this->getServer()->getCommandMap()->register("Prefixes", new PrefixCommand($this));
48+
$this->getServer()->getCommandMap()->register("Prefixes", new PrefixesCommand($this));
49+
}
50+
51+
public function onDisable(): void
52+
{
53+
$this->getProvider()->save();
54+
}
55+
56+
public function registerListeners(array $listener): void
57+
{
58+
foreach ($listener as $item) {
59+
if ($item instanceof Listener) {
60+
$this->getServer()->getPluginManager()->registerEvents($item, $this);
61+
}
62+
}
63+
}
64+
65+
public function unregisterCommands(array $commands)
66+
{
67+
foreach ($commands as $command) {
68+
if ($this->getServer()->getCommandMap()->getCommand($command) !== null) {
69+
$this->getServer()->getCommandMap()->unregister($command);
70+
}
71+
}
72+
73+
}
74+
75+
public static function getInstance(): Prefixes
76+
{
77+
return self::$instance;
78+
}
79+
80+
/**
81+
* @return Provider
82+
*/
83+
public function getProvider(): Provider
84+
{
85+
return $this->provider;
86+
}
87+
88+
/**
89+
* @return PrefixManager
90+
*/
91+
public function getPrefixManager(): PrefixManager
92+
{
93+
return $this->prefixManager;
94+
}
95+
96+
/**
97+
* @return SessionManager
98+
*/
99+
public function getSessionManager(): SessionManager
100+
{
101+
return $this->sessionManager;
102+
}
103+
104+
public function isCharge(): bool
105+
{
106+
return $this->charge;
107+
}
108+
109+
public function setCharge(bool $charge): void
110+
{
111+
if ($charge) {
112+
Prefixes::getInstance()->getScheduler()->scheduleDelayedTask(new ClosureTask(function (): void {
113+
Prefixes::getInstance()->setCharge(false);
114+
}), 200);
115+
}
116+
$this->charge = $charge;
117+
}
118+
}

0 commit comments

Comments
 (0)