(また)自分のプラグインでエラーが…
エラー内容
"plugins/ShopPlugin-v1.0.0.phar/src/ShopPlugin/ShopPlugin"の中身
エラー内容
ParseError: "syntax error, unexpected 'case' (T_CASE)" (EXCEPTION) in "plugins/ShopPlugin-v1.0.0.phar/src/ShopPlugin/ShopPlugin" at line 118
"plugins/ShopPlugin-v1.0.0.phar/src/ShopPlugin/ShopPlugin"の中身
PHP:
<?php
namespace ShopPlugin;
use pocketmine\Player;
use pocketmine\Server;
use pocketmine\plugin\PluginBase;
use pocketmine\event\Listener;
use pocketmine\command\Command;
use pocketmine\command\CommandSender;
use pocketmine\event\player\PlayerInteractEvent;
use pocketmine\event\player\PlayerJoinEvent;
use pocketmine\utils\Config;
use pocketmine\utils\TextFormat;
use pocketmine\event\server\DataPacketReceiveEvent;
use pocketmine\network\mcpe\protocol\ModalFormRequestPacket;
use pocketmine\item\Item;
use MixCoinSystem\MixCoinSystem;
use MoneyPlugin\MoneyPlugin;
use onebone\economyapi\EconomyAPI;
class ShopPlugin extends PluginBase implements Listener {
public function onEnable() {
$this->getServer()->getPluginManager()->registerEvents($this,$this);
$this->getLogger()->info("ShopPluginが読み込まれました。");
if (!file_exists($this->getDataFolder())) {
@mkdir($this->getDataFolder(), 0744, true);
}
if(!file_exists($this->getDataFolder()."datas")) {
@mkdir($this->getDataFolder()."datas", 0744, true);
}
$this->shops = new Config($this->getDataFolder()."datas" . "shops.yml", Config::YAML);
$this->items = new Config($this->getDataFolder()."datas" . "items.yml", Config::YAML);
$this->api = new Config($this->getDataFolder() . "api.yml",Config::YAML,array(
//APIを決めます。
//対応しているプラグインは、EconomyAPI、MixCoinSystem、MoneyPluginの3つです。
"api" => "EconomyAPI"
));
if($this->api->get("api") === "EconomyAPI") {
if($this->getServer()->getPluginManager()->getPlugin("EconomyAPI") !== null) {
$this->getLogger()->info("EconomyAPIを認識しました。");
}else{
$this->getLogger()->info("EconomyAPIを認識できません。プラグインが見つかりません。プラグインを追加してください。");
$this->getServer()->shutdown();
}
}elseif($this->api->get("api") === "MixCoinSystem") {
if($this->getServer()->getPluginManager()->getPlugin("MixCoinSystem") !== null) {
$this->getLogger()->info("MixCoinSystemを認識しました。");
}else{
$this->getLogger()->info("MixCoinSystemを認識できません。プラグインが見つかりません。プラグインを追加してください。");
$this->getServer()->shutdown();
}
}elseif($this->api->get("api") === "MoneyPlugin") {
if($this->getServer()->getPluginManager()->getPlugin("MoneyPlugin") !== null) {
$this->getLogger()->info("MoneyPluginを認識しました。");
}else{
$this->getLogger()->info("MoneyPluginを認識できません。プラグインが見つかりません。プラグインを追加してください。");
$this->getServer()->shutdown();
}
}else{
$this->getLogger()->info("そのプラグインに対応していない、もしくは、api.ymlに問題があります。");
$this->getServer()->shutdown();
}
}
public function onDisable() {
$this->getLogger()->info("ご利用ありがとうございました。");
}
public function onCommand(CommandSender $sender, Command $command, string $label, array $args): bool{
$pname = $sender->getName();
switch($command->getName()){
case "shop":
if($sender->getName() === "CONSOLE"){
$sender->sendMessage("[Shop] /shopは、ゲームから実行してください。");
}elseif(!isset($args[0])){
$sender->sendMessage("[Shop] 使い方:/shop <ショップ名> <アイテムID>");
}elseif(!($this->shops->get($args[0]))) {
$sender->sendMessage("[Shop] 存在するショップを入力してください。");
}elseif(!isset($args[1])){
$sender->sendMessage("[Shop]使い方:/shop <ショップ名> <アイテムID>");
}elseif(!is_numeric($args[1])){
$sender->sendMessage("[Shop] 数字のみを入力してください。");
}elseif($this->items->get($args[0],$args[1]) == null){
$sender->sendMessage("[Shop] そのアイテムは販売されていません。");
}else{
if($this->api->get("api") === "EconomyAPI"){
if($this->items->get($args[0],$args[1]) > EconomyAPI::getInstance()->mymoney($pname)){
$sender->sendMessage("[Shop] 所持金が足りません。");
}else{
EconomyAPI::getInstance()->reduceMoney($pname,$this->items->get($args[0],$args[1]));
Item::get($args[1]);
$sender->sendMessage("[Shop] 取引が完了しました。");
}
}elseif($this->api->get("MixCoinSystem")){
if($this->items->get($args[0],$args[1]) > MixCoinSystem::getInstance()->GetCoin($pname)){
$sender->sendMessage("[Shop] 所持金が足りません。");
}else{
MixCoinSystem::getInstance()->MinusCoin($pname,$this->items->get($args[0],$args[1]));
Item::get($args[1]);
$sender->sendMessage("[Shop] 取引が完了しました。");
}
}elseif($this->api->get("api") === "MoneyPlugin"){
if($this->items->get($args[0],$args[1]) > MoneyPlugin::getInstance()->getMoney($pname)){
$sender->sendMessage("[Shop] 所持金が足りません。");
}else{
MoneyPlugin::getInstance()->removemoney($pname,$this->items->get($args[0],$args[1]));
Item::get($args[1]);
$sender->sendMessage("[Shop] 取引が完了しました。");
}
}
break;
case "shopadd":
if(!(isset($args[0]))){
$sender->sendMessage("[Shop] 使い方:/shopadd <ショップ名>");
}elseif(!$sender->isOp()){
$sender->sendMessage("[Shop] OP以外は実行できません。");
}elseif($this->shops->get($args[0]) !== null){
$sender->sendMessage("[Shop] そのShopは既に作成されています。作成されていないShopを追加してください。");
}else{
$this->shops->set($args[0]);
$sender->sendMessage("[Shop] ショップ" . $args[0] . "を作成しました。");
$this->shops->save();
}
break;
case "shopdel":
if(!($sender->isOp())){
$sender->sendMessage("[Shop] OP以外は使用できません。");
}elseif(!isset($args[0])){
$sender->sendMessage("[Shop] 使い方:/shopdel <ショップ名>");
}elseif($this->shops->get($args[0]) == null){
$sender->sendMessage("[Shop] 作成されていないShopが選択されています。作成されているショップを入力してください。");
}else{
$sender->sendMessage("[Shop] Shop" . $args[0] ."を削除しました。");
$this->shops->remove($args[0]);
$this->shops->save();
}
break;
case "itemadd":
if(!($sender->isOp())){
$sender->sendMessage("OPのみ実行できます。");
}elseif(!isset($args[0])){
$sender->sendMessage("[Shop] 使い方:/itemadd <ショップ名> <アイテムID> <値段>");
}elseif($this->shops->get($args[0]) == null){
$sender->sendMessage("[Shop] 選択されたShopは作成されていません。作成するか別のShopを選択してください。");
}elseif(!isset($args[1])){
$sender->sendMessage("[Shop] 使い方:/itemadd <ショップ名> <アイテムID> <値段>");
}elseif(!is_numeric($args[1])){
$sender->sendMessage("[Shop] アイテムIDは数字なので、数字以外入力できません。");
}elseif(!isset($args[2])){
$sender->sendMessage("[Shop] 使い方:/itemadd <ショップ名> <アイテムID> <値段>");
}elseif(!is_numeric($args[2])){
$sender->sendMessage("[Shop] 値段は数字のみを入力してください。");
}elseif(0>= $args[2]){
$sender->sendMessage("[Shop] 値段は1以上を入力してください。");
}else{
$this->items->set($args[0],$args[1],$args[2]);
$this->items->save();
$sender->sendMessage("[Shop] 商品を増やしました。");
}
break;
case "itemdel":
if(!($sender->isOp())){
$sender->sendMessage("[Shop] OPのみ実行できます。");
}elseif(!isset($args[0])){
$sender->sendMessage("[Shop] 使い方:/itemdel <ショップ名> <アイテムID>");
}elseif($this->shops->get($args[0]) == null){
$sender->sendMessage("[Shop] 選択されたShopが作成されていません。作成するか別のShopを選択してください。");
}elseif(!isset($args[1])){
$sender->sendMessage("[Shop] 使い方:/itemdel <ショップ名> <アイテムID>");
}elseif(!is_numeric($args[1])){
$sender->sendMessage("[Shop] アイテムIDは数字です。数字のみを入力してください。");
}elseif($this->shops->get($args[0],$args[1]) == null){
$sender->sendMessage("[Shop] 入力されたアイテムIDは、ショップで販売されていません。販売されているものを入力してください。");
}else{
$this->items->remove($args[0],$args[1]);
$this->items->save();
$sender->sendMessage("[Shop] 削除が完了しました。");
}
break;
case "shoplist":
foreach($this->shops->get() as $allshop){
$sender->sendMessage($allshop);
}
}
return true;
}
}