-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
111 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
name: NewBanItem | ||
main: NewPlugin\NewBanItem\Main | ||
version: 0.0.1 | ||
api: 4.0.0 | ||
author: BlusterySasha | ||
website: vk.com/blusterysasha | ||
|
||
permissions: | ||
newplugin.bypass: | ||
default: op |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace NewPlugin\NewBanItem; | ||
|
||
use NewPlugin\NewBanItem\listeners\EventListener; | ||
use pocketmine\item\ItemIds; | ||
use pocketmine\plugin\PluginBase; | ||
use pocketmine\utils\Config; | ||
|
||
class Main extends PluginBase { | ||
public function onEnable() : void { | ||
$this->getServer()->getPluginManager()->registerEvents(new EventListener((new Config($this->getDataFolder() . "config.yml", Config::YAML, [ | ||
"message" => "§f(§cРежим игры§f) Вы не можете использовать этот предмет в креативе!", | ||
"enableLava" => FALSE, | ||
"enableWater" => FALSE, | ||
"banned" => [ItemIds::BEDROCK, ItemIds::TNT] | ||
]))->getAll()), $this); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace NewPlugin\NewBanItem\listeners; | ||
|
||
use pocketmine\block\Lava; | ||
use pocketmine\block\Water; | ||
use pocketmine\event\block\BlockBreakEvent; | ||
use pocketmine\event\block\BlockPlaceEvent; | ||
use pocketmine\event\Listener; | ||
use pocketmine\event\player\PlayerBucketEmptyEvent; | ||
use pocketmine\event\player\PlayerBucketFillEvent; | ||
use pocketmine\event\player\PlayerInteractEvent; | ||
|
||
class EventListener implements Listener { | ||
/** @var array<int> $banned */ | ||
private array $banned; | ||
private string $message; | ||
private bool $disableLava; | ||
private bool $disableWater; | ||
|
||
public function __construct(array $cfg) { | ||
$this->banned = $cfg["banned"]; | ||
$this->message = $cfg["message"]; | ||
$this->disableLava = !$cfg["enableLava"]; | ||
$this->disableWater = !$cfg["enableWater"]; | ||
} | ||
|
||
public function onFill(PlayerBucketFillEvent $event) : void { | ||
if (($player = $event->getPlayer())->hasPermission("newplugin.bypass")) return; | ||
|
||
$bucket = $event->getBucket()->getLiquid(); | ||
if (($bucket instanceof Lava && $this->disableLava) || ($bucket instanceof Water && $this->disableWater)) { | ||
$player->sendMessage($this->message); | ||
$event->cancel(); | ||
} | ||
} | ||
|
||
public function onEmpty(PlayerBucketEmptyEvent $event) : void { | ||
if (($player = $event->getPlayer())->hasPermission("newplugin.bypass")) return; | ||
|
||
$bucket = $event->getBucket()->getLiquid(); | ||
if (($bucket instanceof Lava && $this->disableLava) || ($bucket instanceof Water && $this->disableWater)) { | ||
$player->sendMessage($this->message); | ||
$event->cancel(); | ||
} | ||
} | ||
|
||
public function onBreak(BlockBreakEvent $event) : void { | ||
if (($player = $event->getPlayer())->hasPermission("newplugin.bypass")) return; | ||
|
||
if ($this->contains($event->getBlock()->getId())) { | ||
$player->sendMessage($this->message); | ||
$event->cancel(); | ||
} | ||
} | ||
|
||
public function onPlace(BlockPlaceEvent $event) : void { | ||
if (($player = $event->getPlayer())->hasPermission("newplugin.bypass")) return; | ||
|
||
if ($this->contains($event->getBlock()->getId())) { | ||
$player->sendMessage($this->message); | ||
$event->cancel(); | ||
} | ||
} | ||
|
||
public function onInteract(PlayerInteractEvent $event) : void { | ||
if (($player = $event->getPlayer())->hasPermission("newplugin.bypass")) return; | ||
|
||
if ($this->contains($event->getBlock()->getId())) { | ||
$player->sendMessage($this->message); | ||
$event->cancel(); | ||
} | ||
} | ||
|
||
private function contains(int $id) : bool{ | ||
return in_array($id, $this->banned, TRUE); | ||
} | ||
} |