Skip to content

Commit 09939e5

Browse files
authored
Ну... Решил обновить мой первый плагин
1 parent 3f7403b commit 09939e5

File tree

3 files changed

+106
-145
lines changed

3 files changed

+106
-145
lines changed

plugin.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: LimitGM
22
main: BlusterySasha\LimitGM\Main
3-
version: 0.0.1
3+
version: 1.0.0
44
api: 3.0.0
55
author: BlusterySasha
66
description: "Плагин на ограничение креатива"

src/BlusterySasha/LimitGM/Main.php

Lines changed: 10 additions & 144 deletions
Original file line numberDiff line numberDiff line change
@@ -1,150 +1,16 @@
11
<?php
22

3+
declare(strict_types=1);
4+
35
namespace BlusterySasha\LimitGM;
46

7+
use EventListener;
58
use pocketmine\plugin\PluginBase;
6-
use pocketmine\Player;
7-
use pocketmine\block\Block;
8-
use pocketmine\event\Listener;
9-
use pocketmine\event\player\PlayerDropItemEvent;
10-
use pocketmine\event\player\PlayerDeathEvent;
11-
use pocketmine\event\player\PlayerGameModeChangeEvent;
12-
use pocketmine\event\player\PlayerInteractEvent;
13-
use pocketmine\event\entity\EntityDamageEvent;
14-
use pocketmine\event\entity\EntityDamageByEntityEvent;
15-
use pocketmine\event\block\BlockPlaceEvent;
16-
use pocketmine\network\mcpe\protocol\PlaySoundPacket;
17-
18-
class Main extends PluginBase implements Listener {
19-
20-
public function onEnable() {
21-
$this->getServer()->getPluginManager()->registerEvents($this, $this);
22-
}
23-
24-
public function onPlace(BlockPlaceEvent $event) {
25-
$player = $event->getPlayer();
26-
if ($player->isOp() || $player->hasPermission("system.bypass")) {
27-
return;
28-
}
29-
$block = $event->getBlock()->getId();
30-
$blacklist = [Block::FIRE, Block::LAVA, Block::ACTIVATOR_RAIL, Block::WATER, Block::HOPPER_BLOCK, Block::PACKED_ICE, Block::ICE, Block::MONSTER_SPAWNER, Block::SAND, Block::ENDER_CHEST, Block::RAIL, Block::ENCHANTMENT_TABLE, Block::ANVIL, Block::ITEM_FRAME_BLOCK, Block::SHULKER_BOX, Block::TNT, Block::DIAMOND_BLOCK, Block::IRON_BLOCK, Block::LAPIS_BLOCK, Block::EMERALD_BLOCK, Block::COAL_BLOCK, Block::UNDYED_SHULKER_BOX, Block::DIAMOND_ORE, Block::QUARTZ_ORE, Block::EMERALD_ORE, Block::COAL_ORE, Block::REDSTONE_ORE, Block::LAPIS_ORE, Block::IRON_ORE, Block::GOLD_ORE, Block::GOLD_BLOCK, Block::OBSIDIAN, Block::BEDROCK, Block::END_PORTAL_FRAME, Block::PISTON, Block::STICKY_PISTON];
31-
if ($player->isCreative()) {
32-
if (in_array($blocks, $blacklist)) {
33-
$player->sendTip("§l§7Вы не можете ставить данный блок в креативе!");
34-
$event->setCancelled();
35-
$pk = new PlaySoundPacket();
36-
$pk->x = $player->getX();
37-
$pk->y = $player->getY();
38-
$pk->z = $player->getZ();
39-
$pk->volume = 1;
40-
$pk->pitch = 1;
41-
$pk->soundName = 'cauldron.explode';
42-
$player->dataPacket($pk);
43-
}
44-
}
45-
}
46-
47-
public function onPlayerGameModeChange(PlayerGameModeChangeEvent $event) {
48-
$player = $event->getPlayer();
49-
if ($player->isOp() || $player->hasPermission("system.bypass")) {
50-
return;
51-
}
52-
$player->getInventory()->clearAll();
53-
$player->getArmorInventory()->clearAll();
54-
$player->sendTip("§l§7Предметы очищены, т. к. Вы перешли в другой режим!");
55-
$player->addTitle("§e§lПредметы очищены§7!", " ");
56-
$pk = new PlaySoundPacket();
57-
$pk->x = $player->getX();
58-
$pk->y = $player->getY();
59-
$pk->z = $player->getZ();
60-
$pk->volume = 1;
61-
$pk->pitch = 1;
62-
$pk->soundName = 'cauldron.explode';
63-
$player->dataPacket($pk);
64-
}
65-
66-
public function onInteract(PlayerInteractEvent $event) {
67-
$player = $event->getPlayer();
68-
if ($player->isOp() || $player->hasPermission("system.bypass")) {
69-
return;
70-
}
71-
$block = $event->getBlock()->getId();
72-
$blacklist = [Block::WATER, Block::LAVA, Block::MONSTER_SPAWNER, Block::HOPPER_BLOCK, Block::ENDER_CHEST, Block::CRAFTING_TABLE, Block::CHEST, Block::FURNACE, Block::BURNING_FURNACE, Block::TRAPPED_CHEST, Block::ENCHANTMENT_TABLE, Block::ANVIL, Block::ITEM_FRAME_BLOCK, Block::SHULKER_BOX, Block::TNT, Block::DROPPER, Block::DISPENSER, Block::UNDYED_SHULKER_BOX];
73-
if ($player->isCreative()) {
74-
if (in_array($blocks, $blacklist)) {
75-
$player->sendTip("§l§7Данный блок нельзя трогать в креативе!");
76-
$pk = new PlaySoundPacket();
77-
$pk->x = $player->getX();
78-
$pk->y = $player->getY();
79-
$pk->z = $player->getZ();
80-
$pk->volume = 1;
81-
$pk->pitch = 1;
82-
$pk->soundName = 'cauldron.explode';
83-
$player->dataPacket($pk);
84-
$event->setCancelled();
85-
}
86-
}
87-
}
88-
89-
public function onPlayerDeath(PlayerDeathEvent $event) {
90-
$player = $event->getPlayer();
91-
if ($player->isOp() || $player->hasPermission("system.bypass")) {
92-
return;
93-
}
94-
if ($player->isCreative()) {
95-
$player->getInventory()->clearAll();
96-
$player->getArmorInventory()->clearAll();
97-
$player->addTitle("§c§lВы умерли§7!", " ");
98-
$pk = new PlaySoundPacket();
99-
$pk->x = $player->getX();
100-
$pk->y = $player->getY();
101-
$pk->z = $player->getZ();
102-
$pk->volume = 1;
103-
$pk->pitch = 1;
104-
$pk->soundName = 'cauldron.explode';
105-
$player->dataPacket($pk);
106-
}
107-
}
108-
109-
public function onDropItem(PlayerDropItemEvent $event) {
110-
$player = $event->getPlayer();
111-
if ($player->isOp() || $player->hasPermission("system.bypass")) {
112-
return;
113-
}
114-
if ($player->isCreative()) {
115-
$player->sendTip("§l§7Вы не можете выбрасывать вещи в творческом режиме!");
116-
$pk = new PlaySoundPacket();
117-
$pk->x = $player->getX();
118-
$pk->y = $player->getY();
119-
$pk->z = $player->getZ();
120-
$pk->volume = 1;
121-
$pk->pitch = 1;
122-
$pk->soundName = 'cauldron.explode';
123-
$player->dataPacket($pk);
124-
$event->setCancelled();
125-
}
126-
}
1279

128-
public function onAttack(EntityDamageEvent $event) {
129-
if ($event instanceof EntityDamageByEntityEvent) {
130-
$player = $event->getDamager();
131-
if ($player->isOp() || $player->hasPermission("system.bypass")) {
132-
return;
133-
}
134-
if ($player instanceof Player) {
135-
if ($player->isCreative()) {
136-
$player->sendTip("§l§7Вы не можете бить игроков в креативе!");
137-
$pk = new PlaySoundPacket();
138-
$pk->x = $player->getX();
139-
$pk->y = $player->getY();
140-
$pk->z = $player->getZ();
141-
$pk->volume = 1;
142-
$pk->pitch = 1;
143-
$pk->soundName = 'cauldron.explode';
144-
$player->dataPacket($pk);
145-
$event->setCancelled();
146-
}
147-
}
148-
}
149-
}
150-
}
10+
class Main extends PluginBase {
11+
public function onEnable() {
12+
$this->getLogger()->info("§cПлагин успешно запущен!");
13+
$this->getLogger()->info("§cАвтор плагина: §e§lvk.com/blusterysasha");
14+
$this->getServer()->getPluginManager()->registerEvents(new EventListener(), $this);
15+
}
16+
}
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
use pocketmine\block\Block;
5+
use pocketmine\event\block\BlockPlaceEvent;
6+
use pocketmine\event\entity\EntityDamageByEntityEvent;
7+
use pocketmine\event\Listener;
8+
use pocketmine\event\player\PlayerDeathEvent;
9+
use pocketmine\event\player\PlayerDropItemEvent;
10+
use pocketmine\event\player\PlayerGameModeChangeEvent;
11+
use pocketmine\event\player\PlayerInteractEvent;
12+
use pocketmine\network\mcpe\protocol\PlaySoundPacket;
13+
use pocketmine\Player;
14+
15+
class EventListener implements Listener {
16+
public function onPlace(BlockPlaceEvent $event) {
17+
$player = $event->getPlayer();
18+
if ($player->hasPermission("limitgm.bypass")) {
19+
return;
20+
}
21+
$blacklist = [Block::FIRE, Block::LAVA, Block::ACTIVATOR_RAIL, Block::WATER, Block::HOPPER_BLOCK, Block::PACKED_ICE, Block::ICE, Block::MONSTER_SPAWNER, Block::SAND, Block::ENDER_CHEST, Block::RAIL, Block::ENCHANTMENT_TABLE, Block::ANVIL, Block::ITEM_FRAME_BLOCK, Block::SHULKER_BOX, Block::TNT, Block::DIAMOND_BLOCK, Block::IRON_BLOCK, Block::LAPIS_BLOCK, Block::EMERALD_BLOCK, Block::COAL_BLOCK, Block::UNDYED_SHULKER_BOX, Block::DIAMOND_ORE, Block::QUARTZ_ORE, Block::EMERALD_ORE, Block::COAL_ORE, Block::REDSTONE_ORE, Block::LAPIS_ORE, Block::IRON_ORE, Block::GOLD_ORE, Block::GOLD_BLOCK, Block::OBSIDIAN, Block::BEDROCK, Block::END_PORTAL_FRAME, Block::PISTON, Block::STICKY_PISTON];
22+
if ($player->isCreative() && in_array($event->getBlock()->getId(), $blacklist)) {
23+
$player->sendTip("§l§7Вы не можете ставить данный блок в креативе!");
24+
$event->setCancelled();
25+
$this->sendExplode($player);
26+
}
27+
}
28+
29+
public function onPlayerGameModeChange(PlayerGameModeChangeEvent $event) {
30+
$player = $event->getPlayer();
31+
if ($player->hasPermission("limitgm.bypass")) {
32+
return;
33+
}
34+
$player->getInventory()->clearAll();
35+
$player->getArmorInventory()->clearAll();
36+
$player->sendTip("§l§7Предметы очищены, т. к. вы перешли в другой режим!");
37+
$player->sendTitle("§e§lПредметы очищены§7!");
38+
$this->sendExplode($player);
39+
}
40+
41+
public function onInteract(PlayerInteractEvent $event) {
42+
$player = $event->getPlayer();
43+
if (!$player->isCreative() || $player->hasPermission("limitgm.bypass")) {
44+
return;
45+
}
46+
$blacklist = [Block::WATER, Block::LAVA, Block::MONSTER_SPAWNER, Block::HOPPER_BLOCK, Block::ENDER_CHEST, Block::CRAFTING_TABLE, Block::CHEST, Block::FURNACE, Block::BURNING_FURNACE, Block::TRAPPED_CHEST, Block::ENCHANTMENT_TABLE, Block::ANVIL, Block::ITEM_FRAME_BLOCK, Block::SHULKER_BOX, Block::TNT, Block::DROPPER, Block::DISPENSER, Block::UNDYED_SHULKER_BOX];
47+
if (in_array($event->getBlock()->getId(), $blacklist)) {
48+
$player->sendTip("§l§7Данный блок нельзя трогать в креативе!");
49+
$event->setCancelled();
50+
$this->sendExplode($player);
51+
}
52+
}
53+
54+
public function onPlayerDeath(PlayerDeathEvent $event) {
55+
$player = $event->getPlayer();
56+
if (!$player->isCreative() || $player->hasPermission("limitgm.bypass")) {
57+
return;
58+
}
59+
$player->getInventory()->clearAll();
60+
$player->getArmorInventory()->clearAll();
61+
$player->sendTitle("§c§lВы умерли§7!");
62+
$this->sendExplode($player);
63+
}
64+
65+
public function onDropItem(PlayerDropItemEvent $event) {
66+
$player = $event->getPlayer();
67+
if (!$player->isCreative() || $player->hasPermission("limitgm.bypass")) {
68+
return;
69+
}
70+
$player->sendTip("§l§7Вы не можете выбрасывать вещи в творческом режиме!");
71+
$event->setCancelled();
72+
$this->sendExplode($player);
73+
}
74+
75+
public function onAttack(EntityDamageByEntityEvent $event) {
76+
$player = $event->getDamager();
77+
if (!($player instanceof Player) || !$player->isCreative() || $player->hasPermission("limitgm.bypass")) {
78+
return;
79+
}
80+
$player->sendTip("§l§7Вы не можете бить игроков в креативе!");
81+
$event->setCancelled();
82+
$this->sendExplode($player);
83+
}
84+
85+
private function sendExplode(Player $player) : void {
86+
$pk = new PlaySoundPacket();
87+
$pk->x = $player->getX();
88+
$pk->y = $player->getY();
89+
$pk->z = $player->getZ();
90+
$pk->volume = 1;
91+
$pk->pitch = 1;
92+
$pk->soundName = "cauldron.explode";
93+
$player->dataPacket($pk);
94+
}
95+
}

0 commit comments

Comments
 (0)