#php #pocketmine
#php #pocketmine
Вопрос:
Если это не очевидно по тому, как сформулирован заголовок этого сообщения, я понимаю, что происходит не так, но я не знаю словарного запаса, необходимого для формулировки вопроса, чтобы получить ответ через Google.
Фактически это сводится к тому, что у меня есть основной класс php, который регистрирует прослушиватель событий как таковой:
class Main extends PluginBase {
public function onEnable(){
$this->getServer()->getLogger()->info("Loading all the things");
$pluginManager = $this->getServer()->getPluginManager();
$pluginManager->registerEvents(new SimpleOverrides($this), $this);
$pluginManager->registerEvents(new AntiGreifListeners($this), $this);
}
}
«SimpleOverrides.php » находится в отдельной папке, вызываемой "Listeners"
, и ее код выглядит следующим образом:
class SimpleOverrides implements Listener{
private $plguin;
public function __construct(Main $plugin){
$this->plugin = $plugin;
$this->plugin->getLogger()->info("SimpleOverrides setup!");
}
public function onPluginCommand(PlayerCommandPreprocessEvent $event){
$message = $event.getMessage();
$array = split(' ', $message);
if(strtolower($array[0]) == "pl" || strtolower($array[0]) == "plugins"){
$event->setCancelled(true);
$event->getPlayer()->sendMessage(TextFormat::GREEN . "This server operates using 100% custom plugins!");
}
}
}
Проблема в том, что в конструкторе он должен быть передан основному классу. Но код выдает a TypeError
, потому что он ищет Main.php внутри "Listeners"
папки. Как мне заставить его использовать основной класс из основной папки?
Комментарии:
1. Правильна ли эта строка кода:
private $plguin;
?
Ответ №1:
use HubCoreMain;
решение состояло в том, чтобы реализовать основной класс из файла hubcore, у меня была опечатка, не позволяющая этому работать с самого начала