mirror of
https://github.com/Eaglercraft-Archive/Eaglercraftx-1.8.8-src.git
synced 2025-06-28 02:48:14 -05:00
Update #48 - Added some features from OptiFine
This commit is contained in:
91
sources/main/java/net/optifine/BetterSnow.java
Normal file
91
sources/main/java/net/optifine/BetterSnow.java
Normal file
@ -0,0 +1,91 @@
|
||||
package net.optifine;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockBush;
|
||||
import net.minecraft.block.BlockDoublePlant;
|
||||
import net.minecraft.block.BlockFence;
|
||||
import net.minecraft.block.BlockFenceGate;
|
||||
import net.minecraft.block.BlockFlower;
|
||||
import net.minecraft.block.BlockFlowerPot;
|
||||
import net.minecraft.block.BlockLever;
|
||||
import net.minecraft.block.BlockMushroom;
|
||||
import net.minecraft.block.BlockPane;
|
||||
import net.minecraft.block.BlockRedstoneTorch;
|
||||
import net.minecraft.block.BlockReed;
|
||||
import net.minecraft.block.BlockSapling;
|
||||
import net.minecraft.block.BlockSnow;
|
||||
import net.minecraft.block.BlockTallGrass;
|
||||
import net.minecraft.block.BlockTorch;
|
||||
import net.minecraft.block.BlockWall;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.resources.model.IBakedModel;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.util.BlockPos;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
|
||||
public class BetterSnow {
|
||||
private static IBakedModel modelSnowLayer = null;
|
||||
|
||||
public static void update() {
|
||||
modelSnowLayer = Minecraft.getMinecraft().getBlockRendererDispatcher().getBlockModelShapes()
|
||||
.getModelForState(Blocks.snow_layer.getDefaultState());
|
||||
}
|
||||
|
||||
public static IBakedModel getModelSnowLayer() {
|
||||
return modelSnowLayer;
|
||||
}
|
||||
|
||||
public static IBlockState getStateSnowLayer() {
|
||||
return Blocks.snow_layer.getDefaultState();
|
||||
}
|
||||
|
||||
public static boolean shouldRender(IBlockAccess blockAccess, IBlockState blockState, BlockPos blockPos) {
|
||||
Block block = blockState.getBlock();
|
||||
return !checkBlock(block, blockState) ? false : hasSnowNeighbours(blockAccess, blockPos);
|
||||
}
|
||||
|
||||
private static boolean hasSnowNeighbours(IBlockAccess blockAccess, BlockPos pos) {
|
||||
Block block = Blocks.snow_layer;
|
||||
return blockAccess.getBlockState(pos.north()).getBlock() != block
|
||||
&& blockAccess.getBlockState(pos.south()).getBlock() != block
|
||||
&& blockAccess.getBlockState(pos.west()).getBlock() != block
|
||||
&& blockAccess.getBlockState(pos.east()).getBlock() != block ? false
|
||||
: blockAccess.getBlockState(pos.down()).getBlock().isOpaqueCube();
|
||||
}
|
||||
|
||||
private static boolean checkBlock(Block block, IBlockState blockState) {
|
||||
if (block.isFullCube()) {
|
||||
return false;
|
||||
} else if (block.isOpaqueCube()) {
|
||||
return false;
|
||||
} else if (block instanceof BlockSnow) {
|
||||
return false;
|
||||
} else if (!(block instanceof BlockBush) || !(block instanceof BlockDoublePlant)
|
||||
&& !(block instanceof BlockFlower) && !(block instanceof BlockMushroom)
|
||||
&& !(block instanceof BlockSapling) && !(block instanceof BlockTallGrass)) {
|
||||
if (!(block instanceof BlockFence) && !(block instanceof BlockFenceGate)
|
||||
&& !(block instanceof BlockFlowerPot) && !(block instanceof BlockPane)
|
||||
&& !(block instanceof BlockReed) && !(block instanceof BlockWall)) {
|
||||
if (block instanceof BlockRedstoneTorch && blockState.getValue(BlockTorch.FACING) == EnumFacing.UP) {
|
||||
return true;
|
||||
} else {
|
||||
if (block instanceof BlockLever) {
|
||||
Object object = blockState.getValue(BlockLever.FACING);
|
||||
|
||||
if (object == BlockLever.EnumOrientation.UP_X || object == BlockLever.EnumOrientation.UP_Z) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user