1616namespace Xenophilicy \MaxEnchants ;
1717
1818use pocketmine \command \{Command , CommandSender , PluginCommand };
19+ use pocketmine \data \bedrock \EnchantmentIdMap ;
1920use pocketmine \event \Listener ;
20- use pocketmine \item \enchantment \{Enchantment , EnchantmentInstance };
21- use pocketmine \Player ;
21+ use pocketmine \item \enchantment \{Enchantment , EnchantmentInstance , StringToEnchantmentParser };
22+ use pocketmine \player \ Player ;
2223use pocketmine \plugin \PluginBase ;
2324use pocketmine \utils \{Config , TextFormat as TF };
25+ use ReflectionClass ;
2426
2527/**
2628 * Class MaxEnchants
2729 * @package Xenophilicy\MaxEnchants
2830 */
2931class MaxEnchants extends PluginBase implements Listener {
3032
31- /**
32- * @var string
33- */
34- private $ pluginVersion ;
35- private $ customMaxLevels ;
36- /**
37- * @var mixed|string|string[]|null
38- */
39- private $ cmdName ;
40- /**
41- * @var bool|int|mixed
42- */
43- private $ maxLevel ;
44- private $ vanillaEnchants ;
33+ /** @var string*/
34+ private string $ pluginVersion ;
35+ /** @var array*/
36+ private array $ customMaxLevels ;
37+ /** @var mixed|null*/
38+ private mixed $ cmdName ;
39+ /** @var Config*/
40+ private Config $ config ;
41+ /** @var mixed*/
42+ private mixed $ maxLevel ;
43+ /** @var array*/
44+ private array $ vanillaEnchants ;
4545
46- public function onEnable (){
46+ public function onEnable (): void {
4747 $ pluginManager = $ this ->getServer ()->getPluginManager ();
4848 $ pluginManager ->registerEvents ($ this , $ this );
4949 $ this ->saveDefaultConfig ();
5050 $ this ->config = new Config ($ this ->getDataFolder () . "config.yml " , Config::YAML );
51- $ this ->config ->getAll ();
5251 $ version = $ this ->config ->get ("VERSION " );
5352 $ this ->pluginVersion = $ this ->getDescription ()->getVersion ();
5453 if ($ version < "1.2.0 " ){
@@ -70,7 +69,7 @@ public function onEnable(){
7069 $ this ->buildVanillaEnchantArray ();
7170 $ maxLevels = $ this ->config ->get ("Custom-Max-Levels " );
7271 if ($ maxLevels !== false ){
73- if (is_null ( $ maxLevels ) || $ maxLevels == "" || !is_array ($ maxLevels )){
72+ if ($ maxLevels == "" || !is_array ($ maxLevels )){
7473 $ this ->getLogger ()->critical ("Invalid custom max levels array found, disabling plugin... " );
7574 $ pluginManager ->disablePlugin ($ this );
7675 return ;
@@ -79,18 +78,17 @@ public function onEnable(){
7978 if (!is_int ($ id ) || !is_int ($ level ) || !$ this ->isValidEnchant ($ id )){
8079 $ this ->getLogger ()->warning ("Invalid max level found at $ id, it will not be included! " );
8180 }else {
82- $ enchantment = Enchantment:: getEnchantment ($ id );
81+ $ enchantment = EnchantmentIdMap:: getInstance ()-> fromId ($ id );
8382 $ this ->customMaxLevels [$ enchantment ->getName ()] = $ level ;
8483 }
8584 }
8685 }
8786 }
8887 $ this ->maxLevel = $ this ->config ->get ("Max-Level " ) >= 32767 ? 32767 : $ this ->config ->get ("Max-Level " );
8988 $ this ->cmdName = str_replace ("/ " , "" , $ this ->config ->getNested ("Command.Name " ));
90- if (is_null ( $ this -> cmdName ) || $ this ->cmdName == "" ){
89+ if ($ this ->cmdName == "" ){
9190 $ this ->getLogger ()->critical ("Invalid enchant command string found, disabling plugin... " );
9291 $ pluginManager ->disablePlugin ($ this );
93- return ;
9492 }else {
9593 if (($ cmdInstance = $ this ->getServer ()->getCommandMap ()->getCommand ($ this ->cmdName )) instanceof Command){
9694 if ($ this ->config ->getNested ("Command.Override " )){
@@ -102,7 +100,7 @@ public function onEnable(){
102100 return ;
103101 }
104102 }
105- $ cmd = new PluginCommand ($ this ->cmdName , $ this );
103+ $ cmd = new PluginCommand ($ this ->cmdName , $ this , $ this );
106104 $ cmd ->setDescription ($ this ->config ->getNested ("Command.Description " ));
107105 if ($ this ->config ->getNested ("Command.Permission.Enabled " )){
108106 $ cmd ->setPermission ($ this ->config ->getNested ("Command.Permission.Node " ));
@@ -113,19 +111,18 @@ public function onEnable(){
113111
114112 private function buildVanillaEnchantArray (): void {
115113 $ this ->vanillaEnchants = [];
116- $ reflection = new \ ReflectionClass (Enchantment::class);
114+ $ reflection = new ReflectionClass (Enchantment::class);
117115 $ lastId = -1 ;
118116 foreach ($ reflection ->getConstants () as $ name => $ id ){
119117 $ lastId ++;
120118 if ($ id !== $ lastId ){
121119 break ;
122120 }
123- $ enchantment = Enchantment:: getEnchantment ($ id );
121+ $ enchantment = EnchantmentIdMap:: getInstance ()-> fromId ($ id );
124122 if ($ enchantment instanceof Enchantment){
125123 $ this ->vanillaEnchants [$ enchantment ->getName ()] = [ucwords (strtolower (str_replace ("_ " , " " , $ name ))), $ lastId ];
126124 }
127125 }
128- return ;
129126 }
130127
131128 /**
@@ -160,7 +157,7 @@ private function enchantItem(CommandSender $sender, array $args): void{
160157 $ sender ->sendMessage (TF ::RED . "Usage: / " . $ this ->cmdName . " <player> <enchantment ID> [level] " );
161158 return ;
162159 }
163- if (($ player = $ sender ->getServer ()->getPlayer ($ args [0 ])) === null ){
160+ if (($ player = $ sender ->getServer ()->getPlayerByPrefix ($ args [0 ])) === null ){
164161 $ sender ->sendMessage (TF ::RED . "Player not found " );
165162 return ;
166163 }
@@ -169,9 +166,9 @@ private function enchantItem(CommandSender $sender, array $args): void{
169166 return ;
170167 }
171168 if (is_numeric ($ args [1 ])){
172- $ enchantment = Enchantment:: getEnchantment ((int )$ args [1 ]);
169+ $ enchantment = EnchantmentIdMap:: getInstance ()-> fromId ((int )$ args [1 ]);
173170 }else {
174- $ enchantment = Enchantment:: getEnchantmentByName ($ args [1 ]);
171+ $ enchantment = StringToEnchantmentParser:: getInstance ()-> parse ($ args [1 ]);
175172 }
176173 if (!($ enchantment instanceof Enchantment)){
177174 $ sender ->sendMessage (TF ::RED . "There is no such enchantment with ID " . TF ::YELLOW . $ args [1 ]);
@@ -203,7 +200,6 @@ private function enchantItem(CommandSender $sender, array $args): void{
203200 $ player ->getInventory ()->setItemInHand ($ item );
204201 $ enchantmentName = $ this ->vanillaEnchants [$ enchantment ->getName ()][0 ] ?? $ enchantment ->getName ();
205202 $ this ->broadcast ($ enchantmentName , $ level , $ player , $ sender );
206- return ;
207203 }
208204
209205 /**
@@ -226,16 +222,15 @@ private function broadcast(string $name, string $level, Player $target, $sender)
226222 $ msgString = str_replace ("& " , "§ " , $ msgString );
227223 if ($ include !== "" && !is_null ($ include ) && $ include !== []){
228224 $ include = strtolower (implode (", " , $ include ));
229- if (strpos ($ include , "console " ) !== false ){
225+ if (str_contains ($ include , "console " )){
230226 $ this ->getLogger ()->info (TF ::clean ($ msgString ));
231227 }
232- if (strpos ($ include , "target " ) !== false ){
228+ if (str_contains ($ include , "target " )){
233229 $ target ->sendMessage ($ msgString );
234230 }
235- if (strpos ($ include , "sender " ) !== false && $ sender instanceof Player){
231+ if (str_contains ($ include , "sender " ) && $ sender instanceof Player){
236232 $ sender ->sendMessage ($ msgString );
237233 }
238234 }
239- return ;
240235 }
241236}
0 commit comments