public function eazyCommand($event) { if ($event->isCancelled()) { return false; } if ($event instanceof PlayerCommandPreprocessEvent || $event instanceof PlayerChatEvent) { $cmd = $event instanceof PlayerChatEvent ? $event->getMessage() : substr($event->getMessage(), 1); $sender = $event->getPlayer(); $ip = true; } else { $cmd = $event->getCommand(); $sender = $event->getSender(); $ip = false; } if (!$sender->hasPermission("mineblock.eazycommand.use")) { return false; } $arr = explode(" ", $cmd); $scl = []; $ps = $this->getServer()->getOnlinePlayers(); foreach ($arr as $k => $v) { if (strpos($v, "@") === 0) { switch (substr($v, 1)) { case "player": case "p": $arr[$k] = $sender->getName(); break; case "x": if ($ip) { $arr[$k] = $sender->x; } break; case "y": if ($ip) { $arr[$k] = $sender->y; } break; case "z": if ($ip) { $arr[$k] = $sender->z; } break; case "world": case "w": if ($ip) { $arr[$k] = $sender->getLevel()->getName(); } break; case "all": case "a": if ($sender->isOp() && count($ps) > 0) { $scl[] = $k; } break; case "random": case "r": $arr[$k] = count($ps) < 1 ? "" : $ps[array_rand($ps)]->getName(); break; case "server": case "s": $arr[$k] = $this->getServer()->getServerName(); break; case "version": case "v": $arr[$k] = $this->getServer()->getApiVersion(); break; case "mineblock": case "d": $arr[$k] = ["데베", "MineBlock", "데베플러그인", "MineBlock"][rand(0, 3)]; break; } } } foreach ($arr as $k => $v) { $arr[$k] = str_replace([".@", "_@", "-@"], ["@", "@", "@"], $v); } if (count($scl) !== 0) { $event->setCancelled(); foreach ($ps as $p) { foreach ($scl as $v) { $arr[$v] = $p->getName(); } $cmd = implode(" ", $arr); $ep = false; if ($event instanceof PlayerCommandPreprocessEvent) { $ev = new PlayerCommandPreprocessEvent($sender, "/" . $cmd); $ep = true; } elseif ($event instanceof PlayerChatEvent) { $this->getServer()->getPluginManager()->callEvent($ev = new PlayerChatEvent($sender, $cmd)); if (!$ev->isCancelled()) { $this->getServer()->broadcastMessage(sprintf($ev->getFormat(), $ev->getPlayer()->getDisplayName(), $ev->getMessage()), $ev->getRscipients()); } return false; } else { $ev = new ServerCommandEvent($sender, $cmd); } $this->getServer()->getPluginManager()->callEvent($ev); if (!$ev->isCancelled()) { $this->getServer()->dispatchCommand($sender, $ep ? substr($ev->getMessage(), 1) : $ev->getCommand()); } } return false; } else { return implode(" ", $arr); } }