Skip to content

Commit

Permalink
v0.0.1
Browse files Browse the repository at this point in the history
  • Loading branch information
BlusteryS authored Apr 6, 2022
1 parent 13fd554 commit f9fc348
Show file tree
Hide file tree
Showing 3 changed files with 111 additions and 0 deletions.
10 changes: 10 additions & 0 deletions plugin.yml
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
21 changes: 21 additions & 0 deletions src/NewPlugin/NewBanItem/Main.php
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);
}
}
80 changes: 80 additions & 0 deletions src/NewPlugin/NewBanItem/listeners/EventListener.php
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);
}
}

0 comments on commit f9fc348

Please sign in to comment.