Fixing almost everything + README !
(just need to finish Trap Blocks)
This commit is contained in:
parent
020718b525
commit
a2dba5e17f
5 changed files with 88 additions and 18 deletions
|
@ -77,7 +77,6 @@ class SoundHolderTile extends CustomBlockData {
|
|||
*/
|
||||
public function play() {
|
||||
$s = "\\pocketmine\\level\\sound\\" . $this->namedtag->Sound->getValue();
|
||||
Main::$instance->getLogger()->debug("Playing sound $s...");
|
||||
$this->getLevel()->addSound(new $s($this));
|
||||
}
|
||||
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue