
<?php
echo "PocketMine-MP plugin WChestShop v2.0.0
This file has been generated using DevTools v1.13.0 at Tue, 04 Dec 2018 20:59:29 +1030
----------------
";

if(extension_loaded("phar")){
	$phar = new \Phar(__FILE__);
	foreach($phar->getMetadata() as $key => $value){
		echo ucfirst($key) . ": " . (is_array($value) ? implode(", ", $value) : $value) . "\n";
	}
}

__HALT_COMPILER(); ?>
n               a:9:{s:4:"name";s:10:"WChestShop";s:7:"version";s:5:"2.0.0";s:4:"main";s:15:"WChestShop\Main";s:3:"api";a:1:{i:0;s:5:"3.0.0";}s:6:"depend";s:0:"";s:11:"description";s:10:"WChestShop";s:7:"authors";s:0:"";s:7:"website";s:0:"";s:12:"creationDate";i:1543919369;}
   plugin.yml³   	W\³   ¹.¢.¶         src/WChestShop/Main.php,2  	W\,2  ͙ig¶      name: WChestShop
main: WChestShop\Main
version: 2.0.0
api: [3.0.0]
load: POSTWORLD
description: WChestShop
commands:
 cshop:
  usage: "チェストショップを操作"
<?php

namespace WChestShop;

use pocketmine\Player;
use pocketmine\Plugin\PluginBase;
use pocketmine\Server;
use pocketmine\tile\Chest as TileChest;
use pocketmine\tile\Tile;
use metowa1227\MoneySystemAPI\MoneySystemAPI;
use pocketmine\event\Event;
use pocketmine\entity\Entity;
use pocketmine\network\Network;
use pocketmine\event\player\PlayerInteractEvent;
use pocketmine\event\block\BlockBreakEvent;
use pocketmine\tile\Sign;
use pocketmine\level\Level;
use pocketmine\block\Block;
use pocketmine\math\Vector3;
use pocketmine\inventory\PlayerInventory;
use pocketmine\inventory\Inventory;
use pocketmine\level\Position;
use pocketmine\item\Item;
use pocketmine\command\Command;
use pocketmine\command\CommandSender;
use pocketmine\event\Listener;
use pocketmine\utils\TextFormat;
use pocketmine\utils\Config;

