diff --git a/src/main/java/mods/betterfoliage/client/render/impl/RenderBlockBetterGrass.java b/src/main/java/mods/betterfoliage/client/render/impl/RenderBlockBetterGrass.java index fd4f2ae..0204d2a 100644 --- a/src/main/java/mods/betterfoliage/client/render/impl/RenderBlockBetterGrass.java +++ b/src/main/java/mods/betterfoliage/client/render/impl/RenderBlockBetterGrass.java @@ -8,9 +8,9 @@ import mods.betterfoliage.client.render.RenderBlockAOBase; import mods.betterfoliage.common.config.Config; import mods.betterfoliage.common.util.Double3; import net.minecraft.block.Block; +import net.minecraft.block.material.Material; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.Tessellator; -import net.minecraft.init.Blocks; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraftforge.client.event.TextureStitchEvent; @@ -28,6 +28,7 @@ public class RenderBlockBetterGrass extends RenderBlockAOBase implements IRender public IIcon snowGrassGenIcon; protected IIcon grassTopIcon; + boolean isSnowTop; protected boolean connectXP, connectXN, connectZP, connectZN; public boolean isBlockAccepted(IBlockAccess blockAccess, int x, int y, int z, Block block, int original) { @@ -44,7 +45,8 @@ public class RenderBlockBetterGrass extends RenderBlockAOBase implements IRender renderWorldBlockBase(1, world, x, y, z, block, modelId, renderer); if (!Config.grassEnabled) return true; - boolean isSnowTop = blockAccess.getBlock(x, y + 1, z) == Blocks.snow_layer; + Material topMaterial = blockAccess.getBlock(x, y + 1, z).getMaterial(); + isSnowTop = (topMaterial == Material.snow || topMaterial == Material.craftedSnow); boolean isAirTop = blockAccess.isAirBlock(x, y + 1, z); if (isSnowTop || isAirTop) { @@ -75,6 +77,13 @@ public class RenderBlockBetterGrass extends RenderBlockAOBase implements IRender } protected void checkConnectedGrass(int x, int y, int z) { + if (isSnowTop) { + connectXP = false; + connectXN = false; + connectZP = false; + connectZN = false; + return; + } Block blockBelow = blockAccess.getBlock(x, y - 1, z); if (Config.ctxGrassAggressiveEnabled && (Config.grass.matchesID(blockBelow) || Config.dirt.matchesID(blockBelow))) { connectXP = true; diff --git a/src/main/java/mods/betterfoliage/client/render/impl/RenderBlocksBetterGrassSide.java b/src/main/java/mods/betterfoliage/client/render/impl/RenderBlocksBetterGrassSide.java index ff3a1b6..b5a44c1 100644 --- a/src/main/java/mods/betterfoliage/client/render/impl/RenderBlocksBetterGrassSide.java +++ b/src/main/java/mods/betterfoliage/client/render/impl/RenderBlocksBetterGrassSide.java @@ -4,8 +4,9 @@ import mods.betterfoliage.client.render.FakeRenderBlockAOBase; import mods.betterfoliage.client.render.IRenderBlockDecorator; import mods.betterfoliage.common.config.Config; import mods.betterfoliage.common.util.OffsetBlockAccess; -import mods.betterfoliage.common.util.Utils; +import mods.betterfoliage.common.util.RenderUtils; import net.minecraft.block.Block; +import net.minecraft.block.material.Material; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.world.IBlockAccess; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; @@ -21,7 +22,10 @@ public class RenderBlocksBetterGrassSide extends FakeRenderBlockAOBase implement @Override public boolean isBlockAccepted(IBlockAccess blockAccess, int x, int y, int z, Block block, int original) { - return Config.ctxGrassAggressiveEnabled && + Material top2Material = blockAccess.getBlock(x, y + 2, z).getMaterial(); + return Config.ctxGrassAggressiveEnabled && + top2Material != Material.snow && + top2Material != Material.craftedSnow && Config.dirt.matchesID(block) && Config.grass.matchesID(blockAccess.getBlock(x, y + 1, z)); } @@ -34,7 +38,7 @@ public class RenderBlocksBetterGrassSide extends FakeRenderBlockAOBase implement Block renderBlock = renderer.blockAccess.getBlock(x, y, z); boolean result; - ISimpleBlockRenderingHandler handler = Utils.getRenderingHandler(renderBlock.getRenderType()); + ISimpleBlockRenderingHandler handler = RenderUtils.getRenderingHandler(renderBlock.getRenderType()); if (handler != null) { result = handler.renderWorldBlock(renderer.blockAccess, x, y, z, renderBlock, renderBlock.getRenderType(), renderer); } else {