Skip to content

Commit

Permalink
Adding config support, adressing #16
Browse files Browse the repository at this point in the history
  • Loading branch information
inxomnyaa committed Jan 15, 2020
1 parent 3c8af24 commit eb16536
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 32 deletions.
4 changes: 2 additions & 2 deletions plugin.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
name: WarpUI
main: xenialdan\WarpUI\Loader
version: 3.1.0
api: [3.9]
version: 3.1.1
api: [3.11]
load: POSTWORLD
authors:
- XenialDan
Expand Down
8 changes: 8 additions & 0 deletions resources/config.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
---
# Item name
warp-item: "compass"
# Custom name
warp-item-name: "§dWarps"
give-warp-item: true
# Item name
world-item: "clock"
# Custom name
world-item-name: "§dWorlds"
give-world-item: true
# The worlds to give the items in. Example: ["world"]
worlds: []
...
88 changes: 61 additions & 27 deletions src/xenialdan/WarpUI/EventListener.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,54 +17,88 @@
*/
class EventListener implements Listener
{
public function getGiveWarpItem():bool{
return Loader::getInstance()->getConfig()->get("give-warp-item",true);
}
public function getGiveWorldItem():bool{
return Loader::getInstance()->getConfig()->get("give-world-item",true);
}
public function getWarpItemName():string{
return Loader::getInstance()->getConfig()->get("warp-item-name","§dWarps");
}
public function getWorldItemName():string{
return Loader::getInstance()->getConfig()->get("world-item-name","§dWorlds");
}
public function getWarpItemType():string{
return Loader::getInstance()->getConfig()->get("warp-item","compass");
}
public function getWorldItemType():string{
return Loader::getInstance()->getConfig()->get("world-item","clock");
}
public function getWarpItem():Item{
Item::fromString($this->getWarpItemType())->setCustomName($this->getWarpItemName());
}
public function getWorldItem():Item{
Item::fromString($this->getWorldItemType())->setCustomName($this->getWorldItemName());
}
public function getWorlds():array{
return Loader::getInstance()->getConfig()->get("worlds",[]);
}

/**
* @param PlayerInteractEvent $event
* @throws \BadMethodCallException
* @throws \InvalidArgumentException
*/
public function onInteract(PlayerInteractEvent $event)
public function onInteract(PlayerInteractEvent $event):void
{
$player = $event->getPlayer();
#if (($level = ($player = $event->getPlayer())->getLevel())->getId() !== Loader::getInstance()->getServer()->getDefaultLevel()->getId()) return;
if (($item = $event->getItem())->getId() === ItemIds::COMPASS && $item->hasCustomName() && $item->getCustomName() === TextFormat::DARK_PURPLE . "Warps") {
$event->setCancelled();
Loader::getInstance()->showWarpUI($player);
}
if (($item = $event->getItem())->getId() === ItemIds::CLOCK && $item->hasCustomName() && $item->getCustomName() === TextFormat::DARK_PURPLE . "Worlds") {
$event->setCancelled();
Loader::getInstance()->showWorldUI($player);
$level = $player->getLevel();
$item = $event->getItem();
if(empty($this->getWorlds()) || in_array($level->getName(), $this->getWorlds())){
if ($item->equals($this->getWarpItem())) {
$event->setCancelled();
Loader::getInstance()->showWarpUI($player);
}
if ($item->equals($this->getWorldItem())) {
$event->setCancelled();
Loader::getInstance()->showWorldUI($player);
}
}
}

/**
* @param PlayerJoinEvent $event
*/
public function onJoin(PlayerJoinEvent $event)
public function onJoin(PlayerJoinEvent $event):void
{
if (($level = ($player = $event->getPlayer())->getLevel())->getId() !== Loader::getInstance()->getServer()->getDefaultLevel()->getId()) return;
$compass = ItemFactory::get(ItemIds::COMPASS)->setCustomName(TextFormat::DARK_PURPLE . "Warps");
if (!$player->getInventory()->contains($compass))
$player->getInventory()->addItem($compass);
$clock = ItemFactory::get(ItemIds::CLOCK)->setCustomName(TextFormat::DARK_PURPLE . "Worlds");
if (!$player->getInventory()->contains($clock))
$player->getInventory()->addItem($clock);
$player = $event->getPlayer();
$level = $player->getLevel();
$player->getInventory()->remove($this->getWarpItem());
$player->getInventory()->remove($this->getWorldItem());
if(empty($this->getWorlds()) || in_array($level->getName(), $this->getWorlds())){
if($this->getGiveWarpItem())
$player->getInventory()->addItem($this->getWarpItem());
if($this->getGiveWorldItem())
$player->getInventory()->addItem($this->getWorldItem());
}
}

/**
* @param EntityLevelChangeEvent $event
* @throws \BadMethodCallException
*/
public function onLevelChange(EntityLevelChangeEvent $event)
public function onLevelChange(EntityLevelChangeEvent $event):void
{
/** @var Player $player */
if (!($player = $event->getEntity()) instanceof Player || $event->isCancelled()) return;
if (($level = $event->getTarget())->getId() !== Loader::getInstance()->getServer()->getDefaultLevel()->getId()) return;
$compass = ItemFactory::get(ItemIds::COMPASS)->setCustomName(TextFormat::DARK_PURPLE . "Warps");
if (!$player->getInventory()->contains($compass))
$player->getInventory()->addItem($compass);
$clock = ItemFactory::get(ItemIds::CLOCK)->setCustomName(TextFormat::DARK_PURPLE . "Worlds");
if (!$player->getInventory()->contains($clock))
$player->getInventory()->addItem($clock);
$player = $event->getPlayer();
$level = $event->getTarget();
$player->getInventory()->remove($this->getWarpItem());
$player->getInventory()->remove($this->getWorldItem());
if(empty($this->getWorlds()) || in_array($level->getName(), $this->getWorlds())){
if($this->getGiveWarpItem())
$player->getInventory()->addItem($this->getWarpItem());
if($this->getGiveWorldItem())
$player->getInventory()->addItem($this->getWorldItem());
}
}
}
8 changes: 5 additions & 3 deletions src/xenialdan/WarpUI/Loader.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class Loader extends PluginBase
public function onLoad()
{
self::$instance = $this;
#$this->saveDefaultConfig();
$this->saveDefaultConfig();
$this->warps = new Config($this->getDataFolder() . "warps.yml");
}

Expand All @@ -32,8 +32,10 @@ public function onLoad()
public function onEnable()
{
$this->getServer()->getPluginManager()->registerEvents(new EventListener(), $this);
$this->getServer()->getCommandMap()->register("WarpUI", new WarpUICommands($this));
$this->getServer()->getCommandMap()->register("WarpUI", new WorldUICommands($this));
$this->getServer()->getCommandMap()->registerAll("WarpUI", [
new WarpUICommands($this),
new WorldUICommands($this)]
);
}

/**
Expand Down

0 comments on commit eb16536

Please sign in to comment.