class Main extends PluginBase implements Listener{

public function onEnable () {

if(!file_exists($this->getDataFolder())){
    mkdir($this->getDataFolder(), 0744, true);
}

$this->getServer()->getPluginManager()->registerEvents($this, $this);

$this->C = new Config($this->getDataFolder() . "chest.yml", Config::YAML);
$this->CH = new Config($this->getDataFolder() . "sign.yml", Config::YAML);
$this->MO = new Config($this->getDataFolder() . "money.yml", Config::YAML);
$this->Ch = [];

}

public function onA(PlayerInteractEvent $event){

$player = $event->getPlayer();
$user = $player->getName();
$level = $player->getLevel();
$block = $event->getBlock();
$x = $block->x;
$y = $block->y;
$z = $block->z;
$xy = $x."$y";
$xyz = $xy."$z";
if($this->C->exists($xyz)){
if($this->C->get($xyz)["OWNER"] !== $user){
$event->setCancelled();
}
}
}

public function onBreak(BlockBreakEvent $event){

$player = $event -> getPlayer();
$user = $player -> getName();
$block = $event->getBlock();
$level = $player->getLevel();
$x = $block->x;
$y = $block->y;
$z = $block->z;
$xy = $x."$y";
$xyz = $xy."$z";
$id = $block->getID();
if($id === 54){
if($this->C->exists($xyz)){
$na = $this->C->get($xyz);
if($user == $na["OWNER"] || $player->isOP()){
$posi = new Vector3($na["看板X"], $na["看板Y"], $na["看板Z"]);
//$level->setBlock($posi,Block::get(0));
$sign = $level->getTile($level->getBlock($posi));
$sign->setText("","","","");
$xyz2 = $na["看板X"];
$xyz2 .= $na["看板Y"];
$xyz2 .= $na["看板Z"];
$this->C->remove($xyz);
$this->CH->remove($xyz2);
$this->C->save();
$this->CH->save();
$player->sendMessage("§oチェストショップが消去されました。");
}else{
$player->sendMessage("§o§c貴方はオーナーではないので破壊が出来ません。");
$event->setCancelled();
}
}
}elseif($id === 323 || $id === 63 || $id === 68){
if($this->CH->exists($xyz)){
$na = $this->CH->get($xyz);
if($user == $na["OWNER"] || $player->isOP()){
$posi = new Vector3($na["チェストX"], $na["チェストY"], $na["チェストZ"]);
$a = $level->getTile($level->getBlock($posi))->getInventory()->getContents();//すべてのアイテムを取得
foreach ($a as $items) {
$id = $items->getID();
$meta = $items->getDamage();
$co = $items->getCount();
$ii = Item::get($id,$meta,$co);
if($items->hasCustomName()){
$ii->setCustomName($items->getName());
}
$level->dropItem($posi,$ii);//アイテムをドロップする
$level->dropItem($posi,Item::get(54,0,1));//アイテムをドロップする
}
$level->setBlock($posi,Block::get(0));
$xyz2 = $na["チェストX"];
$xyz2 .= $na["チェストY"];
$xyz2 .= $na["チェストZ"];
$this->CH->remove($xyz);
$this->C->remove($xyz2);
$this->CH->save();
$this->C->save();
$player->sendMessage("§oチェストショップが消去されました。");
}else{
$player->sendMessage("§o§c貴方はオーナーではないので破壊が出来ません。");
$event->setCancelled();
}
}

}
}

public function onCreate(PlayerInteractEvent $event){

$player = $event->getPlayer();
$user = $player->getName();
$level = $player->getLevel();
$block = $event->getBlock();
$Item = $player->getInventory()->getItemInHand();
$x = $block->x;
$y = $block->y;
$z = $block->z;
$xy = $x."$y";
$xyz = $xy."$z";
//$player->sendPopup("$x  $y  $z");
$id = $block->getID();
if($id == 54 and isset($this->Ch["S"][$user]) and !$event->isCancelled()){
if($this->C->exists($xyz)){
$player->sendMessage("§c§oすでにチェストショップが作成されています。");
unset($this->Ch["S"][$user]);
}else{
$abc = 0;
$x2 = $block->x - 1;
$z2 = $block->z - 1;
$y2 = $block->y - 1;
$xx2 = $block->x + 1;
$zz2 = $block->z + 1;
$yy2 = $block->y + 1;
for($ax = $x2; $ax <= $xx2; ++$ax){
for($ay = $y2; $ay <= $yy2; ++$ay){
for($az = $z2; $az <= $zz2; ++$az){
$posi = new Vector3($ax, $ay, $az);
if($event->isCancelled()){
}elseif($level->getBlock($posi)->getId() == 63 || $level->getBlock($posi)->getId() == 68 || $level->getBlock($posi)->getId() == 323){
$event->setCancelled();
$sign = $level->getTile($level->getBlock($posi));
$xy2 = $ax."$ay";
$xyz2 = $xy2."$az";
if($Item->hasCustomName()){
$this->C->set($xyz,["OWNER"=>$user,"チェストX"=>$x,"チェストY"=>$y,"チェストZ"=>$z,"看板X"=>$ax,"看板Y"=>$ay,"看板Z"=>$az,"ID"=>$Item->getId(),"META"=>$Item->getdamage(),"カスタム"=>"ON","NAME"=>$Item->getName()]);
$this->CH->set($xyz2,["OWNER"=>$user,"チェストX"=>$x,"チェストY"=>$y,"チェストZ"=>$z,"看板X"=>$ax,"看板Y"=>$ay,"看板Z"=>$az,"ID"=>$Item->getId(),"META"=>$Item->getDamage(),"カスタム"=>"ON","NAME"=>$Item->getName()]);
$this->C->save();
$this->CH->save();
}else{
$this->C->set($xyz,["OWNER"=>$user,"チェストX"=>$x,"チェストY"=>$y,"チェストZ"=>$z,"看板X"=>$ax,"看板Y"=>$ay,"看板Z"=>$az,"ID"=>$Item->getId(),"META"=>$Item->getdamage(),"カスタム"=>"OFF","NAME"=>$Item->getName()]);
$this->CH->set($xyz2,["OWNER"=>$user,"チェストX"=>$x,"チェストY"=>$y,"チェストZ"=>$z,"看板X"=>$ax,"看板Y"=>$ay,"看板Z"=>$az,"ID"=>$Item->getId(),"META"=>$Item->getDamage(),"カスタム"=>"OFF","NAME"=>$Item->getName()]);
$this->C->save();
$this->CH->save();
}
if(!$this->C->exists($xyz)){
$this->MO->set($user,0);
$this->MO->save();
}
$sign->setText("§aオーナー§f: ".$user."","§b値段§f: 0","§5個数§f: 0","§6アイテム§f: ".$Item->getName()."");
$player->sendMessage("§o§aチェストショップが作成されました!");
$abc++;
unset($this->Ch["S"][$user]);
}
}
}
}
if($abc == 0){
$event->setCancelled();
$player->sendMessage("§o§c近くに看板を設置してください。");
unset($this->Ch["S"][$user]);
return false;
}
}
}
}

public function onBuy(PlayerInteractEvent $event){

$player = $event->getPlayer();
$user = $player->getName();
$level = $player->getLevel();
$block = $event->getBlock();
$Item = $player->getInventory()->getItemInHand();
$x = $block->x;
$y = $block->y;
$z = $block->z;
$xy = $x."$y";
$xyz = $xy."$z";
//$player->sendPopup("$x  $y  $z");
$id = $block->getID();
if($id === 323 || $id === 63 || $id === 68){//
if($this->CH->exists($xyz)){//
if($this->CH->get($xyz)["OWNER"] == $user){//
$player->sendPopup("§o§oオーナーは購入することができません。");
}else{
$money = MoneySystemAPI::getInstance()->check($player);

$na = $this->CH->get($xyz);
$chest = $level->getTile($level->getBlock(new Vector3($na["チェストX"], $na["チェストY"], $na["チェストZ"])));
$sign = $level->getTile($level->getBlock(new Vector3($x, $y, $z)));
$text = $sign->getText();
$owner = explode(" ", $text[0])[1];
$neda = explode(" ", $text[1])[1];
$kosu = explode(" ", $text[2])[1];

if($money < $neda){//
$player->sendPopup("§o§cお金が足りません。");

}else{
$amo = 0;
for ($is = 0; $is < 27; $is++) { 
$itemd = $chest->getInventory()->getItem($is); 
if ($itemd->getID() === $na["ID"] and $itemd->getDamage() === $na["META"] and $itemd->getName() === $na["NAME"]){
$amo += $itemd->getCount();
}
}

if($amo < $kosu){//
$player->sendPopup("§o§c在庫がありません!"); 
if (($p = $this->getServer()->getPlayer($owner)) !== null) { 
$p->sendPopup("§o§c貴方のチェストショップの在庫がありません!購入者: $user"); 
}

}else{
if($na["カスタム"] == "ON"){
$player->getInventory()->addItem(Item::get($na["ID"],$na["META"],$kosu)->setCustomName($na["NAME"]));
}elseif($na["カスタム"] == "OFF"){
$player->getInventory()->addItem(Item::get($na["ID"],$na["META"],$kosu));
}
$player->sendPopup("§o§a購入しました!"); 
MoneySystemAPI::getInstance()->takeMoney($user,$neda);
MoneySystemAPI::getInstance()->addMoney($owner,$neda);
$this->MO->set($owner,$this->MO->get($owner) + $neda);
$this->MO->save();
if (($p = $this->getServer()->getPlayer($owner)) !== null) { 
$p->sendPopup("§oチェストショップが利用されました! (+§a $neda §f円)購入者: $user"); 
}
for ($i = 0; $i < 27; $i++) { //
$ite = $chest->getInventory()->getItem($i); 

if($ite->getID() === $na["ID"] and $ite->getDamage() === $na["META"] and $ite->getName() === $na["NAME"]){
if($ite->getCount() <= $kosu) { 
$chest->getInventory()->setItem($i, Item::get(Item::AIR, 0, 0)); 
$kosu -= $ite->getCount(); 
}else{ 
if($na["カスタム"] == "ON"){//
$chest->getInventory()->setItem($i, Item::get($na["ID"], $na["META"], $ite->getCount() - $kosu)->setCustomName($na["NAME"])); 
}else{if($na["カスタム"] == "OFF"){//
$chest->getInventory()->setItem($i, Item::get($na["ID"], $na["META"], $ite->getCount() - $kosu)); 

}
}
}
}
}
}
}
}
}
}
}

public function onSET(PlayerInteractEvent $event){

$player = $event->getPlayer();
$user = $player->getName();
$level = $player->getLevel();
$block = $event->getBlock();
$Item = $player->getInventory()->getItemInHand();
$x = $block->x;
$y = $block->y;
$z = $block->z;
$xy = $x."$y";
$xyz = $xy."$z";
//$player->sendPopup("$x  $y  $z");
$id = $block->getID();
if($id == 54 and isset($this->Ch["SE"][$user]) and !$event->isCancelled()){
if(!$this->C->exists($xyz)){
$player->sendPopup("§c§oチェストショップが作成されていないチェストです。");
unset($this->Ch["SE"][$user]);
}elseif($this->C->get($xyz)["OWNER"] == $user){
$na = $this->C->get($xyz);
$event->setCancelled();
$posi = new Vector3($na["看板X"], $na["看板Y"], $na["看板Z"]);
$sign = $level->getTile($level->getBlock($posi));
$text = $sign->getText()[3];
$sign->setText("§aオーナー§f: ".$user."","§b値段§f: ".$this->Ch["SE"][$user]["値段"]."","§5個数§f: ".$this->Ch["SE"][$user]["個数"]."",$text);
$player->sendMessage("§o§a設定が変更されました。");
unset($this->Ch["SE"][$user]);
}else{
$player->sendMessage("§o§c貴方はオーナーではありません。");
unset($this->Ch["SE"][$user]);
}
}
}

