3030import com .elytradev .architecture .client .render .target .RenderTargetBaked ;
3131import com .elytradev .architecture .common .block .BlockArchitecture ;
3232import com .elytradev .architecture .common .helpers .Trans3 ;
33- import com .elytradev .architecture .common .helpers .Utils ;
3433import com .google .common .collect .Lists ;
3534import net .minecraft .block .Block ;
3635import net .minecraft .block .state .IBlockState ;
37- import net .minecraft .client .renderer .GlStateManager ;
38- import net .minecraft .client .renderer .block .model .*;
36+ import net .minecraft .client .renderer .block .model .BakedQuad ;
37+ import net .minecraft .client .renderer .block .model .IBakedModel ;
38+ import net .minecraft .client .renderer .block .model .ItemCameraTransforms ;
39+ import net .minecraft .client .renderer .block .model .ItemOverrideList ;
3940import net .minecraft .client .renderer .texture .TextureAtlasSprite ;
4041import net .minecraft .util .EnumFacing ;
4142import net .minecraft .util .math .BlockPos ;
4748import java .util .Collections ;
4849import java .util .List ;
4950
50- import static org .lwjgl .opengl .GL11 .GL_SMOOTH ;
51-
5251public class VertexBakedModel implements IBakedModel {
5352
53+ private IBakedModel emptyModel = new IBakedModel () {
54+ @ Override
55+ public List <BakedQuad > getQuads (@ Nullable IBlockState state , @ Nullable EnumFacing side , long rand ) {
56+ return Lists .newArrayList ();
57+ }
58+
59+ @ Override
60+ public boolean isAmbientOcclusion () {
61+ return false ;
62+ }
63+
64+ @ Override
65+ public boolean isGui3d () {
66+ return false ;
67+ }
68+
69+ @ Override
70+ public boolean isBuiltInRenderer () {
71+ return false ;
72+ }
73+
74+ @ Override
75+ public TextureAtlasSprite getParticleTexture () {
76+ return null ;
77+ }
78+
79+ @ Override
80+ public ItemCameraTransforms getItemCameraTransforms () {
81+ return ItemCameraTransforms .DEFAULT ;
82+ }
83+
84+ @ Override
85+ public ItemOverrideList getOverrides () {
86+ return ItemOverrideList .NONE ;
87+ }
88+ };
89+
5490 @ Override
5591 public List <BakedQuad > getQuads (@ Nullable IBlockState state , @ Nullable EnumFacing side , long rand ) {
5692 if (state instanceof IExtendedBlockState ) {
@@ -62,59 +98,21 @@ public List<BakedQuad> getQuads(@Nullable IBlockState state, @Nullable EnumFacin
6298 }
6399
64100 private IBakedModel getModel (IBlockAccess world , BlockPos pos , IBlockState state ) {
65- IBakedModel out = null ;
101+ IBakedModel out = emptyModel ;
66102 RenderingManager renderingManager = ClientProxy .RENDERING_MANAGER ;
67103 ICustomRenderer rend = renderingManager .getCustomRenderer (world , pos , state );
68104 if (rend != null ) {
69105 Trans3 t = Trans3 .blockCenter ;
70106 Block block = state .getBlock ();
71- IBakedModel primary , secondary ;
72- primary = secondary = null ;
73- // Render Primary.
107+ // Render model and export bakedmodel if present.
74108 if (block .canRenderInLayer (state , MinecraftForgeClient .getRenderLayer ())) {
75- TextureAtlasSprite sprite = Utils .getSpriteForPos (world , pos , true );
76- if (sprite != null ) {
77- RenderTargetBaked target = new RenderTargetBaked (pos , sprite );
78-
79- rend .renderBlock (world , pos , state , target , MinecraftForgeClient .getRenderLayer (), t , true , false );
80- primary = target .getBakedModel ();
81- }
82- }
83- // Render Secondary.
84- if (block .canRenderInLayer (state , MinecraftForgeClient .getRenderLayer ())) {
85- TextureAtlasSprite sprite = Utils .getSpriteForPos (world , pos , false );
86- if (sprite != null ) {
87- RenderTargetBaked target = new RenderTargetBaked (pos , sprite );
88-
89- rend .renderBlock (world , pos , state , target , MinecraftForgeClient .getRenderLayer (), t , false , true );
90- secondary = target .getBakedModel ();
109+ rend = ClientProxy .RENDERING_MANAGER .getCustomRendererForState (state );
110+ if (rend != null ) {
111+ RenderTargetBaked target = new RenderTargetBaked ();
112+ rend .renderBlock (world , pos , state , target , MinecraftForgeClient .getRenderLayer (), t );
113+ out = target .getBakedModel ();
91114 }
92115 }
93-
94- boolean added = false ;
95- MultipartBakedModel .Builder builder = new MultipartBakedModel .Builder ();
96- if (primary != null ) {
97- builder .putModel ((o ) -> true , primary );
98- added = true ;
99- }
100- if (secondary != null ) {
101- builder .putModel ((o ) -> true , secondary );
102- added = true ;
103- }
104- if (added ) {
105- out = builder .makeMultipartModel ();
106- } else {
107- // Backup in case the multipart fails, fallback to state based render in the current layer.
108- if (block .canRenderInLayer (state , MinecraftForgeClient .getRenderLayer ())) {
109- rend = ClientProxy .RENDERING_MANAGER .getCustomRendererForState (state );
110- if (rend != null ) {
111- RenderTargetBaked target = new RenderTargetBaked ();
112- rend .renderBlock (world , pos , state , target , MinecraftForgeClient .getRenderLayer (), t );
113- return target .getBakedModel ();
114- }
115- }
116- return emptyModel ;
117- }
118116 }
119117
120118 return out ;
@@ -151,41 +149,4 @@ public ItemCameraTransforms getItemCameraTransforms() {
151149 public ItemOverrideList getOverrides () {
152150 return ItemOverrideList .NONE ;
153151 }
154-
155- private IBakedModel emptyModel = new IBakedModel () {
156- @ Override
157- public List <BakedQuad > getQuads (@ Nullable IBlockState state , @ Nullable EnumFacing side , long rand ) {
158- return Lists .newArrayList ();
159- }
160-
161- @ Override
162- public boolean isAmbientOcclusion () {
163- return false ;
164- }
165-
166- @ Override
167- public boolean isGui3d () {
168- return false ;
169- }
170-
171- @ Override
172- public boolean isBuiltInRenderer () {
173- return false ;
174- }
175-
176- @ Override
177- public TextureAtlasSprite getParticleTexture () {
178- return null ;
179- }
180-
181- @ Override
182- public ItemCameraTransforms getItemCameraTransforms () {
183- return ItemCameraTransforms .DEFAULT ;
184- }
185-
186- @ Override
187- public ItemOverrideList getOverrides () {
188- return ItemOverrideList .NONE ;
189- }
190- };
191152}
0 commit comments