1919
2020import io .github .moremcmeta .emissiveplugin .ModConstants ;
2121import io .github .moremcmeta .emissiveplugin .metadata .OverlayMetadata ;
22+ import io .github .moremcmeta .moremcmeta .api .client .metadata .AnalyzedMetadata ;
2223import io .github .moremcmeta .moremcmeta .api .client .metadata .MetadataRegistry ;
2324import net .minecraft .client .Minecraft ;
2425import net .minecraft .client .renderer .LightTexture ;
2930import net .minecraft .util .Mth ;
3031
3132import java .util .List ;
33+ import java .util .Optional ;
3234import java .util .function .Function ;
35+ import java .util .stream .Stream ;
3336
3437import static java .util .Objects .requireNonNull ;
3538
@@ -74,23 +77,22 @@ public OverlayQuadFunction(OverlayBakedQuad.Builder quadBuilder) {
7477 @ Override
7578 public List <BakedQuad > apply (List <BakedQuad > quads ) {
7679 return quads .stream ()
77- .filter (
78- (quad ) -> MetadataRegistry .INSTANCE
79- .metadataFromSpriteName (ModConstants .MOD_ID , quad .getSprite ().getName ())
80- .isPresent ()
81- ).map (
80+ .flatMap (
8281 (quad ) -> {
83- OverlayMetadata metadata = ((OverlayMetadata ) MetadataRegistry .INSTANCE
84- .metadataFromSpriteName (ModConstants .MOD_ID , quad .getSprite ().getName ())
85- .orElseThrow ());
82+ Optional <AnalyzedMetadata > metadataOptional = MetadataRegistry .INSTANCE
83+ .metadataFromSpriteName (ModConstants .MOD_ID , quad .getSprite ().getName ());
84+ if (metadataOptional .isEmpty ()) {
85+ return Stream .of ();
86+ }
8687
88+ OverlayMetadata metadata = (OverlayMetadata ) metadataOptional .get ();
8789 TextureAtlasSprite sprite = MODEL_MANAGER
8890 .getAtlas (TextureAtlas .LOCATION_BLOCKS )
8991 .getSprite (metadata .overlaySpriteName ());
9092
9193 /* We have to cast because Minecraft's BakedModel interface expects a List<BakedQuad>,
9294 not List<? extends BakedQuad>. */
93- return (BakedQuad ) QUAD_BUILDER .build (
95+ return Stream . of ( (BakedQuad ) QUAD_BUILDER .build (
9496 makeOverlayVertexData (
9597 quad .getVertices (),
9698 sprite ,
@@ -101,7 +103,7 @@ public List<BakedQuad> apply(List<BakedQuad> quads) {
101103 quad .getDirection (),
102104 sprite ,
103105 metadata .isEmissive ()
104- );
106+ )) ;
105107
106108 }
107109 )
0 commit comments