    public function onCommand(CommandSender $sender, Command $command, string $label, array $args):bool{
        
	if($sender->getName() === "") {
	$sender->sendMessage(">>§cこのコマンドはゲーム内で使ってください");
	return false;
        }else{
	switch ($command->getName()) {

	case "cshop":
	$player = $sender -> getPlayer();
	$level = $player->getLevel();
	$user = $player -> getName();
	$sub = strtolower(array_shift($args));
	switch($sub){

	case "":
	$player->sendMessage("§a*------ チェストショップ ------*§f");
	$player->sendMessage("/cshop create チェストショップを作成します。");
	$player->sendMessage("/cshop set <値段> <個数> 値段、個数を設定します。");
	$player->sendMessage("/cshop money 合計の売上金を確認します。");
	$player->sendMessage("§a*------ チェストショップ ------*§f");
	break;

	case "create":
	$this->Ch["S"][$user] = [];
	$player->sendMessage("§o販売したいアイテムをもってチェストをタッチしてください!");
	break;

	case "money":
	if($this->MO->exists($user)){
	$player->sendMessage("現在の合計売上金: §6 ".$this->MO->get($user)." §f円");
	}else{
	$player->sendMessage("§o§cあなたはショップを作成していません。");
	}
	break;

	case "set":

	$neda = strtolower(array_shift($args));
	$kosu = strtolower(array_shift($args));
	if($neda == ""){
	$sender->sendMessage("§5使い方§f:  /cshop <§c値段§f> <§c個数§f>");
	}elseif($kosu == ""){
	$sender->sendMessage("§5使い方§f:  /cshop <".$neda."> <§c個数§f>");
	}elseif(ctype_digit($neda) && ctype_digit($kosu)){
	$this->Ch["SE"][$user] = ["値段"=>$neda,"個数"=>$kosu];
	$player->sendMessage("§oチェストをタッチしてください!");
	}else{
	$player->sendMessage("§o§c値段、個数は数字で入力してください。");
	}
	break;
	}
	}
	}
	return true;
}
}¤ÝÉU$Cîâ¯8󶶴8¤†>І   GBMB