From 913a92a01007d7c894776e313f221db7cd56fdeb Mon Sep 17 00:00:00 2001 From: Mike Primm Date: Tue, 19 Jul 2011 17:45:05 -0500 Subject: [PATCH] Handle snow lighting special case --- .../org/dynmap/hdmap/IsoHDPerspective.java | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/dynmap/hdmap/IsoHDPerspective.java b/src/main/java/org/dynmap/hdmap/IsoHDPerspective.java index 4bcba45c..75da33ee 100644 --- a/src/main/java/org/dynmap/hdmap/IsoHDPerspective.java +++ b/src/main/java/org/dynmap/hdmap/IsoHDPerspective.java @@ -102,21 +102,28 @@ public class IsoHDPerspective implements HDPerspective { */ public final int getSkyLightLevel() { int ll; - BlockStep ls = mapiter.unstepPosition(); + BlockStep ls; /* Some blocks are light blocking, but not fully blocking - this sucks */ switch(mapiter.getBlockTypeID()) { case 53: /* Wood stairs */ case 44: /* Slabs */ case 67: /* Cobblestone stairs */ + ls = mapiter.unstepPosition(); mapiter.stepPosition(BlockStep.Y_PLUS); /* Look above */ ll = mapiter.getBlockSkyLight(); mapiter.stepPosition(BlockStep.Y_MINUS); + mapiter.stepPosition(ls); break; + case 78: /* Snow */ + ll = mapiter.getBlockSkyLight(); + break; default: + ls = mapiter.unstepPosition(); ll = mapiter.getBlockSkyLight(); + mapiter.stepPosition(ls); break; } - mapiter.stepPosition(ls); + return ll; } /** @@ -124,21 +131,27 @@ public class IsoHDPerspective implements HDPerspective { */ public final int getEmittedLightLevel() { int ll; - BlockStep ls = mapiter.unstepPosition(); + BlockStep ls; /* Some blocks are light blocking, but not fully blocking - this sucks */ switch(mapiter.getBlockTypeID()) { case 53: /* Wood stairs */ case 44: /* Slabs */ case 67: /* Cobblestone stairs */ + ls = mapiter.unstepPosition(); mapiter.stepPosition(BlockStep.Y_PLUS); /* Look above */ ll = mapiter.getBlockEmittedLight(); mapiter.stepPosition(BlockStep.Y_MINUS); + mapiter.stepPosition(ls); break; + case 78: /* Snow */ + ll = mapiter.getBlockEmittedLight(); + break; default: + ls = mapiter.unstepPosition(); ll = mapiter.getBlockEmittedLight(); + mapiter.stepPosition(ls); break; } - mapiter.stepPosition(ls); return ll; } /**