I have a problem with my protection plugin. Here is my code.. PHP: <?phpnamespace AntiGrief;use pocketmine\block\BurningFurnace;use pocketmine\block\Chest;use pocketmine\block\Furnace;use pocketmine\block\IronDoor;use pocketmine\block\Lava;use pocketmine\block\Stonecutter;use pocketmine\block\Trapdoor;use pocketmine\block\Water;use pocketmine\block\WoodDoor;use pocketmine\block\Workbench;use pocketmine\event\block\BlockBreakEvent;use pocketmine\event\block\BlockPlaceEvent;use pocketmine\event\player\PlayerBucketEmptyEvent;use pocketmine\event\player\PlayerBucketFillEvent;use pocketmine\event\player\PlayerInteractEvent;use pocketmine\event\Listener;use pocketmine\plugin\PluginBase;use pocketmine\utils\TextFormat;use pocketmine\Player;class Main extends PluginBase implements Listener{ public function onEnable(){ $this->getServer()->getPluginManager()->registerEvents($this, $this); $this->getLogger()->info(TextFormat::GREEN."Enabling ".$this->getDescription()->getFullName()."..."); } public function onDisable(){ $this->getLogger()->info(TextFormat::RED."Disabling ".$this->getDescription()->getFullName()."..."); } public function onPlaceBreak(BlockPlaceEvent $event){ $player = $event->getPlayer(); if($player->getLevel()->getName()=="survival"){ $event->setCancelled(false); }else $event->setCancelled(true); } public function onBlockPlace(BlockPlaceEvent $event){ $player = $event->getPlayer(); if($player->getLevel()->getName()=="survival"){ $event->setCancelled(false); }else $event->setCancelled(true); } public function onPlayerBucketEmpty(PlayerBucketEmptyEvent $event){ $player = $event->getPlayer(); if($player->getLevel()->getName()=="survival"){ $event->setCancelled(false); }else $event->setCancelled(true); } public function onPlayerBucketFill(PlayerBucketFillEvent $event){ $player = $event->getPlayer(); if($player->getLevel()->getName()=="survival"){ $event->setCancelled(false); }else $event->setCancelled(true); }} But I can still break and place and do anything in the world called "spawn"!!! I am not op, but I can still do that.
And if player getlevelbynane Or get name(I think is the first one) is survival, I think u should set cancelled true not false
Try that. I changed getName() to get LevelByName() PHP: <?phpnamespace AntiGrief;use pocketmine\block\BurningFurnace;use pocketmine\block\Chest;use pocketmine\block\Furnace;use pocketmine\block\IronDoor;use pocketmine\block\Lava;use pocketmine\block\Stonecutter;use pocketmine\block\Trapdoor;use pocketmine\block\Water;use pocketmine\block\WoodDoor;use pocketmine\block\Workbench;use pocketmine\event\block\BlockBreakEvent;use pocketmine\event\block\BlockPlaceEvent;use pocketmine\event\player\PlayerBucketEmptyEvent;use pocketmine\event\player\PlayerBucketFillEvent;use pocketmine\event\player\PlayerInteractEvent;use pocketmine\event\Listener;use pocketmine\plugin\PluginBase;use pocketmine\utils\TextFormat;use pocketmine\Player;class Main extends PluginBase implements Listener{ public function onEnable(){ $this->getServer()->getPluginManager()->registerEvents($this, $this); $this->getLogger()->info(TextFormat::GREEN."Enabling ".$this->getDescription()->getFullName()."..."); } public function onDisable(){ $this->getLogger()->info(TextFormat::RED."Disabling ".$this->getDescription()->getFullName()."..."); } public function onPlaceBreak(BlockPlaceEvent $event){ $player = $event->getPlayer(); if($player->getLevel()->getName()=="survival"){ $event->setCancelled(false); }else $event->setCancelled(true); } public function onBlockPlace(BlockPlaceEvent $event){ $player = $event->getPlayer(); if($player->getLevel()->getName()=="survival"){ $event->setCancelled(false); }else $event->setCancelled(true); } public function onPlayerBucketEmpty(PlayerBucketEmptyEvent $event){ $player = $event->getPlayer(); if($player->getLevel()->getLevelByName()=="survival"){ $event->setCancelled(false); }else $event->setCancelled(true); } public function onPlayerBucketFill(PlayerBucketFillEvent $event){ $player = $event->getPlayer(); if($player->getLevel()->getLevelByName()=="survival"){ $event->setCancelled(false); }else $event->setCancelled(true); }}
Your first code is correct. Its just that you have it checking to see if the player is in the world "survival" not "spawn". You also have two of the exact same events.
What the If you don't understand, don't reply. You are making the situation worse. The problem is, setCancelled() or setCancelled(true) cancels the event, and setCancelled(false) un-cancels the event.