Reset invalid texture when player retrieved

This commit is contained in:
Pig Fang 2019-04-23 23:34:04 +08:00
parent 1c205f6842
commit 64f25ef95f
5 changed files with 39 additions and 10 deletions

View File

@ -0,0 +1,15 @@
<?php
namespace App\Events;
use App\Models\Player;
class PlayerRetrieved extends Event
{
public $player;
public function __construct(Player $player)
{
$this->player = $player;
}
}

View File

@ -31,15 +31,7 @@ class PlayerController extends Controller
{
$this->middleware(function ($request, $next) {
if ($request->has('pid')) {
if ($this->player = Player::find($request->pid)) {
foreach (['skin', 'cape'] as $type) {
$field = "tid_$type";
if (! Texture::find($this->player->$field)) {
$this->player->$field = 0;
}
}
$this->player->save();
}
$this->player = Player::find($request->pid);
}
return $next($request);

View File

@ -0,0 +1,19 @@
<?php
namespace App\Listeners;
class ResetInvalidTextureForPlayer
{
public function handle(\App\Events\PlayerRetrieved $event)
{
$player = $event->player;
foreach (['skin', 'cape'] as $type) {
$field = "tid_$type";
if (! \App\Models\Texture::find($player->$field)) {
$player->$field = 0;
}
}
$player->save();
}
}

View File

@ -28,6 +28,7 @@ class Player extends Model
];
protected $dispatchesEvents = [
'retrieved' => \App\Events\PlayerRetrieved::class,
'updated' => PlayerProfileUpdated::class,
];

View File

@ -15,7 +15,9 @@ class EventServiceProvider extends ServiceProvider
* @var array
*/
protected $listen = [
//
'App\Events\PlayerRetrieved' => [
'App\Listeners\ResetInvalidTextureForPlayer',
],
];
/**