-
Notifications
You must be signed in to change notification settings - Fork 2
/
Humanoid.php
102 lines (87 loc) · 2.93 KB
/
Humanoid.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?php
namespace kim\present\humanoid;
use kim\present\humanoid\command\PoolCommand;
use kim\present\humanoid\command\subcommands\{
AddSubCommand, CancelSubCommand, CopySubCommand, RemoveSubCommand, SetSubCommand
};
use kim\present\humanoid\entity\Humanoid as HumanoidEntity;
use kim\present\humanoid\listener\DataPacketEventListener;
use kim\present\humanoid\listener\PlayerEventListener;
use kim\present\humanoid\util\Translation;
use pocketmine\entity\Entity;
use pocketmine\plugin\PluginBase;
class Humanoid extends PluginBase{
/** @var string */
public static $prefix = '';
/** @var Humanoid */
private static $instance = null;
/** @return Humanoid */
public static function getInstance() : Humanoid{
return self::$instance;
}
/** @var PoolCommand */
private $command;
/**
* Called when the plugin is loaded, before calling onEnable()
*/
public function onLoad() : void{
if(self::$instance === null){
self::$instance = $this;
Translation::loadFromResource($this->getResource('lang/eng.yml'), true);
Entity::registerEntity(HumanoidEntity::class, true, [
'Humanoid',
'PresentKim:humanoid',
]);
}
}
/**
* Called when the plugin is enabled
*/
public function onEnable() : void{
$dataFolder = $this->getDataFolder();
if(!file_exists($dataFolder)){
mkdir($dataFolder, 0777, true);
}
$langfilename = $dataFolder . 'lang.yml';
if(!file_exists($langfilename)){
$resource = $this->getResource('lang/eng.yml');
fwrite($fp = fopen("{$dataFolder}lang.yml", "wb"), $contents = stream_get_contents($resource));
fclose($fp);
Translation::loadFromContents($contents);
}else{
Translation::load($langfilename);
}
self::$prefix = Translation::translate('prefix');
if($this->command == null){
$this->command = new PoolCommand($this, 'humanoid');
$this->command->createSubCommand(AddSubCommand::class);
$this->command->createSubCommand(SetSubCommand::class);
$this->command->createSubCommand(RemoveSubCommand::class);
$this->command->createSubCommand(CopySubCommand::class);
$this->command->createSubCommand(CancelSubCommand::class);
}
$this->command->updateTranslation();
$this->command->updateSudCommandTranslation();
if($this->command->isRegistered()){
$this->getServer()->getCommandMap()->unregister($this->command);
}
$this->getServer()->getCommandMap()->register(strtolower($this->getName()), $this->command);
foreach(SetSubCommand::getSubCommands() as $key => $value){
$value->updateTranslation();
}
$this->getServer()->getPluginManager()->registerEvents(new DataPacketEventListener(), $this);
$this->getServer()->getPluginManager()->registerEvents(new PlayerEventListener(), $this);
}
/**
* @param string $name = ''
*
* @return PoolCommand
*/
public function getCommand(string $name = '') : PoolCommand{
return $this->command;
}
/** @param PoolCommand $command */
public function setCommand(PoolCommand $command) : void{
$this->command = $command;
}
}