package cubex2.cs4.plugins.vanilla.block; import cubex2.cs4.plugins.vanilla.BlockDrop; import cubex2.cs4.plugins.vanilla.ContentBlockSnow; import cubex2.cs4.util.ItemHelper; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.item.ItemStack; import net.minecraft.util.NonNullList; import net.minecraft.util.math.BlockPos; import net.minecraft.world.EnumSkyBlock; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import java.util.Optional; import java.util.Random; public class BlockSnow extends net.minecraft.block.BlockSnow implements CSBlock<ContentBlockSnow> { private final ContentBlockSnow content; public BlockSnow(Material material, ContentBlockSnow content) { this.content = content; } @Override public void getDrops(NonNullList<ItemStack> drops, IBlockAccess world, BlockPos pos, IBlockState state, int fortune) { if (content.snowball != null) { ItemStack stack = content.snowball.getItemStack().copy(); stack.setCount((state.getValue(LAYERS) + 1) * stack.getCount()); drops.add(stack); } Optional<BlockDrop[]> blockDrops = getContent().drop.get(getSubtype(state)); if (blockDrops.isPresent()) { drops.addAll(ItemHelper.getDroppedStacks(blockDrops.get(), fortune)); } } @Override public void updateTick(World worldIn, BlockPos pos, IBlockState state, Random rand) { if (worldIn.getLightFor(EnumSkyBlock.BLOCK, pos) > content.maxLight) { worldIn.setBlockToAir(pos); } } @Override public int getSubtype(IBlockState state) { return 0; } @Override public ContentBlockSnow getContent() { return content; } }