Well,I'm trying to make a sizes cosmetics plugin and size commands work fine, and I want on PlayerInteractEvent to run a command as a player,but when I do $player->getName() ($player = $ev->getPlayer() ) it says : 2019-06-09 [23:49:59] [Server thread/CRITICAL]: ErrorException: "Undefined property: pocketmine\Player::$getName" (EXCEPTION) in "src/pocketmine/entity/Entity" at line 2257 2019-06-09 [23:49:59] [Server thread/DEBUG]: #0 plugins/GoFightCore-master/src/gofightcore/hotbarmenu/HotbarMenu(139): pocketmine\entity\Entity->__get(string getName) 2019-06-09 [23:49:59] [Server thread/DEBUG]: #1 src/pocketmine/plugin/MethodEventExecutor(38): gofightcore\hotbarmenu\HotbarMenu->handleInteraction(pocketmine\event\player\PlayerInteractEvent object) 2019-06-09 [23:49:59] [Server thread/DEBUG]: #2 src/pocketmine/plugin/RegisteredListener(98): pocketmine\plugin\MethodEventExecutor->execute(gofightcore\hotbarmenu\HotbarMenu object, pocketmine\event\player\PlayerInteractEvent object) 2019-06-09 [23:49:59] [Server thread/DEBUG]: #3 src/pocketmine/event/Event(99): pocketmine\plugin\RegisteredListener->callEvent(pocketmine\event\player\PlayerInteractEvent object) 2019-06-09 [23:49:59] [Server thread/DEBUG]: #4 src/pocketmine/level/Level(1914): pocketmine\event\Event->call() 2019-06-09 [23:49:59] [Server thread/DEBUG]: #5 src/pocketmine/Player(2425): pocketmine\level\Level->useItemOn(pocketmine\math\Vector3 object, pocketmine\item\Item object, integer 1, pocketmine\math\Vector3 object, pocketmine\Player object, boolean 1) 2019-06-09 [23:49:59] [Server thread/DEBUG]: #6 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(149): pocketmine\Player->handleInventoryTransaction(pocketmine\network\mcpe\protocol\InventoryTransactionPacket object) 2019-06-09 [23:49:59] [Server thread/DEBUG]: #7 src/pocketmine/network/mcpe/protocol/InventoryTransactionPacket(158): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleInventoryTransaction(pocketmine\network\mcpe\protocol\InventoryTransactionPacket object) 2019-06-09 [23:49:59] [Server thread/DEBUG]: #8 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(109): pocketmine\network\mcpe\protocol\InventoryTransactionPacket->handle(pocketmine\network\mcpe\PlayerNetworkSessionAdapter object) 2019-06-09 [23:49:59] [Server thread/DEBUG]: #9 src/pocketmine/network/mcpe/protocol/BatchPacket(123): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleDataPacket(pocketmine\network\mcpe\protocol\InventoryTransactionPacket object) 2019-06-09 [23:49:59] [Server thread/DEBUG]: #10 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(109): pocketmine\network\mcpe\protocol\BatchPacket->handle(pocketmine\network\mcpe\PlayerNetworkSessionAdapter object) 2019-06-09 [23:49:59] [Server thread/DEBUG]: #11 src/pocketmine/Player(3124): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleDataPacket(pocketmine\network\mcpe\protocol\BatchPacket object) 2019-06-09 [23:49:59] [Server thread/DEBUG]: #12 src/pocketmine/network/mcpe/RakLibInterface(169): pocketmine\Player->handleDataPacket(pocketmine\network\mcpe\protocol\BatchPacket object) 2019-06-09 [23:49:59] [Server thread/DEBUG]: #13 vendor/pocketmine/raklib/src/server/ServerHandler(99): pocketmine\network\mcpe\RakLibInterface->handleEncapsulated(string 192.168.2.12 41996, raklib\protocol\EncapsulatedPacket object, integer 0) 2019-06-09 [23:49:59] [Server thread/DEBUG]: #14 src/pocketmine/network/mcpe/RakLibInterface(109): raklib\server\ServerHandler->handlePacket() 2019-06-09 [23:49:59] [Server thread/DEBUG]: #15 src/pocketmine/network/mcpe/RakLibInterface(99): pocketmine\network\mcpe\RakLibInterface->process() 2019-06-09 [23:49:59] [Server thread/DEBUG]: #16 vendor/pocketmine/snooze/src/SleeperHandler(123): pocketmine\network\mcpe\RakLibInterface->pocketmine\network\mcpe\{closure}() 2019-06-09 [23:49:59] [Server thread/DEBUG]: #17 vendor/pocketmine/snooze/src/SleeperHandler(85): pocketmine\snooze\SleeperHandler->processNotifications() 2019-06-09 [23:49:59] [Server thread/DEBUG]: #18 src/pocketmine/Server(2339): pocketmine\snooze\SleeperHandler->sleepUntil(double 1560095399.6366) 2019-06-09 [23:49:59] [Server thread/DEBUG]: #19 src/pocketmine/Server(2196): pocketmine\Server->tickProcessor() 2019-06-09 [23:49:59] [Server thread/DEBUG]: #20 src/pocketmine/Server(1775): pocketmine\Server->start() 2019-06-09 [23:49:59] [Server thread/DEBUG]: #21 src/pocketmine/PocketMine(266): pocketmine\Server->__construct(BaseClassLoader object, pocketmine\utils\MainLogger object, string /storage/emulated/0/PocketMine/, string /storage/emulated/0/PocketMine/plugins/) 2019-06-09 [23:49:59] [Server thread/DEBUG]: #22 (1): require(string phar:///storage/emulated/0/PocketMine/PocketMine-MP.phar/src/pocketmine/PocketMine.php) 2019-06-09 [23:49:59] [Server thread/INFO]: Makairosei left the game 2019-06-09 [23:49:59] [Server thread/INFO]: Makairosei[/192.168.2.12:41996] logged out due to Internal server error 2019-06-09 [23:49:59] [RakLibServer thread/NOTICE]: Blocked 192.168.2.12 for 5 seconds The file where the problem exists:
PHP: <?phpnamespace gofightcore\hotbarmenu;use pocketmine\command\Command;use pocketmine\command\ConsoleCommandSender;use pocketmine\command\CommandSender;use pocketmine\Player;use pocketmine\Server;use pocketmine\plugin\Plugin;use pocketmine\event\Listener;use pocketmine\item\Item;use pcoketmine\plugin\PluginBase;use pocketmine\utils\TextFormat;use pocketmine\utils\Config;use pocketmine\event\player\PlayerJoinEvent;use pocketmine\event\player\PlayerRespawnEvent;use pocketmine\event\entity\EntityLevelChangeEvent;use pocketmine\event\player\PlayerInteractEvent;use gofightcore\Main;use gofightcore\hotbarmenu\PlayerHead;class HotbarMenu extends Command implements Listener { private $config; public function __construct(Main $plugin) { parent::__construct("hotbarmenu", "Gives you the hotbar menu.", "Usage: /hotbarmenu", ["hotbarmenu"]); $this->setPermission('hotbarmenu.command'); } public function execute(CommandSender $sender, string $label, array $args) : bool { if(!$this->testPermission($sender)){ return true; } if ($sender instanceof Player) { $sender->getInventory()->clearAll(); $sender->getInventory()->setItem(0, PlayerHead::getPlayerHeadItem($sender->getSkin(), $sender->getName())->setCustomName("§6Your stats")); $sender->getInventory()->setItem(2, Item::get(Item::PAPER, 3, 1)->setCustomName("§7Info")); $sender->getInventory()->setItem(4, Item::get(370,0,1)->setCustomName("§6Cosmetics")); $sender->getInventory()->setItem(8, Item::get(Item::DYE, 10, 1)->setCustomName("§bInvisible players")); return true; } if ($sender instanceof ConsoleCommandSender) { $sender->sendMessage("Run this command in-game!"); return true; } } public function onPlayerJoin(PlayerJoinEvent $ev) { $player = $ev->getPlayer(); $name = $ev->getPlayer()->getName(); $player->getInventory()->clearAll(); $player->getInventory()->setItem(0, PlayerHead::getPlayerHeadItem($player->getSkin(), $player->getName())->setCustomName("§6Your stats")); $player->getInventory()->setItem(2, Item::get(Item::PAPER, 3, 1)->setCustomName("§7Info")); $player->getInventory()->setItem(4, Item::get(370,0,1)->setCustomName("§6Cosmetics")); $player->getInventory()->setItem(8, Item::get(Item::DYE, 10, 1)->setCustomName("§bInvisible players")); } public function handleInteraction(PlayerInteractEvent $ev) { $player = $ev->getPlayer(); $inventory = $player->getInventory(); $hand = $inventory->getItemInHand(); //your stats if($hand->getCustomName() == "§6Your stats"){ $wsconfig = new Config("plugins/GoFightCore/stats/wins/wins.yml", Config::YAML); $ksconfig = new Config("plugins/GoFightCore/stats/kills/kills.yml", Config::YAML); $wsconfig->getAll(); $ksconfig->getAll(); $player->sendMessage("§6Your name: " . $player->getName() . "\n §bSky§fWars §eWins: " . $wsconfig->get($player->getName(), 0) ."\n §cKills: " . $ksconfig->get($player->getName(), 0) . " "); } //info if($hand->getCustomName() == "§7Info"){ $player->sendMessage("§7IP/Port: gofightnetwork.ddns.net/19132"); $player->sendMessage("§eDiscord link: §bhttps://discord.gg/XswCmNA"); } //cosmetics if($hand->getCustomName() == "§6Cosmetics"){ $player->getInventory()->clearAll(); $inventory->setItem(0, Item::get(280,0,1)->setCustomName("§6Lightning stick")); $inventory->setItem(2, Item::get(280,0,1)->setCustomName("§6Knockback stick")); $inventory->setItem(3, Item::get(420,0,1)->setCustomName("§6Sizes")); $inventory->setItem(4, Item::get(280,0,1)->setCustomName("soon")); $inventory->setItem(5, Item::get(280,0,1)->setCustomName("soob")); $inventory->setItem(6, Item::get(264,0,1)->setCustomName("§6More cosmetics")); $inventory->setItem(8, Item::get(Item::PAPER,0,1)->setCustomName("§cQuit cosmetics")); } //more cosmetics if($hand->getCustomName() == "§6More cosmetics"){ $player->getInventory()->clearAll(); $inventory->setItem(0, Item::get(280,0,1)->setCustomName("Lightning Stick")); $inventory->setItem(2, Item::get(280,0,1)->setCustomName("Knockback Stick")); $inventory->setItem(3, Item::get(280,0,1)->setCustomName("soon")); $inventory->setItem(4, Item::get(280,0,1)->setCustomName("soon")); $inventory->setItem(5, Item::get(280,0,1)->setCustomName("soon")); $inventory->setItem(6, Item::get(270,0,1)->setCustomName("§6Cosmetics page1")); $inventory->setItem(8, Item::get(Item::PAPER,0,1)->setCustomName("§cQuit cosmetics")); } //back to cosmetics if($hand->getCustomName() == "§6Cosmetics page1"){ $player->getInventory()->clearAll(); $inventory->setItem(0, Item::get(280,0,1)->setCustomName("Lightning stick")); $inventory->setItem(2, Item::get(280,0,1)->setCustomName("Knockback stick")); $inventory->setItem(3, Item::get(280,0,1)->setCustomName("Lightning Stick")); $inventory->setItem(4, Item::get(280,0,1)->setCustomName("Lightning Stick")); $inventory->setItem(5, Item::get(280,0,1)->setCustomName("Lightning Stick")); $inventory->setItem(6, Item::get(264,0,1)->setCustomName("§6More cosmetics")); $inventory->setItem(8, Item::get(Item::PAPER,0,1)->setCustomName("§cQuit cosmetics")); } //quit cosmetics if($hand->getCustomName() == "§cQuit cosmetics"){ $player->getInventory()->clearAll(); $inventory->setItem(0, PlayerHead::getPlayerHeadItem($player->getSkin(), $player->getName())->setCustomName("§6Your stats")); $inventory->setItem(2, Item::get(Item::PAPER, 3)->setCustomName("§7Info")); $inventory->setItem(4, Item::get(370,0,1)->setCustomName("§6Cosmetics")); $inventory->setItem(8, Item::get(Item::DYE, 10)->setCustomName("§bInvisible players")); } //sizes if($hand->getCustomName() == "§6Sizes"){ if($player->hasPermission("size.command") == true) { $player->getInventory()->clearAll(); $inventory->setItem(0, Item::get(420,0,1)->setCustomName("§eSmall")); $inventory->setItem(2, Item::get(420,0,1)->setCustomName("§eNormal")); $inventory->setItem(3, Item::get(420,0,1)->setCustomName("§eMedium")); $inventory->setItem(4, Item::get(420,0,1)->setCustomName("§eBig")); $inventory->setItem(8, Item::get(Item::PAPER,0,1)->setCustomName("§cQuit cosmetics")); $ev->setCancelled(); } if($player->hasPermission("size.command") == false) { $player->sendMessage("You need a Higher Rank to use this cosmetic.Buy Ranks on gofightnetworkshop.buycraft.net"); } $ev->setCancelled(); } //size small if($hand->getCustomName() == "§eSmall"){ $player = $ev->getPlayer(); Server::getInstance()->dispatchCommand(new $player, "size 0.6"); } //size normal if($hand->getCustomName() == "§eNormal"){ $player = $ev->getPlayer(); Server::getInstance()->dispatchCommand(new $player, "size 1"); } //size medium if($hand->getCustomName() == "§eMedium"){ $player = $ev->getPlayer(); Server::getInstance()->dispatchCommand(new $player, "size 2.5"); } //size big if($hand->getCustomName() == "§eBig"){ $player = $ev->getPlayer(); Server::getInstance()->dispatchCommand(new $player, "size 4"); } //invisible players if($hand->getCustomName() == "§bInvisible players"){ foreach ($player->getServer()->getOnlinePlayers() as $p) { $player->hidePlayer($p); } $inventory->setItemInHand(Item::get(Item::DYE, 8)->setCustomName("§aVisible players")); $title = "§4Disable revealing"; $subtitle = "§cDisabled!"; $player->addTitle($title, $subtitle); } //visible players if($hand->getCustomName() == "§aVisible players"){ foreach ($player->getServer()->getOnlinePlayers() as $p) { $player->showPlayer($p); } $inventory->setItemInHand(Item::get(Item::DYE, 10)->setCustomName("§bInvisible players")); $title = "§2Revealing all players"; $subtitle = "§aEnabled!"; $player->addTitle($title, $subtitle); } } public function onRespawn(PlayerRespawnEvent $ev) { $player = $ev->getPlayer(); $inventory = $player->getInventory(); $player->getInventory()->clearAll(); $inventory->setItem(0, PlayerHead::getPlayerHeadItem($player->getSkin(), $player->getName())->setCustomName("§6Your stats")); $inventory->setItem(2, Item::get(Item::PAPER, 0, 1)->setCustomName("§7Info")); $inventory->setItem(4, Item::get(370,0,1)->setCustomName("§6Cosmetics")); $inventory->setItem(8, Item::get(Item::DYE, 10, 1)->setCustomName("§bInvisible players")); }}
The Main Class: PHP: <?phpnamespace gofightcore;use pocketmine\plugin\Plugin;use pocketmine\plugin\PluginBase;use pocketmine\Server;use pocketmine\Player;use pocketmine\entity\Entity;use pocketmine\utils\Config;use gofightcore\killmoney\KillMoney;use gofightcore\hotbarmenu\PlayerHead;use gofightcore\hotbarmenu\HeadEntity;use gofightcore\stats\KillStats;use gofightcore\stats\KBWinStats;use gofightcore\stats\SWWinStats;use gofightcore\hotbarmenu\HotbarMenu;use gofightcore\serversshop\Open;usegofightcore\cosmeticsthings\LightningStick;use gofightcore\cosmeticsthings\KnockbackStick;usegofightcore\cosmeticsthings\SizePlayer;class Main extends PluginBase { public function onEnable() : void { //check or make kill stats config @mkdir($this->getDataFolder()); @mkdir($this->getDataFolder()."stats"); @mkdir($this->getDataFolder()."stats/kills"); $this->saveResource("killcfg.yml"); //check or make sw win stats config @mkdir($this->getDataFolder()); @mkdir($this->getDataFolder()."stats"); @mkdir($this->getDataFolder()."stats/wins"); $this->saveResource("swwincfg.yml"); //check or make knockback game stats config @mkdir($this->getDataFolder()); @mkdir($this->getDataFolder()."stats"); @mkdir($this->getDataFolder()."stats/wins"); $this->saveResource("kbwincfg.yml"); //kbgame stats $this->getServer()->getPluginManager()->registerEvents(new KBWinStats($this), $this); $this->getServer()->getCommandMap()->register("settkbl", new KBWinStats($this)); //kill stats $this->getServer()->getPluginManager()->registerEvents(new KillStats($this), $this); $this->getServer()->getCommandMap()->register("settkl", new KillStats($this)); //win stats $this->getServer()->getPluginManager()->registerEvents(new SWWinStats($this), $this); $this->getServer()->getCommandMap()->register("setwlb", new SWWinStats($this)); //serversshop $this->getServer()->getCommandMap()->register("openserversshop", new Open($this)); $this->getServer()->getPluginManager()->registerEvents(new Open($this), $this); //hotbar menu $this->getServer()->getPluginManager()->registerEvents(new HotbarMenu($this), $this); $this->getServer()->getCommandMap()->register("hotbarmenu", new HotbarMenu($this)); //cosmetic things $this->getServer()->getCommandMap()->register("lightningstick", new LightningStick($this)); $this->getServer()->getPluginManager()->registerEvents(new LightningStick($this), $this); $this->getServer()->getCommandMap()->register("knockbackstick", new KnockbackStick($this)); $this->getServer()->getPluginManager()->registerEvents(new KnockbackStick($this), $this); //killmoney $this->getServer()->getPluginManager()->registerEvents(new KillMoney($this), $this); //player head stats item $this->getServer()->getPluginManager()->registerEvents(new PlayerHead($this), $this); Entity::registerEntity(HeadEntity::class, true, ['PlayerHead']); //sizeplayer $this->getServer()->getPluginManager()->registerEvents(new SizePlayer($this), $this); $this->getServer()->getCommandMap()->register("size", new SizePlayer($this)); $this->dataFile = new Config($this->getDataFolder() . "data.yml", Config::YAML, ["version" => 1, "sizes" => []]); $this->data = $this->dataFile->getAll(); } public function saveData(){ $this->dataFile->setAll($this->data); $this->dataFile->save(); } public function updateSize(Player $player, float $size, bool $save = true): void{ $this->data["sizes"][$player->getLowerCaseName()] = $size; $player->setScale($size); if($save === true) $this->saveData(); } }
I didnt send all the files because I think that's useless,and the files are many.Also I tried many things to fix it,but I had errors again.
you are calling a property, I think you meant to call the function. Put parenthesis in the end like this, ()
PHP: //size small if($hand->getCustomName() == "§eSmall"){ $player = $ev->getPlayer(); Server::getInstance()->dispatchCommand(new $player->getName(), "size 0.6"); } //size normal if($hand->getCustomName() == "§eNormal"){ $player = $ev->getPlayer(); Server::getInstance()->dispatchCommand(new $player->getName(), "size 1"); } //size medium if($hand->getCustomName() == "§eMedium"){ $player = $ev->getPlayer(); Server::getInstance()->dispatchCommand(new $player->getName(), "size 2.5"); } //size big if($hand->getCustomName() == "§eBig"){ $player = $ev->getPlayer(); Server::getInstance()->dispatchCommand(new $player->getName(), "size 4"); }
[18:08:35] [Server thread/CRITICAL]: ArgumentCountError: "Too few arguments to function pocketmine\Player::__construct(), 0 passed in /storage/emulated/0/PocketMine/plugins/GoFightCore-master/src/gofightcore/hotbarmenu/HotbarMenu.php on line 140 and exactly 3 expected" (EXCEPTION) in "src/pocketmine/Player" at line 759