From a2dba5e17fc37e65215777ca5bb1ad5f1b80dfd8 Mon Sep 17 00:00:00 2001 From: Ad5001 Date: Sun, 19 Feb 2017 17:51:19 +0100 Subject: [PATCH] Fixing almost everything + README ! (just need to finish Trap Blocks) --- Banner.png | Bin 0 -> 29485 bytes README.md | 49 ++++++++++++++++ .../CustomBlockData/SoundHolderTile.php | 1 - src/Ad5001/BetterBlocks/Main.php | 53 +++++++++++++----- .../BetterBlocks/tasks/Drop2CraftTask.php | 3 +- 5 files changed, 88 insertions(+), 18 deletions(-) create mode 100644 Banner.png create mode 100644 README.md diff --git a/Banner.png b/Banner.png new file mode 100644 index 0000000000000000000000000000000000000000..46f625849fe1a6ba6baa62fce620cb6285c4a351 GIT binary patch literal 29485 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 - Main::$instance->getLogger()->debug("Playing sound $s..."); $this->getLevel()->addSound(new $s($this)); } diff --git a/src/Ad5001/BetterBlocks/Main.php b/src/Ad5001/BetterBlocks/Main.php index 6075916..ee2b150 100644 --- a/src/Ad5001/BetterBlocks/Main.php +++ b/src/Ad5001/BetterBlocks/Main.php @@ -28,6 +28,7 @@ use Ad5001\BetterBlocks\CustomBlockData\GraveTile; use Ad5001\BetterBlocks\CustomBlockData\RedstonePoweringTile; use Ad5001\BetterBlocks\CustomBlockData\SoundHolderTile; use Ad5001\BetterBlocks\CustomBlockData\StickTile; +use Ad5001\BetterBlocks\CustomBlockData\TrapTile; use Ad5001\BetterBlocks\tasks\AttractTask; use Ad5001\BetterBlocks\tasks\BlockRegenerateTask; @@ -41,13 +42,14 @@ class Main extends PluginBase implements Listener { const PMMP_INCOMPATIBLE = [ "Vacuum Hoppers", - "Sticky Slime Blocks" + "Sticky Slime Blocks", + "Trappers" ]; public function onEnable(){ - if($this->getServer()->getName() == "PocketMine-MP") { - $this->getLogger()->notice("This plugin only has partial support of Pocketmine due to all the features an API missing. The following things will be deactivated: " . implode(", ", self::PMMP_INCOMPATIBLE)); + if(!$this->isCompatible()) { + $this->getLogger()->notice("This plugin only has partial support of this PocketMine version ({$this->getServer()->getName()}) due to all the features an API missing. The following things will be deactivated: " . implode(", ", self::PMMP_INCOMPATIBLE)); } self::$instance = $this; @@ -102,11 +104,15 @@ class Main extends PluginBase implements Listener { Tile::registerTile(GraveTile::class); Tile::registerTile(RedstonePoweringTile::class); Tile::registerTile(SoundHolderTile::class); - Tile::registerTile(StickTile::class); + Tile::registerTile(TrapTile::class); + + if($this->isCompatible()) { + Tile::registerTile(StickTile::class); + } // Launch tasks $this->getServer()->getScheduler()->scheduleRepeatingTask(new Drop2CraftTask($this), 5); - if($this->getServer()->getName() !== "PocketMine-MP") { // Removes uncessery lag on PMMP + if($this->isCompatible()) { // Removes uncessery lag on PMMP $this->getServer()->getScheduler()->scheduleRepeatingTask(new AttractTask($this), 5); $this->getServer()->getScheduler()->scheduleRepeatingTask(new StickTask($this), 1); } @@ -122,14 +128,15 @@ class Main extends PluginBase implements Listener { @param $event \pocketmine\event\block\BlockPlaceEvent */ public function onBlockPlace(\pocketmine\event\block\BlockPlaceEvent $event) { - if(isset($event->getItem()->getNamedTag()->isStickable) && $event->getItem()->getNamedTag()->isStickable->getValue() == "true") { - $this->getLogger()->debug("Created tile Sticky Slime Block"); - Tile::createTile("StickTile", $event->getBlock()->getLevel()->getChunk($event->getBlock()->x >> 4, $event->getBlock()->z >> 4), NBT::parseJSON(json_encode(["x" => $event->getBlock()->x, "y" => $event->getBlock()->y, "z" => $event->getBlock()->z], JSON_FORCE_OBJECT))); - } elseif(isset($event->getItem()->getNamedTag()->isVacuum) && $event->getItem()->getNamedTag()->isVacuum->getValue() == "true") { - $this->getServer()->getScheduler()->scheduleRepeatingTask(new SetVacuumTask($this, $event->getBlock()), 1); // Tile gets created after the event so delaying it one 1 tick. - } elseif(isset($event->getItem()->getNamedTag()->isTrapper) && $event->getItem()->getNamedTag()->isTrapper->getValue() == "true") { - Tile::createTile("TrapTile", $event->getBlock()->getLevel()->getChunk($event->getBlock()->x >> 4, $event->getBlock()->z >> 4), NBT::parseJSON(json_encode(["x" => $event->getBlock()->x, "y" => $event->getBlock()->y - 1, "z" => $event->getBlock()->z], JSON_FORCE_OBJECT))); - $this->getServer()->getScheduler()->scheduleDelayedTask(new BlockRegenerateTask($this, Block::get(0, 0), $event->getBlock()->getLevel()), 30); // Clears the lever + if($this->isCompatible()) { + if(isset($event->getItem()->getNamedTag()->isStickable) && $event->getItem()->getNamedTag()->isStickable->getValue() == "true") { + Tile::createTile("StickTile", $event->getBlock()->getLevel()->getChunk($event->getBlock()->x >> 4, $event->getBlock()->z >> 4), NBT::parseJSON(json_encode(["x" => $event->getBlock()->x, "y" => $event->getBlock()->y, "z" => $event->getBlock()->z], JSON_FORCE_OBJECT))); + } elseif(isset($event->getItem()->getNamedTag()->isVacuum) && $event->getItem()->getNamedTag()->isVacuum->getValue() == "true") { + $this->getServer()->getScheduler()->scheduleRepeatingTask(new SetVacuumTask($this, $event->getBlock()), 1); // Tile gets created after the event so delaying it one 1 tick. + } elseif(isset($event->getItem()->getNamedTag()->isTrapper) && $event->getItem()->getNamedTag()->isTrapper->getValue() == "true") { + Tile::createTile("TrapTile", $event->getBlock()->getLevel()->getChunk($event->getBlock()->x >> 4, $event->getBlock()->z >> 4), NBT::parseJSON(json_encode(["x" => $event->getBlock()->x, "y" => $event->getBlock()->y - 1, "z" => $event->getBlock()->z], JSON_FORCE_OBJECT))); + $this->getServer()->getScheduler()->scheduleDelayedTask(new BlockRegenerateTask($this, Block::get(0, 0), $event->getBlock()->getLevel()), 30); // Clears the lever + } } } @@ -184,7 +191,7 @@ class Main extends PluginBase implements Listener { /* - Check if a player touches a block. Check if he right clicks ill a hammer. + Check if a player touches a block. Check if he right clicks ill a hammer or will change the sound of a sound holder block. @param $event \pocketmine\event\player\PlayerInteractEvent */ public function onInteract(\pocketmine\event\player\PlayerInteractEvent $event) { @@ -205,7 +212,13 @@ class Main extends PluginBase implements Listener { @param $event \pocketmine\event\player\PlayerDropItemEvent */ public function onPlayerItemDrop(\pocketmine\event\player\PlayerDropItemEvent $event) { - $event->getItem()->setNamedTag(NBT::parseJSON('{"isDropedByPlayer":"true"}')); + $tag = $event->getItem()->getNamedTag(); + if(is_null($tag)) { + $tag = NBT::parseJSON('{"isDropedByPlayer":"true"}'); + } else { + $tag->isDropedByPlayer = new \pocketmine\nbt\tag\StringTag("true"); + } + $event->getItem()->setNamedTag($tag); } @@ -263,4 +276,14 @@ class Main extends PluginBase implements Listener { } + + /* + Cheks compatibilty issues for PMMP and other uncompatible software. + @return bool + */ + public function isCompatible() : bool { + return class_exists("pocketmine\\tile\\Hopper") && class_exists("pocketmine\\block\\SlimeBlock") && class_exists("pocketmine\\item\\Lever"); + } + + } \ No newline at end of file diff --git a/src/Ad5001/BetterBlocks/tasks/Drop2CraftTask.php b/src/Ad5001/BetterBlocks/tasks/Drop2CraftTask.php index 569aa8c..63a8c48 100644 --- a/src/Ad5001/BetterBlocks/tasks/Drop2CraftTask.php +++ b/src/Ad5001/BetterBlocks/tasks/Drop2CraftTask.php @@ -67,11 +67,10 @@ class Drop2CraftTask extends PluginTask { } break; case 69: // Levers drops - $this->getLogger()->debug("Found lever"); $v3 = $et->round(); $v3->y--; + if(isset($et->getItem()->getNamedTag()->isTrapper)) $this->main->getLogger()->debug("Found trapper"); if($et->getLevel()->getBlock($v3)->isSolid() && isset($et->getItem()->getNamedTag()->isTrapper)) { - $this->getLogger()->debug("Found trapper"); Tile::createTile("TrapTile", $et->getLevel()->getChunk($v3->x >> 4, $v3->z >> 4), NBT::parseJSON(json_encode(["x" => $v3->x, "y" => $v3->y - 1, "z" => $v3->z], JSON_FORCE_OBJECT))); $et->close(); }