From 7f91bb49bb5128b1d150108db41b7e3d5a9e3ac0 Mon Sep 17 00:00:00 2001 From: MrMicky Date: Tue, 20 Jan 2026 15:44:05 +0100 Subject: [PATCH] Add Hytale support --- app/Azuriom.php | 2 +- app/Games/HytaleGame.php | 64 +++++++++++++++++ app/Http/Controllers/InstallController.php | 35 +++++----- app/Http/Middleware/VerifyCaptcha.php | 6 +- app/Providers/GameServiceProvider.php | 2 + public/assets/img/games/hytale.png | Bin 0 -> 26905 bytes resources/views/install/games.blade.php | 8 +-- .../views/install/games/minecraft.blade.php | 66 +++++++++--------- 8 files changed, 127 insertions(+), 56 deletions(-) create mode 100644 app/Games/HytaleGame.php create mode 100644 public/assets/img/games/hytale.png diff --git a/app/Azuriom.php b/app/Azuriom.php index fc3a70dc6..ab814df6d 100644 --- a/app/Azuriom.php +++ b/app/Azuriom.php @@ -11,7 +11,7 @@ class Azuriom * * @var string */ - private const VERSION = '1.2.8'; + private const VERSION = '1.2.9'; /** * Get the current version of Azuriom CMS. diff --git a/app/Games/HytaleGame.php b/app/Games/HytaleGame.php new file mode 100644 index 000000000..82310936f --- /dev/null +++ b/app/Games/HytaleGame.php @@ -0,0 +1,64 @@ +name}/{$size}.png"; + } + + public function getUserUniqueId(string $name): ?string + { + return Cache::remember('games.minecraft.uuid.'.$name, now()->addMinutes(30), function () use ($name) { + return Http::get(self::PLAYER_LOOKUP.$name) + ->throw() + ->json('data.player.id'); + }); + } + + public function getUserName(User $user): ?string + { + if ($user->game_id === null) { + return $user->name; + } + + $cacheKey = 'games.minecraft.profile.'.$user->game_id; + + return Cache::remember($cacheKey, now()->addMinutes(30), function () use ($user) { + return Http::get(self::PLAYER_LOOKUP.$user->game_id) + ->throw() + ->json('data.player.username'); + }); + } + + public function getSupportedServers() + { + return [ + 'mc-azlink' => AzLink::class, + ]; + } + + public function trans(string $key, array $placeholders = []): string + { + return trans('game.minecraft.'.$key, $placeholders); + } +} diff --git a/app/Http/Controllers/InstallController.php b/app/Http/Controllers/InstallController.php index a24cd2cf6..f983beab8 100644 --- a/app/Http/Controllers/InstallController.php +++ b/app/Http/Controllers/InstallController.php @@ -5,6 +5,7 @@ use Azuriom\Extensions\Plugin\PluginManager; use Azuriom\Extensions\UpdateManager; use Azuriom\Games\FiveMGame; +use Azuriom\Games\HytaleGame; use Azuriom\Games\Minecraft\MinecraftBedrockGame; use Azuriom\Games\Minecraft\MinecraftOnlineGame; use Azuriom\Games\Steam\SteamGame; @@ -63,6 +64,10 @@ class InstallController extends Controller 'name' => 'Minecraft: Bedrock Edition', 'logo' => 'assets/img/games/minecraft.svg', ], + 'hytale' => [ + 'name' => 'Hytale (Early Access)', + 'logo' => 'assets/img/games/hytale.png', + ], 'gmod' => [ 'name' => 'Garry\'s mod', 'logo' => 'assets/img/games/gmod.svg', @@ -228,18 +233,10 @@ public function showGame(string $game) { abort_if(! array_key_exists($game, $this->games), 404); - if ($game === 'minecraft') { + if ($game === 'minecraft' || $game === 'mc-bedrock' || $game === 'hytale') { return view('install.games.minecraft', [ 'game' => $game, - 'gameName' => 'Minecraft', - 'locales' => self::getAvailableLocales(), - ]); - } - - if ($game === 'mc-bedrock') { - return view('install.games.minecraft', [ - 'game' => $game, - 'gameName' => 'Minecraft: Bedrock Edition', + 'gameName' => Arr::get($this->games, $game.'.name', $game), 'locales' => self::getAvailableLocales(), ]); } @@ -273,8 +270,8 @@ public function setupGame(Request $request, string $game) return $this->setupSteamGame($request, $game); } - if ($game === 'minecraft' || $game === 'mc-bedrock') { - return $this->setupMinecraftGame($request, $game); + if ($game === 'minecraft' || $game === 'mc-bedrock' || $game === 'hytale') { + return $this->setupMinecraftOrHytale($request, $game); } if ($game === 'fivem-cfx') { @@ -334,13 +331,13 @@ protected function setupSteamGame(Request $request, string $game) } /** - * Install Azuriom for Minecraft (with register or Microsoft OAuth). + * Install Azuriom for Minecraft (with register or Microsoft OAuth) or Hytale. * * @throws \Illuminate\Validation\ValidationException */ - protected function setupMinecraftGame(Request $request, string $game) + protected function setupMinecraftOrHytale(Request $request, string $game) { - if ($game !== 'mc-bedrock') { + if ($game !== 'mc-bedrock' && $game !== 'hytale') { $game = $request->input('oauth') ? 'mc-online' : 'mc-offline'; } @@ -368,6 +365,12 @@ protected function setupMinecraftGame(Request $request, string $game) if ($name === null) { throw ValidationException::withMessages(['xuid' => 'Invalid Xbox XUID.']); } + } elseif ($game === 'hytale') { + $response = Http::get(HytaleGame::PLAYER_LOOKUP.$request->input('name')); + + if (! $response->successful() || ! ($gameId = $response->json('data.player.id'))) { + throw ValidationException::withMessages(['name' => 'You must enter a valid Hytale username.']); + } } return $this->setupAzuriom($request, $game, $name, $gameId ?? null); @@ -479,7 +482,7 @@ protected function setupAzuriom(Request $request, string $game, ?string $name, ? $user->markEmailAsVerified(); - if ($game !== 'mc-offline') { + if ($game !== 'mc-offline' && $game !== 'hytale') { Setting::updateSettings('register', false); } diff --git a/app/Http/Middleware/VerifyCaptcha.php b/app/Http/Middleware/VerifyCaptcha.php index fdd756382..e1e216a39 100644 --- a/app/Http/Middleware/VerifyCaptcha.php +++ b/app/Http/Middleware/VerifyCaptcha.php @@ -25,9 +25,9 @@ public function handle(Request $request, Closure $next): Response return $next($request); } - $success = $this->verifyCaptcha($captchaType, $request, $secretKey); - - return $success ? $next($request) : $this->sendFailedResponse($request); + return $this->verifyCaptcha($captchaType, $request, $secretKey) + ? $next($request) + : $this->sendFailedResponse($request); } protected function sendFailedResponse(Request $request): Response diff --git a/app/Providers/GameServiceProvider.php b/app/Providers/GameServiceProvider.php index 094690c44..7c8e17c02 100644 --- a/app/Providers/GameServiceProvider.php +++ b/app/Providers/GameServiceProvider.php @@ -4,6 +4,7 @@ use Azuriom\Games\FallbackGame; use Azuriom\Games\FiveMGame; +use Azuriom\Games\HytaleGame; use Azuriom\Games\Minecraft\MinecraftBedrockGame; use Azuriom\Games\Minecraft\MinecraftOfflineGame; use Azuriom\Games\Minecraft\MinecraftOnlineGame; @@ -42,6 +43,7 @@ public function register(): void 'tf2' => SteamGame::forName('tf2', 'Team Fortress 2'), 'unturned' => SteamGame::forName('unturned', 'Unturned'), '7dtd' => SteamGame::forName('7dtd', '7 Days to Die', true), + 'hytale' => HytaleGame::class, ]); } diff --git a/public/assets/img/games/hytale.png b/public/assets/img/games/hytale.png new file mode 100644 index 0000000000000000000000000000000000000000..3812b6ed3f0676c06c1d0bafd590e39c1971141b GIT binary patch literal 26905 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 P{}#$it4P&Kn1ucxj*^Qs literal 0 HcmV?d00001 diff --git a/resources/views/install/games.blade.php b/resources/views/install/games.blade.php index 78ec3d709..8f5249813 100644 --- a/resources/views/install/games.blade.php +++ b/resources/views/install/games.blade.php @@ -4,6 +4,10 @@

{{ trans('install.game.title') }}

+

+ {{ trans('install.game.warn') }} +

+
@foreach ($games as $key => $game)
@@ -15,9 +19,5 @@
@endforeach
- -

- {{ trans('install.game.warn') }} -

@endsection diff --git a/resources/views/install/games/minecraft.blade.php b/resources/views/install/games/minecraft.blade.php index bd506d160..f062ba5f8 100644 --- a/resources/views/install/games/minecraft.blade.php +++ b/resources/views/install/games/minecraft.blade.php @@ -2,43 +2,45 @@ @section('game') @if($game !== 'mc-bedrock') -
- - - - - @error('oauth') - {{ $message }} - @enderror - -

- {{ trans('install.game.warn') }} -

-
+ @if($game !== 'hytale') +
+ + + + + @error('oauth') + {{ $message }} + @enderror -
-

{{ trans('install.game.user.title') }}

+

+ {{ trans('install.game.warn') }} +

+
-
- +
+

{{ trans('install.game.user.title') }}

- +
+ - @error('uuid') - {{ $message }} - @enderror + + + @error('uuid') + {{ $message }} + @enderror +
-
+ @endif

{{ trans('install.game.user.title') }}