1010import net .fabricmc .loader .api .FabricLoader ;
1111import net .minecraft .client .model .TexturedModelData ;
1212import net .minecraft .client .render .entity .model .EntityModelLayer ;
13- import net .minecraft .client . render . entity . model . EntityModelLayers ;
13+ import net .minecraft .resource . ResourceFinder ;
1414import net .minecraft .resource .ResourceManager ;
1515import net .minecraft .util .Identifier ;
16+ import net .minecraft .util .InvalidIdentifierException ;
1617
1718import java .io .IOException ;
1819import java .io .InputStream ;
@@ -36,20 +37,25 @@ public static Optional<TexturedModelData> readJson(InputStream data) {
3637 }
3738
3839 public static void loadModels (ResourceManager manager , Map <EntityModelLayer , TexturedModelData > models ) {
39- EntityModelLayers .getLayers ().forEach (layer -> {
40- var modelLoc = Identifier .of (layer .getId ().getNamespace (), "models/entity/" +layer .getId ().getPath ()+"/" +layer .getName ()+".json" );
41-
42- var res = manager .getResource (modelLoc );
43-
44- if (res .isPresent ()) {
45- try {
46- try (var in = res .get ().getInputStream ()) {
47- var data = JsonEntityModelUtil .readJson (in );
48- data .ifPresent (model -> models .put (layer , model ));
49- }
50- } catch (IOException e ) {
51- JsonEM .LOG .error (e );
40+ ResourceFinder .json ("models/entity" ).findResources (manager ).forEach ((id , res ) -> {
41+ try {
42+ var fullPath = id .getPath ().replaceFirst ("models/entity/" , "" );
43+ var splitPath = fullPath .split ("/" );
44+
45+ var dirs = new String [splitPath .length - 1 ];
46+ System .arraycopy (splitPath , 0 , dirs , 0 , dirs .length );
47+
48+ var layerName = splitPath [splitPath .length - 1 ].replace (".json" , "" );
49+ var modelName = String .join ("/" , dirs );
50+
51+ var layer = new EntityModelLayer (Identifier .of (id .getNamespace (), modelName ), layerName );
52+
53+ try (var in = res .getInputStream ()) {
54+ var data = JsonEntityModelUtil .readJson (in );
55+ data .ifPresent (model -> models .put (layer , model ));
5256 }
57+ } catch (IOException | InvalidIdentifierException e ) {
58+ JsonEM .LOG .error (e );
5359 }
5460 });
5561 }
0 commit comments