don't do connected grass textures on snow-covered grass
This commit is contained in:
@@ -8,9 +8,9 @@ import mods.betterfoliage.client.render.RenderBlockAOBase;
|
|||||||
import mods.betterfoliage.common.config.Config;
|
import mods.betterfoliage.common.config.Config;
|
||||||
import mods.betterfoliage.common.util.Double3;
|
import mods.betterfoliage.common.util.Double3;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.client.renderer.RenderBlocks;
|
import net.minecraft.client.renderer.RenderBlocks;
|
||||||
import net.minecraft.client.renderer.Tessellator;
|
import net.minecraft.client.renderer.Tessellator;
|
||||||
import net.minecraft.init.Blocks;
|
|
||||||
import net.minecraft.util.IIcon;
|
import net.minecraft.util.IIcon;
|
||||||
import net.minecraft.world.IBlockAccess;
|
import net.minecraft.world.IBlockAccess;
|
||||||
import net.minecraftforge.client.event.TextureStitchEvent;
|
import net.minecraftforge.client.event.TextureStitchEvent;
|
||||||
@@ -28,6 +28,7 @@ public class RenderBlockBetterGrass extends RenderBlockAOBase implements IRender
|
|||||||
public IIcon snowGrassGenIcon;
|
public IIcon snowGrassGenIcon;
|
||||||
|
|
||||||
protected IIcon grassTopIcon;
|
protected IIcon grassTopIcon;
|
||||||
|
boolean isSnowTop;
|
||||||
protected boolean connectXP, connectXN, connectZP, connectZN;
|
protected boolean connectXP, connectXN, connectZP, connectZN;
|
||||||
|
|
||||||
public boolean isBlockAccepted(IBlockAccess blockAccess, int x, int y, int z, Block block, int original) {
|
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);
|
renderWorldBlockBase(1, world, x, y, z, block, modelId, renderer);
|
||||||
if (!Config.grassEnabled) return true;
|
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);
|
boolean isAirTop = blockAccess.isAirBlock(x, y + 1, z);
|
||||||
|
|
||||||
if (isSnowTop || isAirTop) {
|
if (isSnowTop || isAirTop) {
|
||||||
@@ -75,6 +77,13 @@ public class RenderBlockBetterGrass extends RenderBlockAOBase implements IRender
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void checkConnectedGrass(int x, int y, int z) {
|
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);
|
Block blockBelow = blockAccess.getBlock(x, y - 1, z);
|
||||||
if (Config.ctxGrassAggressiveEnabled && (Config.grass.matchesID(blockBelow) || Config.dirt.matchesID(blockBelow))) {
|
if (Config.ctxGrassAggressiveEnabled && (Config.grass.matchesID(blockBelow) || Config.dirt.matchesID(blockBelow))) {
|
||||||
connectXP = true;
|
connectXP = true;
|
||||||
|
|||||||
@@ -4,8 +4,9 @@ import mods.betterfoliage.client.render.FakeRenderBlockAOBase;
|
|||||||
import mods.betterfoliage.client.render.IRenderBlockDecorator;
|
import mods.betterfoliage.client.render.IRenderBlockDecorator;
|
||||||
import mods.betterfoliage.common.config.Config;
|
import mods.betterfoliage.common.config.Config;
|
||||||
import mods.betterfoliage.common.util.OffsetBlockAccess;
|
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.Block;
|
||||||
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.client.renderer.RenderBlocks;
|
import net.minecraft.client.renderer.RenderBlocks;
|
||||||
import net.minecraft.world.IBlockAccess;
|
import net.minecraft.world.IBlockAccess;
|
||||||
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
|
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
|
||||||
@@ -21,7 +22,10 @@ public class RenderBlocksBetterGrassSide extends FakeRenderBlockAOBase implement
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isBlockAccepted(IBlockAccess blockAccess, int x, int y, int z, Block block, int original) {
|
public boolean isBlockAccepted(IBlockAccess blockAccess, int x, int y, int z, Block block, int original) {
|
||||||
|
Material top2Material = blockAccess.getBlock(x, y + 2, z).getMaterial();
|
||||||
return Config.ctxGrassAggressiveEnabled &&
|
return Config.ctxGrassAggressiveEnabled &&
|
||||||
|
top2Material != Material.snow &&
|
||||||
|
top2Material != Material.craftedSnow &&
|
||||||
Config.dirt.matchesID(block) &&
|
Config.dirt.matchesID(block) &&
|
||||||
Config.grass.matchesID(blockAccess.getBlock(x, y + 1, z));
|
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);
|
Block renderBlock = renderer.blockAccess.getBlock(x, y, z);
|
||||||
boolean result;
|
boolean result;
|
||||||
ISimpleBlockRenderingHandler handler = Utils.getRenderingHandler(renderBlock.getRenderType());
|
ISimpleBlockRenderingHandler handler = RenderUtils.getRenderingHandler(renderBlock.getRenderType());
|
||||||
if (handler != null) {
|
if (handler != null) {
|
||||||
result = handler.renderWorldBlock(renderer.blockAccess, x, y, z, renderBlock, renderBlock.getRenderType(), renderer);
|
result = handler.renderWorldBlock(renderer.blockAccess, x, y, z, renderBlock, renderBlock.getRenderType(), renderer);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user