3535import de .bluecolored .bluemap .core .resources .pack .Pack ;
3636import de .bluecolored .bluemap .core .resources .pack .PackVersion ;
3737import de .bluecolored .bluemap .core .resources .pack .ResourcePool ;
38+ import de .bluecolored .bluemap .core .resources .pack .ResourcePoolMapper ;
3839import de .bluecolored .bluemap .core .resources .pack .resourcepack .atlas .Atlas ;
3940import de .bluecolored .bluemap .core .resources .pack .resourcepack .blockstate .BlockState ;
4041import de .bluecolored .bluemap .core .resources .pack .resourcepack .entitystate .EntityState ;
5354import java .io .BufferedReader ;
5455import java .io .IOException ;
5556import java .io .InputStream ;
57+ import java .lang .reflect .Type ;
5658import java .nio .file .Files ;
5759import java .nio .file .Path ;
5860import java .util .HashMap ;
6365import java .util .concurrent .TimeUnit ;
6466import java .util .function .Predicate ;
6567
66- public class ResourcePack extends Pack {
68+ public class ResourcePack extends Pack implements ResourcePoolMapper {
6769
6870 public interface Extension <T extends ResourcePackExtension > extends Keyed {
6971 Registry <Extension <?>> REGISTRY = new Registry <>();
@@ -94,12 +96,12 @@ public interface Extension<T extends ResourcePackExtension> extends Keyed {
9496 public ResourcePack (PackVersion packVersion ) {
9597 super (packVersion );
9698
97- this .atlases = new ResourcePool <>();
98- this .blockStates = new ResourcePool <>();
99- this .entityStates = new ResourcePool <>();
100- this .models = new ResourcePool <>();
101- this .textures = new ResourcePool <>();
102- this .colormaps = new ResourcePool <>();
99+ this .atlases = new ResourcePool <>(Atlas . class , this );
100+ this .blockStates = new ResourcePool <>(BlockState . class , this );
101+ this .entityStates = new ResourcePool <>(EntityState . class , this );
102+ this .models = new ResourcePool <>(Model . class , this );
103+ this .textures = new ResourcePool <>(Texture . class , this );
104+ this .colormaps = new ResourcePool <>(BufferedImage . class , this );
103105
104106 this .colorCalculatorFactory = new BlockColorCalculatorFactory ();
105107 this .blockPropertiesConfig = new BlockPropertiesConfig ();
@@ -115,6 +117,14 @@ public ResourcePack(PackVersion packVersion) {
115117 extensions .put (extensionType , extensionType .create (this ));
116118 }
117119
120+ @ Override
121+ public Key remapResource (Type type , Key src ) {
122+ for (ResourcePackExtension extension : extensions .values ()) {
123+ src = extension .remapResource (type , src );
124+ }
125+ return src ;
126+ }
127+
118128 @ Override
119129 public synchronized void loadResources (Iterable <Path > roots ) throws IOException , InterruptedException {
120130 Logger .global .logInfo ("Loading resources..." );
0 commit comments