From a91a86bf1da51628a063dfb367e03443824258c5 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 26 Jul 2019 18:07:31 +0100 Subject: [PATCH] Removing achievements --- src/pocketmine/Server.php | 1 - src/pocketmine/entity/object/ItemEntity.php | 8 -- .../player/PlayerAchievementAwardedEvent.php | 92 ------------- .../transaction/CraftingTransaction.php | 44 ------ .../mcpe/handler/InGamePacketHandler.php | 2 - src/pocketmine/player/Achievement.php | 125 ------------------ src/pocketmine/player/Player.php | 78 ----------- 7 files changed, 350 deletions(-) delete mode 100644 src/pocketmine/event/player/PlayerAchievementAwardedEvent.php delete mode 100644 src/pocketmine/player/Achievement.php diff --git a/src/pocketmine/Server.php b/src/pocketmine/Server.php index d42d0e972..fe5e3ad97 100644 --- a/src/pocketmine/Server.php +++ b/src/pocketmine/Server.php @@ -1006,7 +1006,6 @@ class Server{ "motd" => \pocketmine\NAME . " Server", "server-port" => 19132, "white-list" => false, - "announce-player-achievements" => true, "max-players" => 20, "gamemode" => 0, "force-gamemode" => false, diff --git a/src/pocketmine/entity/object/ItemEntity.php b/src/pocketmine/entity/object/ItemEntity.php index 5c2d2e039..9aa18233b 100644 --- a/src/pocketmine/entity/object/ItemEntity.php +++ b/src/pocketmine/entity/object/ItemEntity.php @@ -23,13 +23,11 @@ declare(strict_types=1); namespace pocketmine\entity\object; -use pocketmine\block\Wood; use pocketmine\entity\Entity; use pocketmine\event\entity\ItemDespawnEvent; use pocketmine\event\entity\ItemSpawnEvent; use pocketmine\event\inventory\InventoryPickupItemEvent; use pocketmine\item\Item; -use pocketmine\item\ItemIds; use pocketmine\nbt\tag\CompoundTag; use pocketmine\network\mcpe\protocol\AddItemActorPacket; use pocketmine\network\mcpe\protocol\TakeItemActorPacket; @@ -263,12 +261,6 @@ class ItemEntity extends Entity{ return; } - if($item->getBlock() instanceof Wood){ - $player->awardAchievement("mineWood"); - }elseif($item->getId() === ItemIds::DIAMOND){ - $player->awardAchievement("diamond"); - } - $this->server->broadcastPacket($this->getViewers(), TakeItemActorPacket::create($player->getId(), $this->getId())); $playerInventory->addItem(clone $item); diff --git a/src/pocketmine/event/player/PlayerAchievementAwardedEvent.php b/src/pocketmine/event/player/PlayerAchievementAwardedEvent.php deleted file mode 100644 index dfab7b9ce..000000000 --- a/src/pocketmine/event/player/PlayerAchievementAwardedEvent.php +++ /dev/null @@ -1,92 +0,0 @@ -player = $player; - $this->achievement = $achievementId; - $this->message = $message; - $this->broadcastRecipients = $messageRecipients; - } - - /** - * @return string - */ - public function getAchievement() : string{ - return $this->achievement; - } - - /** - * @return TextContainer|null - */ - public function getMessage() : ?TextContainer{ - return $this->message; - } - - /** - * @param TextContainer|null $message - */ - public function setMessage(?TextContainer $message) : void{ - $this->message = $message; - } - - /** - * @return CommandSender[] - */ - public function getBroadcastRecipients() : array{ - return $this->broadcastRecipients; - } - - /** - * @param CommandSender[] $broadcastRecipients - */ - public function setBroadcastRecipients(array $broadcastRecipients) : void{ - $this->broadcastRecipients = $broadcastRecipients; - } -} diff --git a/src/pocketmine/inventory/transaction/CraftingTransaction.php b/src/pocketmine/inventory/transaction/CraftingTransaction.php index 623b101ff..6ea0a3640 100644 --- a/src/pocketmine/inventory/transaction/CraftingTransaction.php +++ b/src/pocketmine/inventory/transaction/CraftingTransaction.php @@ -26,7 +26,6 @@ namespace pocketmine\inventory\transaction; use pocketmine\crafting\CraftingRecipe; use pocketmine\event\inventory\CraftItemEvent; use pocketmine\item\Item; -use pocketmine\item\ItemIds; use pocketmine\network\mcpe\protocol\ContainerClosePacket; use pocketmine\network\mcpe\protocol\types\ContainerIds; use function array_pop; @@ -170,47 +169,4 @@ class CraftingTransaction extends InventoryTransaction{ */ $this->source->sendDataPacket(ContainerClosePacket::create(ContainerIds::NONE)); } - - public function execute() : bool{ - if(parent::execute()){ - foreach($this->outputs as $item){ - switch($item->getId()){ - case ItemIds::CRAFTING_TABLE: - $this->source->awardAchievement("buildWorkBench"); - break; - case ItemIds::WOODEN_PICKAXE: - $this->source->awardAchievement("buildPickaxe"); - break; - case ItemIds::FURNACE: - $this->source->awardAchievement("buildFurnace"); - break; - case ItemIds::WOODEN_HOE: - $this->source->awardAchievement("buildHoe"); - break; - case ItemIds::BREAD: - $this->source->awardAchievement("makeBread"); - break; - case ItemIds::CAKE: - $this->source->awardAchievement("bakeCake"); - break; - case ItemIds::STONE_PICKAXE: - case ItemIds::GOLDEN_PICKAXE: - case ItemIds::IRON_PICKAXE: - case ItemIds::DIAMOND_PICKAXE: - $this->source->awardAchievement("buildBetterPickaxe"); - break; - case ItemIds::WOODEN_SWORD: - $this->source->awardAchievement("buildSword"); - break; - case ItemIds::DIAMOND: - $this->source->awardAchievement("diamond"); - break; - } - } - - return true; - } - - return false; - } } diff --git a/src/pocketmine/network/mcpe/handler/InGamePacketHandler.php b/src/pocketmine/network/mcpe/handler/InGamePacketHandler.php index 8eeb71514..a9ea0ac49 100644 --- a/src/pocketmine/network/mcpe/handler/InGamePacketHandler.php +++ b/src/pocketmine/network/mcpe/handler/InGamePacketHandler.php @@ -250,8 +250,6 @@ class InGamePacketHandler extends PacketHandler{ return false; } - - //TODO: fix achievement for getting iron from furnace } return true; diff --git a/src/pocketmine/player/Achievement.php b/src/pocketmine/player/Achievement.php deleted file mode 100644 index 5e5146820..000000000 --- a/src/pocketmine/player/Achievement.php +++ /dev/null @@ -1,125 +0,0 @@ - array( - "name" => "Taking Inventory", - "requires" => [], - ),*/ - "mineWood" => [ - "name" => "Getting Wood", - "requires" => [ //"openInventory", - ] - ], - "buildWorkBench" => [ - "name" => "Benchmarking", - "requires" => [ - "mineWood" - ] - ], - "buildPickaxe" => [ - "name" => "Time to Mine!", - "requires" => [ - "buildWorkBench" - ] - ], - "buildFurnace" => [ - "name" => "Hot Topic", - "requires" => [ - "buildPickaxe" - ] - ], - "acquireIron" => [ - "name" => "Acquire hardware", - "requires" => [ - "buildFurnace" - ] - ], - "buildHoe" => [ - "name" => "Time to Farm!", - "requires" => [ - "buildWorkBench" - ] - ], - "makeBread" => [ - "name" => "Bake Bread", - "requires" => [ - "buildHoe" - ] - ], - "bakeCake" => [ - "name" => "The Lie", - "requires" => [ - "buildHoe" - ] - ], - "buildBetterPickaxe" => [ - "name" => "Getting an Upgrade", - "requires" => [ - "buildPickaxe" - ] - ], - "buildSword" => [ - "name" => "Time to Strike!", - "requires" => [ - "buildWorkBench" - ] - ], - "diamonds" => [ - "name" => "DIAMONDS!", - "requires" => [ - "acquireIron" - ] - ] - - ]; - - /** - * @param string $achievementId - * @param string $achievementName - * @param array $requires - * - * @return bool - */ - public static function add(string $achievementId, string $achievementName, array $requires = []) : bool{ - if(!isset(Achievement::$list[$achievementId])){ - Achievement::$list[$achievementId] = [ - "name" => $achievementName, - "requires" => $requires - ]; - - return true; - } - - return false; - } -} diff --git a/src/pocketmine/player/Player.php b/src/pocketmine/player/Player.php index 2de37e60b..3f9d189a9 100644 --- a/src/pocketmine/player/Player.php +++ b/src/pocketmine/player/Player.php @@ -41,7 +41,6 @@ use pocketmine\event\entity\EntityDamageByEntityEvent; use pocketmine\event\entity\EntityDamageEvent; use pocketmine\event\inventory\InventoryCloseEvent; use pocketmine\event\inventory\InventoryOpenEvent; -use pocketmine\event\player\PlayerAchievementAwardedEvent; use pocketmine\event\player\PlayerBedEnterEvent; use pocketmine\event\player\PlayerBedLeaveEvent; use pocketmine\event\player\PlayerBlockPickEvent; @@ -78,7 +77,6 @@ use pocketmine\item\ItemUseResult; use pocketmine\lang\TextContainer; use pocketmine\lang\TranslationContainer; use pocketmine\math\Vector3; -use pocketmine\nbt\tag\ByteTag; use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\DoubleTag; use pocketmine\nbt\tag\IntTag; @@ -108,7 +106,6 @@ use pocketmine\world\particle\PunchBlockParticle; use pocketmine\world\Position; use pocketmine\world\World; use function abs; -use function array_filter; use function assert; use function ceil; use function count; @@ -190,8 +187,6 @@ class Player extends Human implements CommandSender, ChunkLoader, ChunkListener, /** @var bool */ protected $removeFormat = true; - /** @var bool[] name of achievement => bool */ - protected $achievements = []; /** @var int */ protected $firstPlayed; /** @var int */ @@ -370,15 +365,6 @@ class Player extends Human implements CommandSender, ChunkLoader, ChunkListener, $this->setNameTagAlwaysVisible(); $this->setCanClimb(); - $this->achievements = []; - $achievements = $nbt->getCompoundTag("Achievements"); - if($achievements !== null){ - /** @var ByteTag $tag */ - foreach($achievements as $name => $tag){ - $this->achievements[$name] = $tag->getValue() !== 0; - } - } - if(!$this->hasValidSpawnPosition()){ if(($world = $this->server->getWorldManager()->getWorldByName($nbt->getString("SpawnLevel", ""))) instanceof World){ $this->spawnPosition = new Position($nbt->getInt("SpawnX"), $nbt->getInt("SpawnY"), $nbt->getInt("SpawnZ"), $world); @@ -1122,64 +1108,6 @@ class Player extends Human implements CommandSender, ChunkLoader, ChunkListener, } } - /** - * @param string $achievementId - * - * @return bool - */ - public function hasAchievement(string $achievementId) : bool{ - if(!isset(Achievement::$list[$achievementId])){ - return false; - } - - return $this->achievements[$achievementId] ?? false; - } - - /** - * @param string $achievementId - * - * @return bool - */ - public function awardAchievement(string $achievementId) : bool{ - if(isset(Achievement::$list[$achievementId]) and !$this->hasAchievement($achievementId)){ - foreach(Achievement::$list[$achievementId]["requires"] as $requirementId){ - if(!$this->hasAchievement($requirementId)){ - return false; - } - } - $ev = new PlayerAchievementAwardedEvent( - $this, - $achievementId, - new TranslationContainer("chat.type.achievement", [$this->getDisplayName(), TextFormat::GREEN . Achievement::$list[$achievementId]["name"] . TextFormat::RESET]), - $this->server->getConfigBool("announce-player-achievements", true) ? array_filter(PermissionManager::getInstance()->getPermissionSubscriptions(Server::BROADCAST_CHANNEL_USERS), function($v){ - return $v instanceof CommandSender; - }) : [$this] - ); - $ev->call(); - if(!$ev->isCancelled()){ - $this->achievements[$achievementId] = true; - if(($message = $ev->getMessage()) !== null){ - $this->server->broadcastMessage($message, $ev->getBroadcastRecipients()); - } - - return true; - }else{ - return false; - } - } - - return false; - } - - /** - * @param string $achievementId - */ - public function removeAchievement(string $achievementId){ - if($this->hasAchievement($achievementId)){ - $this->achievements[$achievementId] = false; - } - } - /** * @return GameMode */ @@ -2334,12 +2262,6 @@ class Player extends Human implements CommandSender, ChunkLoader, ChunkListener, } } - $achievements = new CompoundTag(); - foreach($this->achievements as $achievement => $status){ - $achievements->setByte($achievement, $status ? 1 : 0); - } - $nbt->setTag("Achievements", $achievements); - $nbt->setInt("playerGameType", $this->gamemode->getMagicNumber()); $nbt->setLong("firstPlayed", $this->firstPlayed); $nbt->setLong("lastPlayed", (int) floor(microtime(true) * 1000));