Skip to content

Commit 35cfb21

Browse files
committed
allow namespaces in atlas source type fields
1 parent 482a6bc commit 35cfb21

File tree

2 files changed

+17
-6
lines changed

2 files changed

+17
-6
lines changed

src/Resource/AtlasSource/AtlasTextureResolver.php

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
namespace Aternos\Renderchest\Resource\AtlasSource;
44

5+
use Aternos\Renderchest\Exception\InvalidResourceLocatorException;
6+
use Aternos\Renderchest\Exception\ResourceResolutionException;
57
use Aternos\Renderchest\Resource\AtlasSource\TextureSource\AtlasTextureSource;
68
use Aternos\Renderchest\Resource\AtlasSource\TextureSource\DirectoryAtlasTextureSource;
79
use Aternos\Renderchest\Resource\AtlasSource\TextureSource\PalettedPermutationsTextureSource;
@@ -16,10 +18,10 @@
1618
class AtlasTextureResolver
1719
{
1820
const SOURCES = [
19-
"directory" => DirectoryAtlasTextureSource::class,
20-
"single" => SingleAtlasTextureSource::class,
21-
"unstitch" => UnstitchAtlasTextureSource::class,
22-
"paletted_permutations" => PalettedPermutationsTextureSource::class
21+
"minecraft:directory" => DirectoryAtlasTextureSource::class,
22+
"minecraft:single" => SingleAtlasTextureSource::class,
23+
"minecraft:unstitch" => UnstitchAtlasTextureSource::class,
24+
"minecraft:paletted_permutations" => PalettedPermutationsTextureSource::class
2325
];
2426

2527
/**
@@ -35,12 +37,17 @@ public function __construct(protected ResourceManagerInterface $resourceManager)
3537
* @param string $namespace
3638
* @param stdClass $settings
3739
* @return $this
40+
* @throws InvalidResourceLocatorException|ResourceResolutionException
3841
*/
3942
public function add(string $namespace, stdClass $settings): static
4043
{
41-
$class = static::SOURCES[$settings->type] ?? null;
44+
if (!isset($settings->type) || !is_string($settings->type)) {
45+
throw new ResourceResolutionException("Missing atlas texture source type");
46+
}
47+
$type = ResourceLocator::parse($settings->type);
48+
$class = static::SOURCES[(string) $type] ?? null;
4249
if ($class === null) {
43-
return $this;
50+
throw new ResourceResolutionException("Unknown atlas texture source type " . $type);
4451
}
4552
array_unshift($this->sources, new $class($this->resourceManager, $namespace, $settings));
4653
return $this;

src/Resource/FolderResourceManager.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@
33
namespace Aternos\Renderchest\Resource;
44

55
use Aternos\Renderchest\Exception\FileResolutionException;
6+
use Aternos\Renderchest\Exception\InvalidResourceLocatorException;
67
use Aternos\Renderchest\Exception\ItemResolutionException;
78
use Aternos\Renderchest\Exception\ModelResolutionException;
9+
use Aternos\Renderchest\Exception\ResourceResolutionException;
810
use Aternos\Renderchest\Exception\TextureResolutionException;
911
use Aternos\Renderchest\Model\GeneratedItem;
1012
use Aternos\Renderchest\Model\Model;
@@ -64,6 +66,8 @@ protected function getGeneratorFor(string $namespace): ?DynamicResourceGenerator
6466

6567
/**
6668
* @return void
69+
* @throws InvalidResourceLocatorException
70+
* @throws ResourceResolutionException
6771
*/
6872
protected function loadTextureSources(): void
6973
{

0 commit comments

Comments
 (0)