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
3437/**
3538 * From a list of original {@link BakedQuad}s, produces a list of overlay quads that should be rendered
@@ -69,23 +72,22 @@ public OverlayQuadFunction() {
6972 @ Override
7073 public List <BakedQuad > apply (List <BakedQuad > quads ) {
7174 return quads .stream ()
72- .filter (
73- (quad ) -> MetadataRegistry .INSTANCE
74- .metadataFromSpriteName (ModConstants .MOD_ID , quad .getSprite ().getName ())
75- .isPresent ()
76- ).map (
75+ .flatMap (
7776 (quad ) -> {
78- OverlayMetadata metadata = ((OverlayMetadata ) MetadataRegistry .INSTANCE
79- .metadataFromSpriteName (ModConstants .MOD_ID , quad .getSprite ().getName ())
80- .orElseThrow ());
77+ Optional <AnalyzedMetadata > metadataOptional = MetadataRegistry .INSTANCE
78+ .metadataFromSpriteName (ModConstants .MOD_ID , quad .getSprite ().getName ());
79+ if (metadataOptional .isEmpty ()) {
80+ return Stream .of ();
81+ }
8182
83+ OverlayMetadata metadata = (OverlayMetadata ) metadataOptional .get ();
8284 TextureAtlasSprite sprite = MODEL_MANAGER
8385 .getAtlas (TextureAtlas .LOCATION_BLOCKS )
8486 .getSprite (metadata .overlaySpriteName ());
8587
8688 /* We have to cast because Minecraft's BakedModel interface expects a List<BakedQuad>,
8789 not List<? extends BakedQuad>. */
88- return (BakedQuad ) new OverlayBakedQuad (
90+ return Stream . of ( (BakedQuad ) new OverlayBakedQuad (
8991 makeOverlayVertexData (
9092 quad .getVertices (),
9193 sprite ,
@@ -96,7 +98,7 @@ public List<BakedQuad> apply(List<BakedQuad> quads) {
9698 quad .getDirection (),
9799 sprite ,
98100 metadata .isEmissive ()
99- );
101+ )) ;
100102
101103 }
102104 )
0 commit comments