1
1
package com .jaquadro .minecraft .storagedrawers .client .renderer ;
2
2
3
- import java .util .ArrayList ;
4
3
import java .util .List ;
5
4
6
5
import net .minecraft .block .Block ;
7
6
import net .minecraft .client .Minecraft ;
8
- import net .minecraft .client .entity .EntityClientPlayerMP ;
9
7
import net .minecraft .client .gui .FontRenderer ;
10
8
import net .minecraft .client .renderer .OpenGlHelper ;
11
9
import net .minecraft .client .renderer .RenderBlocks ;
23
21
import net .minecraft .tileentity .TileEntity ;
24
22
import net .minecraft .util .IIcon ;
25
23
import net .minecraft .util .ResourceLocation ;
26
- import net .minecraft .util .Vec3 ;
27
24
import net .minecraftforge .client .ForgeHooksClient ;
28
25
import net .minecraftforge .common .util .ForgeDirection ;
29
26
@@ -46,13 +43,9 @@ public class TileEntityDrawersRenderer extends TileEntitySpecialRenderer {
46
43
private static final ResourceLocation RES_ITEM_GLINT = new ResourceLocation (
47
44
"textures/misc/enchanted_item_glint.png" );
48
45
49
- private Vec3 [] dirVectors = { Vec3 .createVectorHelper (0 , -1 , 0 ), Vec3 .createVectorHelper (0 , 1 , 0 ),
50
- Vec3 .createVectorHelper (0 , 0 , -1 ), Vec3 .createVectorHelper (0 , 0 , 1 ), Vec3 .createVectorHelper (-1 , 0 , 0 ),
51
- Vec3 .createVectorHelper (1 , 0 , 0 ) };
46
+ private final RenderItem itemRenderer = new RenderItem () {
52
47
53
- private RenderItem itemRenderer = new RenderItem () {
54
-
55
- private RenderBlocks renderBlocksRi = new RenderBlocks ();
48
+ private final RenderBlocks renderBlocksRi = new RenderBlocks ();
56
49
57
50
@ Override
58
51
public byte getMiniBlockCount (ItemStack stack , byte original ) {
@@ -211,55 +204,34 @@ private void renderItemIntoGUIBlock(FontRenderer fontRenderer, TextureManager te
211
204
}
212
205
};
213
206
214
- private float itemOffset1X [] = new float [] { .5f };
215
- private float itemOffset1Y [] = new float [] { 8.25f };
216
-
217
- private float itemOffset2X [] = new float [] { .5f , .5f };
218
- private float itemOffset2Y [] = new float [] { 10.25f , 2.25f };
207
+ private final float [] itemOffset2X = new float [] { .5f , .5f };
208
+ private final float [] itemOffset2Y = new float [] { 10.25f , 2.25f };
219
209
220
- private float itemOffset4X [] = new float [] { .25f , .25f , .75f , .75f };
221
- private float itemOffset4Y [] = new float [] { 10.25f , 2.25f , 10.25f , 2.25f };
210
+ private final float [] itemOffset4X = new float [] { .25f , .25f , .75f , .75f };
211
+ private final float [] itemOffset4Y = new float [] { 10.25f , 2.25f , 10.25f , 2.25f };
222
212
223
- private float itemOffset3X [] = new float [] { .5f , .25f , .75f };
224
- private float itemOffset3Y [] = new float [] { 9.75f , 2.25f , 2.25f };
213
+ private final float [] itemOffset3X = new float [] { .5f , .25f , .75f };
214
+ private final float [] itemOffset3Y = new float [] { 9.75f , 2.25f , 2.25f };
225
215
226
- private RenderBlocks renderBlocks = new RenderBlocks ();
216
+ private final RenderBlocks renderBlocks = new RenderBlocks ();
227
217
228
218
private float brightness ;
229
219
230
- private static final float unit = .0625f ;
231
-
232
- private static int [] glStateRender = { GL11 .GL_LIGHTING , GL11 .GL_BLEND };
233
- private List <int []> savedGLStateRender = GLUtil .makeGLState (glStateRender );
234
-
235
- private static int [] glStateItemRender = { GL11 .GL_LIGHTING , GL11 .GL_ALPHA_TEST , GL11 .GL_BLEND };
236
- private List <int []> savedGLStateItemRender = GLUtil .makeGLState (glStateItemRender );
237
-
238
- private static int [] glLightRender = { GL11 .GL_LIGHT0 , GL11 .GL_LIGHT1 , GL11 .GL_COLOR_MATERIAL ,
239
- GL12 .GL_RESCALE_NORMAL };
240
- private List <int []> savedGLLightRender = GLUtil .makeGLState (glLightRender );
241
-
242
- private List <IRenderLabel > preLabelRenderHandlers = new ArrayList <IRenderLabel >();
220
+ private static final float unit = 0.0625f ;
243
221
244
222
@ Override
245
223
public void renderTileEntityAt (TileEntity tile , double x , double y , double z , float partialTickTime ) {
246
224
TileEntityDrawers tileDrawers = (TileEntityDrawers ) tile ;
247
225
if (tileDrawers == null ) return ;
248
-
249
226
if (tileDrawers .isShrouded () || tileDrawers .isSealed ()) return ;
250
227
251
- // Don't bother rendering anything that is (probably) facing away from the player.
252
- EntityClientPlayerMP player = Minecraft .getMinecraft ().thePlayer ;
253
- Vec3 faceVector = dirVectors [tileDrawers .getDirection ()];
254
- float lookProduct = (float ) player .getLook (partialTickTime ).dotProduct (faceVector );
255
-
256
- if (lookProduct > .75f ) return ;
257
-
258
228
float depth ;
259
-
260
229
Block block = tile .getWorldObj ().getBlock (tile .xCoord , tile .yCoord , tile .zCoord );
261
- if (block instanceof BlockDrawers ) depth = ((BlockDrawers ) block ).halfDepth ? .5f : 1 ;
262
- else return ;
230
+ if (block instanceof BlockDrawers ) {
231
+ depth = ((BlockDrawers ) block ).halfDepth ? .5f : 1 ;
232
+ } else {
233
+ return ;
234
+ }
263
235
264
236
GL11 .glPushMatrix ();
265
237
GL11 .glTranslated (x , y , z );
@@ -286,9 +258,11 @@ public void renderTileEntityAt(TileEntity tile, double x, double y, double z, fl
286
258
mc .gameSettings .fancyGraphics = true ;
287
259
288
260
try {
289
- if (StorageDrawers .config .isFancyItemRenderEnabled ())
290
- renderFancyItemSet (tileDrawers , side , depth , partialTickTime );
291
- else renderFastItemSet (tileDrawers , side , depth , partialTickTime );
261
+ if (StorageDrawers .config .isFancyItemRenderEnabled ()) {
262
+ renderFancyItemSet (tileDrawers , side , depth );
263
+ } else {
264
+ renderFastItemSet (tileDrawers , side , depth , partialTickTime );
265
+ }
292
266
} catch (Exception e ) {
293
267
// Swallow exception
294
268
}
@@ -298,8 +272,10 @@ public void renderTileEntityAt(TileEntity tile, double x, double y, double z, fl
298
272
GL11 .glPopMatrix ();
299
273
}
300
274
301
- private void renderFancyItemSet (TileEntityDrawers tile , ForgeDirection side , float depth , float partialTickTime ) {
275
+ private void renderFancyItemSet (TileEntityDrawers tile , ForgeDirection side , float depth ) {
302
276
boolean restoreGLState = false ;
277
+ boolean isLightingEnabled = false ;
278
+ boolean isBlendEnabled = false ;
303
279
int drawerCount = tile .getDrawerCount ();
304
280
305
281
for (int i = 0 ; i < drawerCount ; i ++) {
@@ -311,17 +287,23 @@ private void renderFancyItemSet(TileEntityDrawers tile, ForgeDirection side, flo
311
287
312
288
if (!restoreGLState ) {
313
289
restoreGLState = true ;
314
- GLUtil .saveGLState (savedGLStateRender , glStateRender );
290
+ isLightingEnabled = GL11 .glIsEnabled (GL11 .GL_LIGHTING );
291
+ isBlendEnabled = GL11 .glIsEnabled (GL11 .GL_BLEND );
315
292
}
316
293
317
- renderFancyItem (itemStack , tile , i , side , depth , partialTickTime );
294
+ renderFancyItem (itemStack , tile , i , side , depth );
318
295
}
319
296
320
- if (restoreGLState ) GLUtil .restoreGLState (savedGLStateRender );
297
+ if (restoreGLState ) {
298
+ if (isLightingEnabled ) GL11 .glEnable (GL11 .GL_LIGHTING );
299
+ else GL11 .glDisable (GL11 .GL_LIGHTING );
300
+ if (isBlendEnabled ) GL11 .glEnable (GL11 .GL_BLEND );
301
+ else GL11 .glDisable (GL11 .GL_BLEND );
302
+ }
321
303
}
322
304
323
- private boolean [] renderAsBlock = new boolean [4 ];
324
- private ItemStack [] renderStacks = new ItemStack [4 ];
305
+ private final boolean [] renderAsBlock = new boolean [4 ];
306
+ private final ItemStack [] renderStacks = new ItemStack [4 ];
325
307
326
308
private void renderFastItemSet (TileEntityDrawers tile , ForgeDirection side , float depth , float partialTickTime ) {
327
309
int drawerCount = tile .getDrawerCount ();
@@ -339,22 +321,27 @@ private void renderFastItemSet(TileEntityDrawers tile, ForgeDirection side, floa
339
321
renderStacks [i ] = itemStack ;
340
322
renderAsBlock [i ] = isItemBlockType (itemStack );
341
323
342
- if (renderAsBlock [i ]) restoreBlockState = true ;
343
- else restoreItemState = true ;
324
+ if (renderAsBlock [i ]) {
325
+ restoreBlockState = true ;
326
+ } else {
327
+ restoreItemState = true ;
328
+ }
344
329
}
345
330
346
331
if (restoreItemState || restoreBlockState ) {
347
332
GL11 .glPushAttrib (GL11 .GL_ENABLE_BIT | GL11 .GL_LIGHTING_BIT | GL11 .GL_COLOR_BUFFER_BIT );
348
333
}
349
334
350
335
for (int i = 0 ; i < drawerCount ; i ++) {
351
- if (renderStacks [i ] != null && !renderAsBlock [i ])
336
+ if (renderStacks [i ] != null && !renderAsBlock [i ]) {
352
337
renderFastItem (renderStacks [i ], tile , i , side , depth , partialTickTime );
338
+ }
353
339
}
354
340
355
341
for (int i = 0 ; i < drawerCount ; i ++) {
356
- if (renderStacks [i ] != null && renderAsBlock [i ])
342
+ if (renderStacks [i ] != null && renderAsBlock [i ]) {
357
343
renderFastItem (renderStacks [i ], tile , i , side , depth , partialTickTime );
344
+ }
358
345
}
359
346
360
347
if (restoreItemState || restoreBlockState ) {
@@ -363,7 +350,7 @@ private void renderFastItemSet(TileEntityDrawers tile, ForgeDirection side, floa
363
350
}
364
351
365
352
private void renderFancyItem (ItemStack itemStack , TileEntityDrawers tile , int slot , ForgeDirection side ,
366
- float depth , float partialTickTime ) {
353
+ float depth ) {
367
354
int drawerCount = tile .getDrawerCount ();
368
355
boolean isBlockType = isItemBlockType (itemStack );
369
356
@@ -385,7 +372,7 @@ private void renderFancyItem(ItemStack itemStack, TileEntityDrawers tile, int sl
385
372
386
373
double zDepth = 1 / relScale - itemBlock .getBlockBoundsMaxZ ();
387
374
itemDepth += zDepth * zunit ;
388
- } catch (Exception e ) {} ;
375
+ } catch (Exception e ) {}
389
376
}
390
377
391
378
switch (tile .getDirection ()) {
@@ -500,7 +487,7 @@ private boolean isItemBlockType(ItemStack itemStack) {
500
487
private float getXOffset (int drawerCount , int slot ) {
501
488
switch (drawerCount ) {
502
489
case 1 :
503
- return itemOffset1X [ slot ] ;
490
+ return 0.5f ;
504
491
case 2 :
505
492
return itemOffset2X [slot ];
506
493
case 3 :
@@ -515,7 +502,7 @@ private float getXOffset(int drawerCount, int slot) {
515
502
private float getYOffset (int drawerCount , int slot ) {
516
503
switch (drawerCount ) {
517
504
case 1 :
518
- return itemOffset1Y [ slot ] ;
505
+ return 8.25f ;
519
506
case 2 :
520
507
return itemOffset2Y [slot ];
521
508
case 3 :
0 commit comments